/[eiffelstudio]/branches/eth/eve/Src/Eiffel/API/evaluated_type/like_current.e
ViewVC logotype

Diff of /branches/eth/eve/Src/Eiffel/API/evaluated_type/like_current.e

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 92722 by jasonw, Fri May 3 04:29:22 2013 UTC revision 92723 by jasonw, Fri Jun 21 07:47:04 2013 UTC
# Line 12  inherit Line 12  inherit
12          LIKE_TYPE_A          LIKE_TYPE_A
13                  redefine                  redefine
14                          actual_type, deep_actual_type, context_free_type,                          actual_type, deep_actual_type, context_free_type,
15                          base_class, associated_class_type, conform_to, conformance_type, convert_to,                          base_class, associated_class_type, internal_conform_to, conformance_type, convert_to,
16                          generics, has_associated_class, has_associated_class_type, formal_instantiated_in,                          generics, has_associated_class, has_associated_class_type, formal_instantiated_in,
17                          instantiated_in, duplicate, set_separate_mark,                          instantiated_in, duplicate, set_separate_mark,
18                          is_basic, is_expanded, is_external, is_like_current, is_none, is_reference, is_ephemeral,                          is_basic, is_expanded, is_external, is_like_current, is_none, is_reference, is_ephemeral,
# Line 25  inherit Line 25  inherit
25                          maximum_interval_value, minimum_interval_value, is_optimized_as_frozen,                          maximum_interval_value, minimum_interval_value, is_optimized_as_frozen,
26                          is_generated_as_single_type, heaviest, instantiation_in, adapted_in,                          is_generated_as_single_type, heaviest, instantiation_in, adapted_in,
27                          hash_code, internal_generic_derivation, internal_same_generic_derivation_as,                          hash_code, internal_generic_derivation, internal_same_generic_derivation_as,
28                          is_class_valid, skeleton_adapted_in, good_generics, has_like_current                          is_class_valid, skeleton_adapted_in, good_generics, has_like_current,
29                            set_frozen_mark
30                  end                  end
31    
32  feature -- Visitor  feature -- Visitor
# Line 374  feature -- Generic conformance Line 375  feature -- Generic conformance
375    
376  feature {TYPE_A} -- Helpers  feature {TYPE_A} -- Helpers
377    
378            internal_conform_to (a_context_class: CLASS_C; other: TYPE_A; a_in_generic: BOOLEAN): BOOLEAN
379                            -- <Precursor>
380                    do
381                            if
382                                    attached {LIKE_CURRENT} other as a and then
383                                    (a_context_class.lace_class.is_void_safe_conformance implies is_attachable_to (a)) and then
384                                    is_processor_attachable_to (a) and then not a.has_frozen_mark
385                            then
386                                            -- Other is like Current that is compatible in terms of attachment status, separate status
387                                            -- and variance status.
388                                            --| Note that if other is frozen then we have to use the normal conformance rules.
389                                    Result := True
390                            else
391                                            -- Other is not `like Current' we apply normal rules of conformance.
392                                    Result := conformance_type.internal_conform_to (a_context_class, other.conformance_type, a_in_generic)
393                            end
394                    end
395    
396          internal_is_valid_for_class (a_class: CLASS_C): BOOLEAN          internal_is_valid_for_class (a_class: CLASS_C): BOOLEAN
397                          -- Is current type valid?                          -- Is current type valid?
398                  do                  do
# Line 419  feature {COMPILER_EXPORTER} -- Modificat Line 438  feature {COMPILER_EXPORTER} -- Modificat
438                          actual_type := Current                          actual_type := Current
439                  end                  end
440    
441            set_frozen_mark
442                            -- <Precursor>
443                    do
444                            Precursor
445                            conformance_type := conformance_type.to_other_variant (Current)
446                    end
447    
448          set_attached_mark          set_attached_mark
449                          -- Mark type declaration as having an explicit attached mark.                          -- Mark type declaration as having an explicit attached mark.
450                  do                  do
# Line 512  feature {COMPILER_EXPORTER} -- Primitive Line 538  feature {COMPILER_EXPORTER} -- Primitive
538                                  -- or                                  -- or
539                                  -- i16 := (0x00FF & i8).to_integer_16                                  -- i16 := (0x00FF & i8).to_integer_16
540                          Result := type.intrinsic_type                          Result := type.intrinsic_type
541                            Result := Result.to_other_variant (Current)
542                          if is_attached then                          if is_attached then
543                                          -- Adapt attachment marks as required.                                          -- Adapt attachment marks as required.
544                                  Result := Result.to_other_attachment (Current)                                  Result := Result.to_other_attachment (Current)
# Line 576  feature {COMPILER_EXPORTER} -- Primitive Line 603  feature {COMPILER_EXPORTER} -- Primitive
603                                  Result := l_like                                  Result := l_like
604                          end                          end
605                          Result := Result.to_other_attachment (Current)                          Result := Result.to_other_attachment (Current)
606                            Result := Result.to_other_variant (Current)
607                                  -- Promote separateness status if present.                                  -- Promote separateness status if present.
608                          if is_separate then                          if is_separate then
609                                  Result := Result.to_other_separateness (Current)                                  Result := Result.to_other_separateness (Current)
# Line 592  feature {COMPILER_EXPORTER} -- Primitive Line 620  feature {COMPILER_EXPORTER} -- Primitive
620                                  if is_separate then                                  if is_separate then
621                                          Result := Result.to_other_separateness (Current)                                          Result := Result.to_other_separateness (Current)
622                                  end                                  end
623                                    Result := Result.to_other_variant (Current)
624                          else                          else
625                                  Result := Current                                  Result := Current
626                          end                          end
# Line 603  feature {COMPILER_EXPORTER} -- Primitive Line 632  feature {COMPILER_EXPORTER} -- Primitive
632                          create Result                          create Result
633                  end                  end
634    
         conform_to (a_context_class: CLASS_C; other: INHERITANCE_TYPE_A): BOOLEAN  
                         -- Does `Current' conform to `other'?  
                 do  
                         Result :=  
                                 (attached {LIKE_CURRENT} other as a and then  
                                         (a_context_class.lace_class.is_void_safe_conformance implies is_attachable_to (a)) and then  
                                         is_processor_attachable_to (a)) or else  
                                 conformance_type.conform_to (a_context_class, other.conformance_type)  
                 end  
   
635          convert_to (a_context_class: CLASS_C; a_target_type: TYPE_A): BOOLEAN          convert_to (a_context_class: CLASS_C; a_target_type: TYPE_A): BOOLEAN
636                          -- Does current convert to `a_target_type' in `a_context_class'?                          -- Does current convert to `a_target_type' in `a_context_class'?
637                          -- Update `last_conversion_info' of AST_CONTEXT.                          -- Update `last_conversion_info' of AST_CONTEXT.

Legend:
Removed from v.92722  
changed lines
  Added in v.92723

  ViewVC Help
Powered by ViewVC 1.1.23