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

Log of /branches/eth/eve/Src/Eiffel/API/evaluated_type/cl_type_a.e

Parent Directory Parent Directory | Revision Log Revision Log


Links to HEAD: (view) (annotate)
Sticky Revision:

Revision 92723 - (view) (annotate) - [select for diffs]
Modified Fri Jun 21 07:47:04 2013 UTC (6 years, 5 months ago) by jasonw
File length: 32197 byte(s)
Diff to previous 92684
<<Merged from trunk#92722.>>

Revision 92684 - (view) (annotate) - [select for diffs]
Modified Fri Jun 7 15:28:53 2013 UTC (6 years, 6 months ago) by jasonw
File length: 31401 byte(s)
Diff to previous 92516
<<Merged from trunk#92682.>>

Revision 92516 - (view) (annotate) - [select for diffs]
Modified Fri May 3 04:29:22 2013 UTC (6 years, 7 months ago) by jasonw
File length: 31893 byte(s)
Diff to previous 92499
<<Merged from trunk#92515.>>

Revision 92499 - (view) (annotate) - [select for diffs]
Modified Fri Apr 26 23:06:21 2013 UTC (6 years, 7 months ago) by jasonw
File length: 31707 byte(s)
Diff to previous 92434
<<Merged from trunk#92492.>>

Revision 92434 - (view) (annotate) - [select for diffs]
Modified Fri Apr 12 10:41:30 2013 UTC (6 years, 8 months ago) by jasonw
File length: 31702 byte(s)
Diff to previous 89347
<<Merged from trunk#92433.>>

Revision 89347 - (view) (annotate) - [select for diffs]
Modified Fri Aug 10 15:09:25 2012 UTC (7 years, 4 months ago) by jasonw
File length: 31682 byte(s)
Diff to previous 86863
<<Merged from trunk#89346.>>

Revision 86863 - (view) (annotate) - [select for diffs]
Modified Fri Jul 15 12:15:19 2011 UTC (8 years, 5 months ago) by jasonw
File length: 32090 byte(s)
Diff to previous 86378
<<Merged from trunk#86862.>>

Revision 86378 - (view) (annotate) - [select for diffs]
Modified Fri May 6 11:10:51 2011 UTC (8 years, 7 months ago) by jasonw
File length: 32006 byte(s)
Diff to previous 85792
<<Merged from trunk#86377.>>

Revision 85792 - (view) (annotate) - [select for diffs]
Modified Fri Mar 4 13:51:36 2011 UTC (8 years, 9 months ago) by jasonw
File length: 30899 byte(s)
Diff to previous 85584
<<Merged from trunk#85790.>>

Revision 85584 - (view) (annotate) - [select for diffs]
Modified Fri Feb 11 21:23:26 2011 UTC (8 years, 10 months ago) by jasonw
File length: 30210 byte(s)
Diff to previous 84470
<<Merged from trunk#85576.>>

Revision 84470 - (view) (annotate) - [select for diffs]
Modified Fri Oct 1 14:01:07 2010 UTC (9 years, 2 months ago) by jasonw
File length: 29353 byte(s)
Diff to previous 84395
<<Merged from trunk#84468.>>


Revision 84395 - (view) (annotate) - [select for diffs]
Modified Mon Sep 13 13:01:25 2010 UTC (9 years, 3 months ago) by jasonw
File length: 30877 byte(s)
Diff to previous 84363
<<Merged from trunk#84391.>>


Revision 84363 - (view) (annotate) - [select for diffs]
Modified Fri Sep 3 09:37:49 2010 UTC (9 years, 3 months ago) by jasonw
File length: 30920 byte(s)
Diff to previous 84268
<<Merged from trunk#84362.>>

Revision 84268 - (view) (annotate) - [select for diffs]
Modified Tue Aug 24 14:02:11 2010 UTC (9 years, 3 months ago) by jasonw
File length: 30908 byte(s)
Diff to previous 84126
<<Merged from trunk#84267.>>

Revision 84126 - (view) (annotate) - [select for diffs]
Modified Fri Aug 6 10:02:37 2010 UTC (9 years, 4 months ago) by jasonw
File length: 32178 byte(s)
Diff to previous 84108
<<Merged from trunk#84124.>>

Revision 84108 - (view) (annotate) - [select for diffs]
Modified Wed Aug 4 09:40:49 2010 UTC (9 years, 4 months ago) by wests
File length: 32152 byte(s)
Diff to previous 83928
This commit merges SCOOP from the old EVE branch.

It also contains the scoopli and scoop2scoopli libraries, as well as 
scoop examples.



Revision 83928 - (view) (annotate) - [select for diffs]
Modified Fri Jul 16 15:21:01 2010 UTC (9 years, 5 months ago) by mpei
File length: 30480 byte(s)
Diff to previous 83441
<<Merged from trunk#83927>>

Revision 83441 - (view) (annotate) - [select for diffs]
Modified Sat Jun 5 13:52:53 2010 UTC (9 years, 6 months ago) by jasonw
File length: 30221 byte(s)
Diff to previous 83331
Renamed branch eve3 to eve. The eve branch serves as the new branch for the EVE project.

Revision 83331 - (view) (annotate) - [select for diffs]
Modified Wed May 26 18:49:35 2010 UTC (9 years, 6 months ago) by jasonw
Original Path: branches/eth/eve3/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 30221 byte(s)
Diff to previous 82731
<<Breanched from trunk@83330>> Created a branch to upgrade Eiffel Transform library to trunk.

Revision 82731 - (view) (annotate) - [select for diffs]
Modified Wed Mar 31 20:43:06 2010 UTC (9 years, 8 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 30221 byte(s)
Diff to previous 82578
Changed the understanding of `sk_type' in the compiler to be a NATURAL_32 as it is in the runtime. Only a few cases of a conversion from integer to natural or from natural to integer have been added with comments stating that they are safe.


Revision 82578 - (view) (annotate) - [select for diffs]
Modified Mon Mar 15 20:19:03 2010 UTC (9 years, 9 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 30190 byte(s)
Diff to previous 80052
Added notion of ephemeral class in the type system. However this is not yet enabled as we haven't decided how to make a class ephemeral (keyword or certain properties of a class).


Revision 80052 - (view) (annotate) - [select for diffs]
Modified Fri Jul 31 23:45:30 2009 UTC (10 years, 4 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 30080 byte(s)
Diff to previous 79984
Removed non-used local.


Revision 79984 - (view) (annotate) - [select for diffs]
Modified Tue Jul 28 18:35:18 2009 UTC (10 years, 4 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 30116 byte(s)
Diff to previous 79882
At rev#79882 when fixing eweasel test#final083 we actually removed quite a lot of possible inlining
  because `formal_at_position' from CLASS_C gives you only one routine ID, but if a formal generic
  parameter is the result of inheriting from TO_SPECIAL and CONTAINER (such as ARRAY) and that it
  returns the TYPE_FEATURE_I for TO_SPECIAL rather than CONTAINER then it simply bypass inlining.
  We are now using `formal_rout_id_set_at_position' whenever we want all the routine IDs for a formal
  generic parameter.


Revision 79882 - (view) (annotate) - [select for diffs]
Modified Wed Jul 22 17:09:09 2009 UTC (10 years, 4 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 30116 byte(s)
Diff to previous 78938
Fixed eweasel test#final083 by preventing inlining when code is coming from a descendant
  class that adds new generic for which we cannot know in advance which generic derivations
  we should take (this was done through rewritting `{CL_TYPE_A}.find_descendant_type'.
  Removed the neeed for normalized because when we have formals we have to be
  more strict on what we can inline.


Revision 78938 - (view) (annotate) - [select for diffs]
Modified Fri May 29 10:04:37 2009 UTC (10 years, 6 months ago) by jfiat
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 29806 byte(s)
Diff to previous 78267
Cleaned object test local expression.

Revision 78267 - (view) (annotate) - [select for diffs]
Modified Thu Apr 16 07:47:49 2009 UTC (10 years, 8 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 29815 byte(s)
Diff to previous 77740
Unified setting of attached status for types that are known to be attached.
Supported intermediate levels of void-safety.


Revision 77740 - (view) (annotate) - [select for diffs]
Modified Mon Mar 16 14:57:19 2009 UTC (10 years, 9 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 29803 byte(s)
Diff to previous 77703
Used context class settings when checking conformance to discard attachment status for non-void-safe classes (see test#attach058).

Revision 77703 - (view) (annotate) - [select for diffs]
Modified Wed Mar 11 23:59:15 2009 UTC (10 years, 9 months ago) by paulb
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 29754 byte(s)
Diff to previous 77520
Replaced documentation generation of !/? marks with attached/detachable.


Revision 77520 - (view) (annotate) - [select for diffs]
Modified Wed Mar 4 01:50:25 2009 UTC (10 years, 9 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 29691 byte(s)
Diff to previous 77129
Updated to new syntax of object test and attached/detachable types using the `syntax_updater' tool.


Revision 77129 - (view) (annotate) - [select for diffs]
Modified Thu Feb 12 00:42:01 2009 UTC (10 years, 10 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 29672 byte(s)
Diff to previous 76776
Fixed eweasel test#attach051 where attachment marks where not taken into account when assigning to
  attached SYSTEM_OBJECT even if the source is detachable.


Revision 76776 - (view) (annotate) - [select for diffs]
Modified Tue Jan 20 08:42:41 2009 UTC (10 years, 10 months ago) by king
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 29559 byte(s)
Diff to previous 76771
Fixed previous commit where an erroneous space was being added if no mark was set.

Revision 76771 - (view) (annotate) - [select for diffs]
Modified Tue Jan 20 05:05:28 2009 UTC (10 years, 10 months ago) by king
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 29490 byte(s)
Diff to previous 76432
Improved degree 4 implementation to alias feature i objects should no change be required, most reusable objects are now cached for each class pass resulting in far less memory, gc and disk space being used, aliasing can be further improved by not storing export information in the feature i objects themselves as well as redoing the somewhat broken is_origin implementation

Revision 76432 - (view) (annotate) - [select for diffs]
Modified Mon Dec 29 23:41:59 2008 UTC (10 years, 11 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 29465 byte(s)
Diff to previous 76126
Removal of `is' keyword.
Replacement of `is' by `=' for constant definitions.
Replaced `indexing' by `note'.


Revision 76126 - (view) (annotate) - [select for diffs]
Modified Tue Dec 9 23:25:11 2008 UTC (11 years ago) by king
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 29666 byte(s)
Diff to previous 76125
Added duplicate_for_instantiation which twins a class type a but not its generics list types, updated all instantiation calls to use it, also removed duplicate from CL_TYPE_A parent_type to match optimization previously done for GEN_TYPE_A

Revision 76125 - (view) (annotate) - [select for diffs]
Modified Tue Dec 9 20:24:44 2008 UTC (11 years ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 29552 byte(s)
Diff to previous 75567
Added a context class to `conform_to'. This prevents having to use `System.current_class' in the case
  of formals and thus making the code more robust.


Revision 75567 - (view) (annotate) - [select for diffs]
Modified Thu Nov 13 20:39:48 2008 UTC (11 years, 1 month ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 29161 byte(s)
Diff to previous 75259
Added support for attachment marks at runtime in actual generic parameters:
- Updated runtime to understand annotation marks in our type arrays and all routines for 
  creating types and handling conformance.
- To properly handle conformance, a new entry in the type arrays generated in eparents.c have been
  added, it stores whether or not a type is attached. That is to say A inherits B, and when we check if
  !A conforms to !B, we modify the type array so that it has the attachment mark.
- Increased storable version number as old systems cannot understand the marks.
- Fixed catcall detection at runtime which was not properly handling attached arguments (as before
  we only check catcalls for non-void argument, but it the argument is attached, then we need to
  check that it is indeed not Void.
- Changed the Eiffel code generation so that even if we asked to create !A, we actually create A
  (i.e. we remove the annotation as they do not make sense for the type of an object).
- Made sure that a generic descriptor is created for attributes whose type is an attached non-generic type
  as well as a non-explicit type (e.g. formal/anchors).


Revision 75259 - (view) (annotate) - [select for diffs]
Modified Thu Oct 23 18:28:25 2008 UTC (11 years, 1 month ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 29145 byte(s)
Diff to previous 75210
Renamed `as_attached' to `as_attached_type' to avoid conflict with a
feature from ANY.
Transformed `to_current_attachment' to `to_other_attachment' as the latter
allows returning an anchored type that permits to avoid reverse assignment.
Implemented features that transform a type to the one with the given
attachment status in TYPE_SET_A which is required to perform conformance
tests for formal generics correctly (see test#attach025).
Taken attachment status of the formal generic when performing conformance
tests (this fixes test#attach025).
Ensured the scope for non-void Result in a postcondition is activated only
when its type is attached as otherwise it is incorrectly treated as
attached regardless of the actual type in void-safe mode. However the
Result is marked as set in the postcondition if it has to be initialized in
the body.
Supported a check for VEVI errors in inherited assertions.
Provided a check for self-initializing attribute bodies.
Avoided a false VEVI error for self-initializing attribute if it is not set
explicitly at the end of a creation procedure.


Revision 75210 - (view) (annotate) - [select for diffs]
Modified Tue Oct 21 16:41:41 2008 UTC (11 years, 1 month ago) by king
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 29140 byte(s)
Diff to previous 75070
Removed conformity checks in parent_type to work with non-conforming parents

Revision 75070 - (view) (annotate) - [select for diffs]
Modified Sun Oct 12 05:45:16 2008 UTC (11 years, 2 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 29362 byte(s)
Diff to previous 74912
Removed useless redefinition of instantiation_in in CL_TYPE_A.
To properly create manifest tuples, arrays and agents, we are now keeping the anchors but only when
  it is an anchor to the current class (ideally we should keep the anchor in all cases, but our
  code generation does not support that, see eweasel test#agent006 for this failure). This fixes
  eweasel tests test#tuple011, test#tuple014.
Due to recent changes in AST_FEATURE_CHECKER_GENERATOR were we keep the anchors most of the time
  we had to fix {CL_TYPE_A}.conform_to so that conformance on TYPED_POINTER is not using `same_as'
  but `valid_generic' which will resolve the anchors. This fixed eweasel test#term132.
Fixed eweasel test#term159 where if you have a conversion as closed argument of an agent it would
 crash the compiler in .NET mode and generate incorrect code in classic.


Revision 74912 - (view) (annotate) - [select for diffs]
Modified Thu Oct 2 21:34:50 2008 UTC (11 years, 2 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 29739 byte(s)
Diff to previous 73584
Fixed full class checking error while checking SPECIAL_CLASS_TYPE and NATIVE_ARRAY_CLASS_TYPE
  because type of `generic_derivation' is not `like Current' and they redefine `type' originally
  of type CL_TYPE_A into GEN_TYPE_A and NATIVE_ARRAY_TYPE_A (thus the detected full class checking
  error).


Revision 73584 - (view) (annotate) - [select for diffs]
Modified Fri May 16 19:42:42 2008 UTC (11 years, 7 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 29736 byte(s)
Diff to previous 73396
Fixed conformance test for types involving attachment marks so the attachment status is taken into account when computing parent types used to check conformance (this fixes test#attach010).

Revision 73396 - (view) (annotate) - [select for diffs]
Modified Wed May 7 20:52:22 2008 UTC (11 years, 7 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 29255 byte(s)
Diff to previous 73392
Removed non-used local.


Revision 73392 - (view) (annotate) - [select for diffs]
Modified Wed May 7 17:57:03 2008 UTC (11 years, 7 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 29260 byte(s)
Diff to previous 73356
Fixed eweasel test#final056 and bug#14153 because `find_descendent_type' was actually not yielding a valid
  type when the descendant is removing formal generic parameter. Also regardless of where the feature
  is being written to, we still call `find_descendent_type' because if the current context is
  `A [G#2]' the inline context should really be `A [G#1]'.


Revision 73356 - (view) (annotate) - [select for diffs]
Modified Tue May 6 18:48:38 2008 UTC (11 years, 7 months ago) by king
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 28890 byte(s)
Diff to previous 73124
Removed unnecessary attribute access in make

Revision 73124 - (view) (annotate) - [select for diffs]
Modified Sun Apr 20 20:58:53 2008 UTC (11 years, 7 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 28888 byte(s)
Diff to previous 72953
Redesigned the generation of polymorphic wrapper: instead of generating it during the code
  generation of a routine we now do it during the generation of the polymorphic table. Doing
  so fixes eweasel tests test#final051, test#final052, test#final053 and test#final054. The
  execution is slightly slower now since the computation of `pattern_id' for each ENTRY is
  costing a little.

Made sure that `EIFFEL_HISTORY.poly_table' always return non-void if a valid routine ID is used.
Removed optimization of not having deferred routines in the table of routine, it actually made things
  more complicated especially since we need to know the `pattern_id' of the routine on which the
  call is being made.
Added a query `is_deferred' to show that all routines in a table are deferred. It is better than
  returning a Void polytable.

Fixed polymorphic calls on external involving generics, they were not processed at all (this
  fixes test#final054).

Changed `meta_type' for expanded type to simply return the same as reference type since at C
  code generation time they are both EIF_REFERENCE. Fixed `meta_type' in LIKE_CURRENT to be still
  LIKE_CURRENT as it is needed to know how `like Current' is seen in descendant class especially
  when it is used to represent a basic type.

Renamed `feature_i_with_body_index' into `feature_of_body_index' since it returns a FEATURE_I.


Revision 72953 - (view) (annotate) - [select for diffs]
Modified Sat Apr 5 07:02:49 2008 UTC (11 years, 8 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 28949 byte(s)
Diff to previous 72829
Removed unused feature.

Revision 72829 - (view) (annotate) - [select for diffs]
Modified Fri Mar 21 21:55:55 2008 UTC (11 years, 8 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 29320 byte(s)
Diff to previous 72720
Fixed `deep_actual_type' so that it does not stop at the first level in generics (this was causing
  eweasel test#final047 to fail).
Removed call to `deep_actual_type' from `process_array_as' in AST_FEATURE_CHECKER_GENERATOR because
  our recent changes to ensure SPECIALs are created with proper type highlighted a bug in eweasel
  test#term143 where a catcall was detected since we used the static solved type of the array.
  Verified that test#term131 is not failing since it was the reason for the call to `deep_actual_type';
  it is not failing because now dead code removal has no impact on the generation of the table
  for anchored creation.
Removed `generate_expanded_creation' and `generate_expanded_initialization' from TYPE_A and descendants
  they were already not used due to a previous commit, but I could not commit TYPE_A due to a conflict change.
Added some missing precondition in `TYPE_A'.
In AST_FEATURE_CHECKER_GENERATOR, added a call to `reset_constraint_error_list' which did not seem to
  cause a failure but for correctness it should always be called.

Fixed some inlining bugs with the various context switches (eweasel test#final042, term#exec283)
  are now successfully passing. One issue was that arguments were not resolved
  when creating the INLINED_FEAT_B node, this ensured that there was no need to call `real_type' and remove
  the risk of being in the wrong contest. Then the getting of registers for inlined arguments, locals and
  result should be done before doing the switch since calling `attachment_type' in the wrong context
  would cause a crash when it has some anchors.

Fixed inlining bug test#final048 where if the inlined routine is present in a descendant but defined in
  a class which does not conform to the current type, we would inline but assuming as context of inlining
  the first descendant defining it, this is bad since some dynamic calls would be replaced with static ones
  and this is wrong, since more than one descendant are present.

Fixed inlining bug test#final047 where printing the current register was not always done in the proper
  context because we did not use INLINED_CURRENT_B in `BYTE_CONTEXT.current_register' but the original
  REGISTRABLE.


Revision 72720 - (view) (annotate) - [select for diffs]
Modified Wed Mar 12 21:34:38 2008 UTC (11 years, 9 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 29840 byte(s)
Diff to previous 72653
Fixed system validity error found when enabling full class checking in the compiler, here it is due to
  insufficiently exported routines.


Revision 72653 - (view) (annotate) - [select for diffs]
Modified Fri Mar 7 20:01:18 2008 UTC (11 years, 9 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 29840 byte(s)
Diff to previous 72651
Improved finalized code generation by 2 factor:
- reducing amount of polymorphic calls.
- improving quality of inlined code.
Both are achieved by using the full type information of the target being used for code generation. This
  slows down a bit the caching done in EIFFEL_HISTORY since we cannot cache the information when target
  is generic. Also used a new kind of conformance check in CLASS_TYPE used for polymorphism, since
  we are going to check the conformance between a descendant CLASS_TYPE against an ancestor CL_TYPE_A.
For example: if you have in the universe a generic class A [G] which has A [G#1] and A [INTEGER] as
  generic derivations. Previously the call to `a.f ("STRING")' where `a: A [STRING]' and `f (v: G)'
  would yield a polymorphic call since `A [STRING]' was assimilated to A [G#1] and we need polymorphic
  call if you have a reattachment of A [INTEGER] to a A [ANY]. But with A [STRING] this reattachement
  cannot take place so no need for dynamic binding.
When compiling the compiler, it has a small effect on the speed (of about <2%), on size of generated
  executable (of about 1%).
Added a new feature `{CL_TYPE_A}.find_descendant_type' that returns the type of A [X] would have in a
  descendant C [G] (here C [X]). Usefull for inlining.


Revision 72651 - (view) (annotate) - [select for diffs]
Modified Fri Mar 7 19:19:42 2008 UTC (11 years, 9 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 28154 byte(s)
Diff to previous 72584
Ensured to `is_type_set' is properly defined for like anchor types to return `true'
  when the anchor is itself a type set.
Did the same for `generics'. Strangely it was already defined properly for `like Current'.
Ensured that callers of `is_type_set' are using `type.actual_type' for the assignment attempt if any.
Redefined `instantiated_in' in CL_TYPE_A to have a better return type.


Revision 72584 - (view) (annotate) - [select for diffs]
Modified Tue Mar 4 04:52:08 2008 UTC (11 years, 9 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 27981 byte(s)
Diff to previous 72419
Supported implicitly attached types (of constants, agents, tuples, etc.) in non-void-safe context to simplify transition to void-safe context by allowing reattaching values of these types to explicitly attached entities (this fixes test#attach005).

Revision 72419 - (view) (annotate) - [select for diffs]
Modified Sat Feb 23 00:45:27 2008 UTC (11 years, 9 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 27996 byte(s)
Diff to previous 71645
Changed SUPPLIER_AS to only create the supplier on demands.

Merged TYPE_I and TYPE_A hierarchies in just TYPE_A one.
1-The major change is that now to compute the associated class type (CLASS_TYPE instance) of a TYPE_A
  one has to provide a context in which the TYPE_A instance appear. If no context is provided, then
  formal generics are not replaced. For example: LIST [G] alone will simply give you the LIST [G]
  CLASS_TYPE, but if you do it in the context of TEST [INTEGER], then it will return the
  LIST [INTEGER] CLASS_TYPE.
2-Updated all callers accordingly.
3-Simplified a few calls where before we did `type.associated_class_type.associated_class' to just
  `type.associated_class'.
4-Added new preconditions to the context provided, it really helped finding out when we were not doing
  things properly especially in code generation when regenerating code from parent into descendant.
5-Eventhough TYPE_I disappeared, I kept TYPE_C and its descendants since they are useful to have
  them for C code generation and quick discimination for TYPE_A instances.
6-Made validity of types better controled by checking more things in `{TYPE_A}.is_valid'. For example
  that if type used to represent a class which was expanded and that it is not expanded anymore, then
  the type is not valid anymore.
7-The most problematic change with TYPE_I/TYPE_A was that they had different notion of `is_external'
  we have added `is_true_external' to simplify the code in certain areas where the old TYPE_I semantic
  was needed.

Code generation change:
1-We now assume that the default context is always `{BYTE_CONTEXT}.context_class_type'. Then in
  `real_type' and `creation_type' we use `{TYPE_A}.evaluated_type_in_descendant' to properly evaluate
  a type from the ancestor code in the current context. Very useful for regeneration of inherited
  assertions and replicated features. Before it worked, but it was not clear how to do things properly,
  now it is clear.
2-Changed the way we generate the type information for like arguments: we simply nest calls to resolve
  the type of the arguments. This affects the interpreter and C code generation which includes a level
  ID for computing the type of generics.

C Code generation change:
1-Because debugging was too difficult at some point during that work and also because the name mapping
  we were using limited us to 32767 types and 131071 routines, I've changed the mechanism to not use
  the `encode.c' modules in C/bench and did everything in Eiffel. So now we simply write for a feature
  name FXXX_YYY where XXX is the type ID and YYY the body index. The same kind of changes have been
  done for other names (See ENCODER class for details.).
2-We also use `type_id' instead of `static_type_id' for names. The reason it is safe to do so is because
  `type_id' never changes in workbench mode and that in finalized mode, even if you have different
  incremental recompilation, 2 projects should generate more or less the same code at the ID levels
  making it easier to compare them.
3-Changed the way type are created. Instead of having a CREATE_INFO instance in the TYPE_I objects
  used to properly generate the type, we simply use the original TYPE_A instance. That way when we
  have an anchor, we either generate its `actual_type' or its anchor spec depending on the value of
  `use_info. We still use CREATE_INFO to generate the type information but instead of being an object
  in each TYPE_I, it is merely a once that we reinitialize each time we need it.
4-ONE CRITICAL ASPECT OF THE CHANGE #3 was that storable depends on the way type descriptions are generated
  and thanks to eweasel test#storable013 I was able to catch this much earlier in the process.
5-Generates less polymorphic tables for attributes and types specification. What happened before was
  that when we needed a polymorphic type specification for example to create `like x' where x is covariantly
  redefined, we were generating at the same time the polymorphic table for `x' even though if `x'
  was not actually used in the system. This reduces by a tiny amount only the size of the executable.
6-Made the DESCRIPTOR entries much smaller than they used to be by computing the number of ancestors
  instead of allocating for the numbers of routines which was really silly.

IL code generation change:
1-Provided a implementation for creation of BIT constants in .NET however it does not completely work yet,
  it has to do with the manner we generate the BIT_REF class.
2-Changed the way we compare signatures, we store a CLASS_TYPE and a routine ID instead. And then when
  needed we refetch the FEATURE_I object to perform the signature comparions. The issue is that the previous
  solution would not work if NATIVE_ARRAY and TYPED_POINTER do not record all the possible genereric
  derivations in which they are present which is now the case for simplicity.
3-Fixed a bug in code generation for a TYPE_FEATURE_I that is instantiated as a basic type. We would
  generate its associated reference type instead of the basic type. It was not caught before because those
  routines where never called at runtime unless you had a formal generic parameter creation constraint.
4-Fixed an inconsistency shown by eweasel test#incr168 where a precondition check was generated eventhough
  none was needed because one inherited routine had a True precondition. The C code was doing it ok, but
  not .NET
5-Found out see eweasel test#final041 that we first generate inherited assertion and then precondition,
  which is the contrary of what is done in melted or C code generation.
6-Simplified creation of manifest ARRAYS and TUPLE by avoiding a local variable.


Debugger:
1-Updated the code accordingly to the TYPE_I/TYPE_A merge
2-Fixed bug in {DBG_EVALUATOR}.prepare_parameters so that we do not use BYTE_CONTEXT to resolve
  the type but `instantiation_in' instead. It seems to solve one case that the previous debugger did
  not handle (See updated comment).
3-Fixed precondition violation in
  {AST_DEBUGGER_EXPRESSION_CHECKER_GENERATOR}.expression_or_instruction_type_check_and_code where
  we were still trying to evaluate in the descendant if the parent evaluation failed. Causing some
  precondition violations since the AST was not completely annotated with IDs needed for resolution.

Bug fixes:
1-Fixed issue with the way we maintained {CLASS_C}.generic_features, because you could rebuild the list
  without recompiling descendants (case of modifying only a contract of the class) and the rebuilding
  would yield new routine IDs. Then during either type checking or code generation the evaluation of 
  `{TYPE_A}.evaluate_type_in_descendant' could fail because it is not find the new routine ID in the
  descendant class. Now we preserve the routine ID as long as we can, same with feature ID.
2-Made `feature_of_rout_id' works to find the invariant feature.
3-Made sure that when removing an ID from a server it is also removed from the TMP server. Added
  a `not_present' postcondition after calling `remove' to ensure that.


Revision 71645 - (view) (annotate) - [select for diffs]
Modified Tue Dec 25 08:24:57 2007 UTC (11 years, 11 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 16847 byte(s)
Diff to previous 71593
Taken attachment marks into account when comparing class type declarations (in particular, basic types) to preserve them for feature view (this fixes bug#13577).

Revision 71593 - (view) (annotate) - [select for diffs]
Modified Thu Dec 20 21:16:19 2007 UTC (11 years, 11 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 16931 byte(s)
Diff to previous 71150
Removed `format' routine from TYPE_A and EXPORT_I so that we can easily have a core compiler
  without a TEXT_FORMATTER_DECORATOR included (i.e. it is only using the TEXT_FORMATTER).


Revision 71150 - (view) (annotate) - [select for diffs]
Modified Wed Nov 14 19:34:34 2007 UTC (12 years, 1 month ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 17066 byte(s)
Diff to previous 70927
Supported attachment marks for formal generic parameter (in internal
structures only).
Refactored types that can have attachment marks into a separate class.
Fixed issue when "like Current" was not considered as attached even when
compiling with an option "is_attached_by_default".
Taken into account attachment status when comparing types for equality.
Made TUPLE type in an agent type (PROCEDURE or FUNCTION) attached in
void-safe context, so that it conforms to the usual type declaration.
Ensured actual type preserves attachment status of the corresponding
anchored type.


Revision 70927 - (view) (annotate) - [select for diffs]
Modified Sat Oct 27 08:44:50 2007 UTC (12 years, 1 month ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 18508 byte(s)
Diff to previous 70926
Removed a space after an attachment mark.

Revision 70926 - (view) (annotate) - [select for diffs]
Modified Sat Oct 27 07:28:29 2007 UTC (12 years, 1 month ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 18610 byte(s)
Diff to previous 70917
Ensured types of constant attributes, manifest constants, manifest arrays, types, type expressions, agents, creation expressions, current and creation types in creation instructions are attached if the source code is marked as void-safe.

Revision 70917 - (view) (annotate) - [select for diffs]
Modified Fri Oct 26 19:16:27 2007 UTC (12 years, 1 month ago) by king
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 18584 byte(s)
Diff to previous 70826
Updated is_conformant_to comment with respect to non-conforming inheritance.

Revision 70826 - (view) (annotate) - [select for diffs]
Modified Tue Oct 23 22:18:10 2007 UTC (12 years, 1 month ago) by king
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 18586 byte(s)
Diff to previous 70778
Now conformance only checks conforming parents.  Relaxed preconditions for conformance until an inherits_from routine is written for CLASS_C

Revision 70778 - (view) (annotate) - [select for diffs]
Modified Mon Oct 22 05:25:01 2007 UTC (12 years, 1 month ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 18430 byte(s)
Diff to previous 70534
Supported configuration options that tell whether a class is void-safe and
what the default attachment status of a type is.
Added checks for VUTA error when target of a call is not attached (the
check is activated for void-safe classes only).
Ensured the attached status of arguments that are in scope of the
corresponding voidness tests.
Ensured the attached status of Current.


Revision 70534 - (view) (annotate) - [select for diffs]
Modified Tue Oct 9 11:31:35 2007 UTC (12 years, 2 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 18402 byte(s)
Diff to previous 69973
Supported syntax for explicit declaration of attached and detachable types.
Modified conformance rules to take into account attachment status.
Supported syntax for object test.
Added validity rules for object test (including temporary restriction on
object test local names).
Supported the notion of scoped entities with the associated rules for void
test and object test that effectively are the basis for the CAPs.
Modified AST and associated visitors to take into account object test
nodes.


Revision 69973 - (view) (annotate) - [select for diffs]
Modified Tue Aug 14 19:15:39 2007 UTC (12 years, 4 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 18301 byte(s)
Diff to previous 67762
Promoted attachment properties to descendants of TYPE_A.

Revision 67762 - (view) (annotate) - [select for diffs]
Modified Fri Apr 6 19:35:57 2007 UTC (12 years, 8 months ago) by martins
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 16374 byte(s)
Diff to previous 67227
* Fixed a bug#12452 related to test#valid207.
* Added a question to degree 4.
* Changed from VEEN error to VTMC1 for the multi constraint case.
* Fixed bugs in the checking of the creation constraints (reported by multicon14 and multicon115):
  * generic types derived with deferred classes should never be considered creation ready if the according formal has a creation constraint_info
  * creation constraint check was done with feature name after renaming has happend, it should however be done with the original name of the feature.
* conform_to of TYPE_A can now be used transparently with TYPE_SET_A (as TYPE_SET_A was not always an descendant of TYPE_A this was a bug)
* Tried to improve output of constraint_info.e, not yet fully succeeded. Also related to bug#12452.


Revision 67227 - (view) (annotate) - [select for diffs]
Modified Tue Mar 13 01:32:16 2007 UTC (12 years, 9 months ago) by martins
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 16212 byte(s)
Diff to previous 65230
Support for multi constraint generics:
- Central new class is TYPE_SET_A: It provides features for type checking and feature lookup.
  (the TYPE_A interface is not perfectly complete until now)
- Added EXTENDED_TYPE_A: It basically encapsulates a type and a feature renaming.
- Changed parser to accept the new syntax.
- Adapted validity checks for generics to reflect the new rules.
- Changed AST_FEATURE_CHECKER_GENERATOR in particular `process_call' and its siblings
  to select the so called `multi_constrained_static'. This is the actual static type
  of the target. It is done for each access on a multi constraint generic.
- Added error classes VTGC*, VTGD* and VTMC*.
- Changed code which called `constrained_type' feature to make it capable
  of handling multi constraints. This is in most cases achieved through handling these cases
  explicitly: Autocompletion, query language and debugger are not yet adapted and don't work
  properly in the presence of multi constraint formals.
- Changed AST_DECORATED_OUTPUT_STRATEGY and the like to pretty print the multi constraints correctly.

Support for recursive formals:
- I added a second pass AST_FORMAL_GENERICS_PASS2 which handles the registration of suppliers
  and transformation of the types into the right class (formal or class type).

The rest of the changes are targeted to either one of these.


Revision 65230 - (view) (annotate) - [select for diffs]
Modified Fri Nov 24 15:27:26 2006 UTC (13 years ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 16214 byte(s)
Diff to previous 61573
Avoided code generation for TYPED_POINTER in .NET by converting it to POINTER before attaching to a reference entity as code for TYPED_POINTER had too many unverifiable places.

Revision 61573 - (view) (annotate) - [select for diffs]
Modified Mon Jul 24 12:43:56 2006 UTC (13 years, 4 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 16062 byte(s)
Diff to previous 61535
Reverted the changes to check conformance for expanded types as they prevented proper conversion (thus breaking, for example, test#melt004).

Revision 61535 - (view) (annotate) - [select for diffs]
Modified Fri Jul 21 14:40:01 2006 UTC (13 years, 4 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 16041 byte(s)
Diff to previous 59404
Added a feature to get a reference type for the given expanded type.
Ensured that a type "reference X" conforms to a type "X".


Revision 59404 - (view) (annotate) - [select for diffs]
Modified Mon Jun 5 15:50:20 2006 UTC (13 years, 6 months ago) by paulb
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 15920 byte(s)
Diff to previous 58325
Added redefine implementation for is_enum, which indicates if type is a .NET enum.

Revision 58325 - (view) (annotate) - [select for diffs]
Modified Thu Apr 20 16:05:16 2006 UTC (13 years, 7 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/cl_type_a.e
File length: 15661 byte(s)
Diff to previous 58027
Moved trunk/Src/bench/Eiffel to trunk/Src/Eiffel.

Revision 58027 - (view) (annotate) - [select for diffs]
Modified Wed Apr 5 07:08:57 2006 UTC (13 years, 8 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 15661 byte(s)
Diff to previous 57426
Fixed mixing paranthesis in indexing clause for the licensing.
Added missing license reference in newly created Eiffel classes.


Revision 57426 - (view) (annotate) - [select for diffs]
Modified Fri Mar 10 20:30:45 2006 UTC (13 years, 9 months ago) by tedf
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 15651 byte(s)
Diff to previous 57371
1. Removed all STRUCTURED_TEXT within the compiler.
2. Replaced with TEXT_FORMATTER for editor and documentation output formatting.
 Generally, there are five descendents for the moment.
-OUTPUT_WINDOW: For simple string output. i.e. Command line, file, buffered string etc.
-TEXT_FILTER: For various documentation formatting.
-EB_OUPUT_MANAGER: Mainly for EB_GRAPHICAL_OUTPUT_MANAGER decoration.
-EDITOR_TOKEN_WRITER: Editor tokens are translated here for colorized editor views.
-TEXT_FORMATTER_DECORATOR: A decorator of TEXT_FORMATTERS. Handles context and formatting information. AST visits for outputs are mainly mediated here.
 There are two sets of interface, process_* and add_*. The main one is process_* which is recommended to use. add_* is from STRUCTURED_TEXT which does not exist any more. As it affected vastly, I still keep its interfaces.
3. SHARED_TEXT_ITEMS are all strings now, as items in structured text have been removed.
4. Wrote AST_OUTPUT_STRATEGY which is an AST_VISITOR processing AST to TEXT_FORMATTER. Wrote AST_DECORATED_OUTPUT_STRATEGY a client of TEXT_FORMATTER_DECORATOR. And one AST_DOCUMENTATION_OUTPUT_STRATEGY only for documentation.
5. Removed flat/short views buffering of STRUCTURED_TEXT. It is slightly slower than before, but in my opinion acceptable.
6. Wrote a AST_TYPE_OUTPUT_STRATEGY which visit a type and print its ‘text’ representation output to a TEXT_FORMATTER.
7. Rewrote TOKEN_VISITOR and a descendant EIFFEL_TOKEN_VISITOR for editor tokens in library and in the compiler.
8. Leave printer command prints simple text in current editor. Further work will be done a little later.
9. We gain 22% faster of documentation generation for the moment. Less than we expected, I think, mainly because of additions and accuracy we gain.



Revision 57371 - (view) (annotate) - [select for diffs]
Modified Wed Mar 8 00:05:46 2006 UTC (13 years, 9 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 15573 byte(s)
Diff to previous 57234
Refactoring which separate TYPE_AS from TYPE_A.
* The TYPE_AS classes specific to the compiler have been removed, we now use the one from the
  parser cluster. Only INTEGER_CONSTANT and FORMAL_CONSTRAINT_AS are compiler specific, but defined
  as descendants of INTEGER_AS and FORMAL_DEC_AS.
* The return type and arguments' type are of type TYPE_A, which help us in removing many calls to
  `actual_type' when the purpose was to get the TYPE_A instance as statically it was a TYPE_AS, but
  dynamically it was TYPE_A.
* Rewritten the way we go from TYPE_AS to TYPE_A. This is now done in two steps.
  1 - convert TYPE_AS into TYPE_A using the AST_TYPE_A_GENERATOR visitor. For Bits symbol and anchors
      we get an UNEVALUATED_XX version.
  2 - evaluate and check validity of TYPE_A we obtained by 1), this is done using TYPE_A_CHECKER.
      TYPE_A_CHECKER is modular in the sense that it can be configured to trigger or not errors.
	  Useful to disable when we are in part of the UI of EiffelStudio who does not care about an
	  error reporting.
* Thanks to the above refactoring, I fixed eweasel tests: test#valid104, test#valid131, test#valid135.
  It was due to a bug that when solving an anchor type, we did not update `feature_id', as a consequence
  a comparison would yield False instead of True, because they were referring to the same anchor.
* In TYPE_A, try to add some preconditions to `associated_class' and fix all incorrect usage of it.
  Use `is_valid' a lot to ensure that we have a valid type (used to check validity of types in
  inheritance clause and constraints).
* Changed formatting so that we see G#x and arg#x (whereas it was Generic #x, Formal #x and arg # x)
  to make things more compact.
* Updated all the other part of EiffelStudio that depended on the above changes.
* New version number 5.7.0806



Revision 57234 - (view) (annotate) - [select for diffs]
Modified Thu Mar 2 01:57:13 2006 UTC (13 years, 9 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 15574 byte(s)
Diff to previous 56535
Wrote a TYPE_A visitor.


Revision 56535 - (view) (annotate) - [select for diffs]
Modified Tue Jan 17 01:37:10 2006 UTC (13 years, 11 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 15455 byte(s)
Diff to previous 56062
Added text of the GPL license to all classes of the compiler.


Revision 56062 - (view) (annotate) - [select for diffs]
Modified Thu Dec 8 12:33:35 2005 UTC (14 years ago) by alexk
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 14050 byte(s)
Diff to previous 56011
Extended export status of `declaration_mark' and associated features to simplify its setting from TUPLE_CLASS_B.

Revision 56011 - (view) (annotate) - [select for diffs]
Modified Mon Dec 5 17:36:00 2005 UTC (14 years ago) by alexk
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 14035 byte(s)
Diff to previous 55786
Recorded explicit class type declaration rather than a calculated one to
avoid issues with recompiling classes that change their expandedness
status.
Initialized class types associated with a class using `update_types' to
ensure that all structures (e.g., `derivations') are updated as well.
Used instantiation procedure unconditionally to cover the case of "like
Current" type.
Made a feature `duplicate' available in CL_TYPE_I to avoid using reverse
assignment.
Ensured that parent types are reference.
Created generic attribute descriptor not only for types that depend on
formal generic but also for those depending on anchored type ("like
Current").


Revision 55786 - (view) (annotate) - [select for diffs]
Modified Fri Nov 18 07:49:18 2005 UTC (14 years, 1 month ago) by alexk
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 11226 byte(s)
Diff to previous 55695
Changed conformance tests to use a new feature `conformance_type'
because now `actual_type' can return LIKE_CURRENT due to changes
in processing of "like Current" type.


Revision 55695 - (view) (annotate) - [select for diffs]
Modified Fri Nov 11 18:22:16 2005 UTC (14 years, 1 month ago) by alexk
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 11221 byte(s)
Diff to previous 48519
Added a conformance rule that ensures that any type under .NET conforms
to System.Object.


Revision 48519 - (view) (annotate) - [select for diffs]
Modified Wed Feb 16 01:06:25 2005 UTC (14 years, 10 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 10969 byte(s)
Diff to previous 48076
Replaced `is_system_object' by `is_system_object_or_any' used by CONVERTIBILITY_CHECKER.


Revision 48076 - (view) (annotate) - [select for diffs]
Modified Sat Jan 29 01:14:42 2005 UTC (14 years, 10 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 10776 byte(s)
Diff to previous 44434
Removed `if' statement to use simple assignment.


Revision 44434 - (view) (annotate) - [select for diffs]
Modified Wed Jul 21 04:49:24 2004 UTC (15 years, 4 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 10800 byte(s)
Diff to previous 43410
Removed support for `reference' types:
  - removed `reference_actual_type'.
  - added `is_conformant_to' which enables us to find if one type inherits
    from another one in a conformant way. It is needed for checking constraint
	genericity when actual generic is an expanded and constraint is a reference.
	Before we were using `reference_actual_type.conform_to' but since we
	removed it, we need something else and this is `is_conformant_to'.


Revision 43410 - (view) (annotate) - [select for diffs]
Modified Wed Jun 2 00:07:27 2004 UTC (15 years, 6 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 10268 byte(s)
Diff to previous 42385
Renamed TYPE into TYPE_AS


Revision 42385 - (view) (annotate) - [select for diffs]
Modified Fri Mar 26 02:10:29 2004 UTC (15 years, 8 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 10265 byte(s)
Diff to previous 41750
Added `is_system_object' to find out if a CL_TYPE_A instance corresponds
to the SYSTEM_OBJECT class.


Revision 41750 - (view) (annotate) - [select for diffs]
Modified Fri Mar 5 22:34:33 2004 UTC (15 years, 9 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 10053 byte(s)
Diff to previous 40762
Made CL_TYPE_A inherits from NAMED_TYPE_A since it is specified through a class name.
Added definition for `is_full_named_type' which is True for CL_TYPE_A direct
  instances, but not necessarly for descendant classes such as GEN_TYPE_A.
Added definition of `is_external' to find if we are handling an external type.
Now the attribute that stores the expanded status is `is_expanded', so updated
  accordingly all calls from `is_true_expanded' to `is_expanded'. Made
  sure that a basic type has `is_expanded' set to True as they are indeed
  expanded types too.
Added specific implementation `reference_actual_type' for expanded types.
Better formatting in `ext_expand_to' we add `reference' or `expanded' only
  if associated class is declared `expanded' or not. Same for `dump'.
Renamed `internal_conform_to' into `conform_to' since `internal_conform_to'
  has now been removed from parent.
Refactored `convert_to' and moved code to CONVERTIBILITY_CHECKER. Checker
  stores information about conversion into an instance of CONVERSION_INFO
  used usually for code generation.
Removed `same_class_type' which was not used.
Added invariant stating that `class_id' is always positive.


Revision 40762 - (view) (annotate) - [select for diffs]
Modified Thu Dec 11 23:17:07 2003 UTC (16 years ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 10338 byte(s)
Diff to previous 39141
Use `deep_twin' instead of `deep_clone' which is now made obsolete.
Use `twin' instead of `clone' which is now made obsolete.
Use `as_lower' and `as_upper' whenever appropriate instead of cloning and
  then calling `to_lower' or `to_upper'.


Revision 39141 - (view) (annotate) - [select for diffs]
Modified Fri Sep 19 02:09:57 2003 UTC (16 years, 3 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 10371 byte(s)
Diff to previous 37129
Removed invariant because too many descendants of CL_TYPE_A do not have a
valid `class_id' (e.g. basic types, formals). However we should do something
to show that this is valid when you have a CL_TYPE_A or a GEN_TYPE_A instance.


Revision 37129 - (view) (annotate) - [select for diffs]
Modified Mon May 5 18:06:59 2003 UTC (16 years, 7 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 10415 byte(s)
Diff to previous 37046
No more `is_out' flag. We are going to use the type TYPED_POINTER [XX] to
  represent an out parameter.


Revision 37046 - (view) (annotate) - [select for diffs]
Modified Wed Apr 30 02:23:26 2003 UTC (16 years, 7 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 10652 byte(s)
Diff to previous 36959
Implemented `convert_to' for CL_TYPE_A.


Revision 36959 - (view) (annotate) - [select for diffs]
Modified Thu Apr 24 22:24:30 2003 UTC (16 years, 7 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 9388 byte(s)
Diff to previous 35178
Made CL_TYPE_A hashable, so that it can be used for a key in HASH_TABLE.
  We use it as keys of a DS_HASH_TABLE for the convertibility mechanism.


Revision 35178 - (view) (annotate) - [select for diffs]
Modified Mon Dec 23 20:08:09 2002 UTC (16 years, 11 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 9254 byte(s)
Diff to previous 33261
Added `is_out' which is used to mark a parameter type has been a `out' parameter.
Only used for interfaces with languages that support out parameters.


Revision 33261 - (view) (annotate) - [select for diffs]
Modified Fri Jul 26 18:57:28 2002 UTC (17 years, 4 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 9017 byte(s)
Diff to previous 31839
Fixed a precondition violation while generating the flat format of TUPLE,
it was occuring when analyzing `fill' inherited from ARRAY.


Revision 31839 - (view) (annotate) - [select for diffs]
Modified Fri May 3 19:26:35 2002 UTC (17 years, 7 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 8881 byte(s)
Diff to previous 30265
Fixed `debug_output' so that a STRING is always returned when class is not
in universe anymore.


Revision 30265 - (view) (annotate) - [select for diffs]
Modified Mon Jan 21 01:41:16 2002 UTC (17 years, 10 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 8829 byte(s)
Diff to previous 30228
Renamed `base_class_id' into `class_id' for consistency with rest of compiler.
Added creation routine to CL_TYPE_A so that `set_base_class_id' has been removed since
  not used. Updated creation routine of GEN_TYPE_A and TUPLE_TYPE_A to add
  an extra argument, the one used in the creation procedure of CL_TYPE_A,
  i.e. the `class_id'.
Cosmetics.


Revision 30228 - (view) (annotate) - [select for diffs]
Modified Thu Jan 17 01:01:42 2002 UTC (17 years, 11 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 8433 byte(s)
Diff to previous 30166
Use new creation procedure `make' of CL_TYPE_I, GEN_TYPE_I and TUPLE_TYPE_I
instead of calling `set_base_id'.


Revision 30166 - (view) (annotate) - [select for diffs]
Modified Fri Jan 11 01:20:32 2002 UTC (17 years, 11 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 8450 byte(s)
Diff to previous 26913
Cosmetics and adapted to new creation procedure `make' from CREATE_TYPE.


Revision 26913 - (view) (annotate) - [select for diffs]
Modified Sun Aug 12 23:50:20 2001 UTC (18 years, 4 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 8440 byte(s)
Diff to previous 13227
Merged branch `dev46_manu' to the trunc.


Revision 13227 - (view) (annotate) - [select for diffs]
Modified Fri Feb 5 02:28:58 1999 UTC (20 years, 10 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 8965 byte(s)
Diff to previous 13081
Updated version of the reverse engineer to match the new common S_CLASS_TYPE_INFO
routine creation especially made for EiffelBench, i.e. changed `make' into
`make_for_bench'.


Revision 13081 - (view) (annotate) - [select for diffs]
Modified Sun Jan 31 03:57:34 1999 UTC (20 years, 10 months ago) by bouaziz
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 8945 byte(s)
Diff to previous 11342
bug fix in the reverse engineering


Revision 11342 - (view) (annotate) - [select for diffs]
Modified Wed Sep 16 03:03:22 1998 UTC (21 years, 3 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 8951 byte(s)
Diff to previous 11302
Replaced all the occurences to the old AST *_AS_B by *_AS.


Revision 11302 - (view) (annotate) - [select for diffs]
Modified Sun Sep 13 22:35:07 1998 UTC (21 years, 3 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 8955 byte(s)
Diff to previous 11128
Removed `evaluated_type' and `associated_eclass' from TYPE_A and from their
descendants.

The first one, because it was a synonym to `actual_type'
The second one because it was the same as `associated_class'

Removed also useless precondition which were not exactly doing what their author
expected.


Revision 11128 - (view) (annotate) - [select for diffs]
Modified Mon Aug 24 02:25:56 1998 UTC (21 years, 3 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 9143 byte(s)
Diff to previous 10818
We removed E_CLASS from the system, we should now use CLASS_C instead.


Revision 10818 - (view) (annotate) - [select for diffs]
Modified Thu Jul 30 20:33:23 1998 UTC (21 years, 4 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 9143 byte(s)
Diff to previous 9656
Add the generic conformance to the compiler


Revision 9656 - (view) (annotate) - [select for diffs]
Modified Sun Mar 15 02:19:40 1998 UTC (21 years, 9 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 9142 byte(s)
Diff to previous 8135
Cosmetics
Changed some inheritance scheme concerning types
Add the depedency between genrics in GEN_TYPE_A


Revision 8135 - (view) (annotate) - [select for diffs]
Modified Mon Sep 15 01:51:54 1997 UTC (22 years, 3 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 9279 byte(s)
Diff to previous 6553
Cosmetics


Revision 6553 - (view) (annotate) - [select for diffs]
Modified Wed Sep 25 16:42:23 1996 UTC (23 years, 2 months ago) by dinov
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 9290 byte(s)
Diff to previous 5758
E_CLASS indirection removed
class_name => name in CLASS_C (comig from E_CLASS)


Revision 5758 - (view) (annotate) - [select for diffs]
Modified Fri Jun 28 18:43:25 1996 UTC (23 years, 5 months ago) by xavierl
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 9361 byte(s)
Diff to previous 5305
`is_equivalent' implemented (used instead of `deep_equal')
cosmetics
bug fix: optimization removed (not valid all the time)


Revision 5305 - (view) (annotate) - [select for diffs]
Modified Fri May 24 15:43:47 1996 UTC (23 years, 6 months ago) by ericb
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 9098 byte(s)
Diff to previous 5079
optimization: `is_equal' called on IDs instead of `equal'


Revision 5079 - (view) (annotate) - [select for diffs]
Modified Fri May 10 09:48:57 1996 UTC (23 years, 7 months ago) by dinov
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 9092 byte(s)
Diff to previous 4620
formatting


Revision 4620 - (view) (annotate) - [select for diffs]
Modified Thu Apr 11 10:40:59 1996 UTC (23 years, 8 months ago) by xavierl
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 9085 byte(s)
Diff to previous 3652
implementation of `is_separate'
code cleanup


Revision 3652 - (view) (annotate) - [select for diffs]
Modified Mon Jan 15 15:32:22 1996 UTC (23 years, 11 months ago) by ericb
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 8494 byte(s)
Diff to previous 3632
new abstractions for system counters (class ids and type ids)


Revision 3632 - (view) (annotate) - [select for diffs]
Modified Mon Jan 15 11:35:14 1996 UTC (23 years, 11 months ago) by guusl
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 8221 byte(s)
Diff to previous 3375
output done through STRUCTURED_TEXT instead of OUTPUT_WINDOW


Revision 3375 - (view) (annotate) - [select for diffs]
Modified Mon Dec 4 11:38:01 1995 UTC (24 years ago) by dinov
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 8219 byte(s)
Diff to previous 3182
cosmetics (indexing, feature clauses, comments)


Revision 3182 - (view) (annotate) - [select for diffs]
Modified Tue Nov 21 16:41:01 1995 UTC (24 years, 1 month ago) by dinov
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 8129 byte(s)
Diff to previous 3078
reorganization in feature clauses
different output routines
export status


Revision 3078 - (view) (annotate) - [select for diffs]
Modified Mon Oct 30 11:24:52 1995 UTC (24 years, 1 month ago) by dinov
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 8143 byte(s)
Diff to previous 2659
features moved in specific feature clauses (Access, Output, ...)
implementation of the API


Revision 2659 - (view) (annotate) - [select for diffs]
Modified Wed Jul 5 16:25:31 1995 UTC (24 years, 5 months ago) by dewij
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 7972 byte(s)
Diff to previous 1268
abstract parser: <type> => <type_B>


Revision 1268 - (view) (annotate) - [select for diffs]
Modified Fri Oct 28 22:33:22 1994 UTC (25 years, 1 month ago) by grator
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 7968 byte(s)
Diff to previous 1167
case stuff


Revision 1167 - (view) (annotate) - [select for diffs]
Modified Tue Oct 4 23:00:57 1994 UTC (25 years, 2 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 7804 byte(s)
Diff to previous 605
case stuff


Revision 605 - (view) (annotate) - [select for diffs]
Modified Tue Jun 28 16:58:24 1994 UTC (25 years, 5 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 7307 byte(s)
Diff to previous 400
*** empty log message ***


Revision 400 - (view) (annotate) - [select for diffs]
Modified Mon Oct 25 16:53:45 1993 UTC (26 years, 1 month ago) by grator
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 7299 byte(s)
Diff to previous 388
*** empty log message ***


Revision 388 - (view) (annotate) - [select for diffs]
Modified Fri Oct 15 14:29:26 1993 UTC (26 years, 2 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 7300 byte(s)
Diff to previous 339
*** empty log message ***


Revision 339 - (view) (annotate) - [select for diffs]
Modified Mon Aug 30 18:18:42 1993 UTC (26 years, 3 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 7306 byte(s)
Diff to previous 333
*** empty log message ***


Revision 333 - (view) (annotate) - [select for diffs]
Modified Thu Aug 26 20:25:16 1993 UTC (26 years, 3 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 7301 byte(s)
Diff to previous 296
*** empty log message ***


Revision 296 - (view) (annotate) - [select for diffs]
Modified Thu Aug 19 20:09:35 1993 UTC (26 years, 4 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 7156 byte(s)
Diff to previous 240
*** empty log message ***


Revision 240 - (view) (annotate) - [select for diffs]
Modified Tue Jun 8 12:44:31 1993 UTC (26 years, 6 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 6868 byte(s)
Diff to previous 198
*** empty log message ***


Revision 198 - (view) (annotate) - [select for diffs]
Modified Tue May 11 12:30:45 1993 UTC (26 years, 7 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 6755 byte(s)
Diff to previous 186
*** empty log message ***


Revision 186 - (view) (annotate) - [select for diffs]
Modified Mon May 10 17:23:27 1993 UTC (26 years, 7 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 6721 byte(s)
Diff to previous 18
*** empty log message ***


Revision 18 - (view) (annotate) - [select for diffs]
Added Fri Mar 12 17:44:01 1993 UTC (26 years, 9 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/cl_type_a.e
File length: 6557 byte(s)
Initial revision


This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, enter a numeric revision.

  Diffs between and
  Type of Diff should be a

  ViewVC Help
Powered by ViewVC 1.1.23