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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

Revision 94740 - (view) (annotate) - [select for diffs]
Modified Fri Mar 28 09:42:08 2014 UTC (5 years, 8 months ago) by jasonw
File length: 57736 byte(s)
Diff to previous 94581
<<Merged from trunk#94739.>>

Revision 94581 - (view) (annotate) - [select for diffs]
Modified Fri Mar 7 11:57:58 2014 UTC (5 years, 9 months ago) by jasonw
File length: 57469 byte(s)
Diff to previous 92723
<<Merged from trunk#94580.>>

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: 57387 byte(s)
Diff to previous 92516
<<Merged from trunk#92722.>>

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: 57190 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: 57018 byte(s)
Diff to previous 92408
<<Merged from trunk#92492.>>

Revision 92408 - (view) (annotate) - [select for diffs]
Modified Fri Apr 5 09:22:00 2013 UTC (6 years, 8 months ago) by jasonw
File length: 56934 byte(s)
Diff to previous 91005
<<Merged from trunk#92407.>>

Revision 91005 - (view) (annotate) - [select for diffs]
Modified Mon Jan 28 14:40:26 2013 UTC (6 years, 10 months ago) by jasonw
File length: 56916 byte(s)
Diff to previous 89347
<<Merged from trunk#90997.>>

Revision 89347 - (view) (annotate) - [select for diffs]
Modified Fri Aug 10 15:09:25 2012 UTC (7 years, 3 months ago) by jasonw
File length: 56915 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, 4 months ago) by jasonw
File length: 56878 byte(s)
Diff to previous 86354
<<Merged from trunk#86862.>>

Revision 86354 - (view) (annotate) - [select for diffs]
Modified Fri Apr 29 18:23:18 2011 UTC (8 years, 7 months ago) by jasonw
File length: 56824 byte(s)
Diff to previous 84470
<<Merged from trunk#86353.>>

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: 55954 byte(s)
Diff to previous 84363
<<Merged from trunk#84468.>>


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: 56576 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: 56552 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: 56726 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: 56575 byte(s)
Diff to previous 84076
This commit merges SCOOP from the old EVE branch.

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



Revision 84076 - (view) (annotate) - [select for diffs]
Modified Fri Jul 30 14:34:23 2010 UTC (9 years, 4 months ago) by wests
File length: 55941 byte(s)
Diff to previous 83928
<<Merged from trunk#84075.>>

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

Revision 83445 - (view) (annotate) - [select for diffs]
Modified Sat Jun 5 15:29:40 2010 UTC (9 years, 6 months ago) by jasonw
File length: 55569 byte(s)
Diff to previous 83441
<<Merged from trunk@83442.>>

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: 55533 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/gen_type_a.e
File length: 55533 byte(s)
Diff to previous 83039
<<Breanched from trunk@83330>> Created a branch to upgrade Eiffel Transform library to trunk.

Revision 83039 - (view) (annotate) - [select for diffs]
Modified Sun May 2 11:19:43 2010 UTC (9 years, 7 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 55533 byte(s)
Diff to previous 82732
Implemented `is_computable_using_ancestors' for types that depend on other types.

Revision 82732 - (view) (annotate) - [select for diffs]
Modified Wed Mar 31 20:52:33 2010 UTC (9 years, 8 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 55195 byte(s)
Diff to previous 82731
Removed non-used local.


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/gen_type_a.e
File length: 55213 byte(s)
Diff to previous 80685
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 80685 - (view) (annotate) - [select for diffs]
Modified Fri Sep 11 10:29:08 2009 UTC (10 years, 2 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 55269 byte(s)
Diff to previous 80247
Fixed eweasel test#vlec103 by removing incorrect generic derivation involving a type
  that does not exist anymore.


Revision 80247 - (view) (annotate) - [select for diffs]
Modified Thu Aug 13 17:24:47 2009 UTC (10 years, 3 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 55215 byte(s)
Diff to previous 78938
To prevent many eweasel tests to fail due to missing C compilation that was required with the addition
  of `generating_type: TYPE [like Current]' in ANY, we made sure that the compiler would not force a
  freeze each time a new generic derivation of TYPE was added to the system (it was freezing because TYPE
  contains some C externals). To prevent the freeze, now in the case of TYPE we say no need to freeze
  and we have augmented the interpreter with the ability to generate in byte code EXTERNAL_B node assuming
  they are builtin.
Fixed a bug in the code generation of the manifest type `{like Current}' in ANY. Indeed from ANY's point
  of view, like Current is a reference and it was generating the TYPE instance for the reference generice
  derivation of TYPE. Unfortunately when the descendant is expanded it uses the wrong generic derivation
  and code fails at execution. To prevent that problem, a manifest type creation only compute the type
  of its actual generic parameter, and then in the runtime we added `eif_typeof_type_of' which computes
  the approprite TYPE generic derivation to use based on the actual type. Because of that the 
  `rt_type_set' is indexed via the actual generic parameter type rather than by the type of the TYPE instance.
  Note the entry is actually `dftype + 1' as the 0 index is for TYPE [NONE].
Fixed missing analyze of type in TYPE_EXPR_B causing `Current' not to be registered for GC in finalized mode
  when generating a routine with just `Result := {like Current}'. This was making eweasel test#runtime005
  fail.
Fixed a bug in processing TYPED_POINTER associated CLASS_TYPE because the actual generic parameter recorded
  in `basic_type' could be anything and thus would be out of context.
Removed native processing of `generating_type' for basic types since now we need to generate STRING in
  non-experimental mode and TYPE [like Current] in experimental mode.
Renamed private `sk_type' from eif_type_id.c into public `eif_dtype_to_sk_type' in `cecil.c'. This is used
  by the `eif_typeof_type_of' above to calculate the proper generic derivation.
Made `RTLNTY' and `eif_type_malloc' really thread safe (they were not previously due to resizing of
  `rt_type_set'.
Changed signature of `generate_cid_init' in TYPE_A to also take a context (this is needed for the LIKE_CURRENT
  descendant) and this matches the need for a context in `generate_cid' and `generate_cid_array'.
Fixed `internal_same_generic_derivation_as' in GEN_TYPE_A to properly process actual generic parameter
  which are LIKE_CURRENT. This fixes eweasel test#incr074 which was failing with the addition of 
  `generating_type: TYPE [like Current]' in ANY.
Changed LIKE_CURRENT to always use the context type when provided and if not `conformance_type'.
Refactored `generate_type_id' in CREATE_TYPE to use `generated_id' from TYPE_A. This is needed for allowing
  generating the type declaration of NONE.
This commit fixes eweasel test#melt097 and test#valid257.


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/gen_type_a.e
File length: 54872 byte(s)
Diff to previous 78805
Cleaned object test local expression.

Revision 78805 - (view) (annotate) - [select for diffs]
Modified Wed May 20 19:03:08 2009 UTC (10 years, 6 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 54881 byte(s)
Diff to previous 77520
Fixed a bug when VTCG is not reported when there is a mismatch in the attachment status of the actual type and of the constraint (see test#attach066).

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/gen_type_a.e
File length: 55165 byte(s)
Diff to previous 77402
Updated to new syntax of object test and attached/detachable types using the `syntax_updater' tool.


Revision 77402 - (view) (annotate) - [select for diffs]
Modified Fri Feb 27 12:13:49 2009 UTC (10 years, 9 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 55135 byte(s)
Diff to previous 76771
Added a new feature {TYPE_A}.formal_instantiation_in that takes care of
both formal generic and "like Current" resolution, as they should be
evaluated taking into account slightly different context (current
constraint for the formal generics and current type for "like Current", as
the latter may be resolved to a formal generic and should not be resolved
to a signle constraint in a multi-constraint case).
Promoted attachment setting of a formal generic when it is evaluated in a
descendant.
Used "detachable ANY" as a default constraint for a formal generic.
Added a query {TYPE_SET_A}.is_attached that might be used to see if a given
multi-constraint formal is attached.
Changed calculation of a type in the given context when type-checking code
to use the new function.
Implemented detection of VUTA(2) errors for unary and binary operators.
Avoided compiler crash when reporting VWOE error for unary operator in
multi-constraint case.


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/gen_type_a.e
File length: 54293 byte(s)
Diff to previous 76515
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 76515 - (view) (annotate) - [select for diffs]
Modified Wed Dec 31 21:57:14 2008 UTC (10 years, 11 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 54195 byte(s)
Diff to previous 76441
Made code compilable with full class checking (it was mostly export issues)


Revision 76441 - (view) (annotate) - [select for diffs]
Modified Tue Dec 30 17:13:59 2008 UTC (10 years, 11 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 54215 byte(s)
Diff to previous 76432
Fixed bug#15106 and bug#15133 by checking that the expanded status of an actual generic follows the expanded status of a formal declaration (see test#valid226 and test#valid227).

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/gen_type_a.e
File length: 53966 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 (10 years, 11 months ago) by king
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 54157 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 (10 years, 11 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 53659 byte(s)
Diff to previous 75956
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 75956 - (view) (annotate) - [select for diffs]
Modified Fri Nov 28 17:29:16 2008 UTC (11 years ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 53583 byte(s)
Diff to previous 75944
Fixed `is_full_named_type' as it was not implemented correctly, causing eweasel test#term164 to fail
  instead of reporting an error.


Revision 75944 - (view) (annotate) - [select for diffs]
Modified Fri Nov 28 13:31:17 2008 UTC (11 years ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 53536 byte(s)
Diff to previous 75855
Taken a possible attachment mark of an actual generic when checking that it meets the constraints into account as the contraints have not attachment marks themselves.

Revision 75855 - (view) (annotate) - [select for diffs]
Modified Sat Nov 22 00:44:22 2008 UTC (11 years ago) by king
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 53265 byte(s)
Diff to previous 75845
Added optimization to GEN_TYPE_A.instantiate where if the instantiation renders no change to its generics then we do nothing, this optimization is performed elsewhere such as instatiated_in, this can perhaps be optimized further by investigate whether GEN_TYPE_A.duplicate needs to also duplicate the generics array

Revision 75845 - (view) (annotate) - [select for diffs]
Modified Fri Nov 21 17:40:31 2008 UTC (11 years ago) by king
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 52868 byte(s)
Diff to previous 74993
Removed blind duplicate from parent_type and made instantiate perform the duplicate where needs be, this speeds up the compiler by 1 or 2 percent

Revision 74993 - (view) (annotate) - [select for diffs]
Modified Tue Oct 7 05:24:47 2008 UTC (11 years, 2 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 52868 byte(s)
Diff to previous 74954
Fixed eweasel test#tuple013 because `check_labels' was not properly defined for generic types
  and thus was not checking for BREG or VRFT errors in actual generic parameters.
Removed depedency on `context' in NAMED_TUPLE_TYPE_A to report the error as there is no
  assertion that says so.


Revision 74954 - (view) (annotate) - [select for diffs]
Modified Fri Oct 3 20:10:12 2008 UTC (11 years, 2 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 52503 byte(s)
Diff to previous 74866
Removed support for self-initializing types as they may be excluded from
the standard.
Prepared C code generation for attributes with explicit attribute bodies.
Integrated changes that address bug#14453.


Revision 74866 - (view) (annotate) - [select for diffs]
Modified Mon Sep 29 16:28:32 2008 UTC (11 years, 2 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 52742 byte(s)
Diff to previous 74761
Refactored the code for simplification of the runtime type encoding code generation.
Fixed an issue where A [INTEGER], A [?INTEGER] and A [!INTEGER] would generate 3 different
  CLASS_TYPEs instances where one is enough since an expanded type is always attached.
Added support (but disabled it for the time being) for encoding the attachment mark in the
  runtime type encoding, this is done via {TYPE_A}.annotation_flags which currently always
  return 0.
Changed the way `eparents' is generated, instead of generating again the class name, we simply
  generate the type id and we use that `type_id' to get the class name via the `cn_generator' field
  of the `struct cnode' structure.


Revision 74761 - (view) (annotate) - [select for diffs]
Modified Sun Sep 21 18:55:15 2008 UTC (11 years, 2 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 52754 byte(s)
Diff to previous 73697
Reported VTGD(4) when necessary.

Revision 73697 - (view) (annotate) - [select for diffs]
Modified Fri May 23 18:22:30 2008 UTC (11 years, 6 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 52515 byte(s)
Diff to previous 73305
Properly implemented the ~ operator on .NET.
Fixed .NET code generation which was generating incorrect code for the basic type when we changed the
  signature from `like Current' to the basic type. The issue is that our code generation was not good
  at changing the expanded status of an argument in a signature as this was not detected.
  To make this work, I also changed the code generation of basic type so that they use the basic type
  .NET equivalent rather than the value type we generate for all the signatures (see
  {BASIC_A}.generic_derivation change).
  And also changed a few things here and there for some various transformation of values from ref to
  basic and reverse.
Also if an inherited routine of an expanded class was calling a routine whose signature was changed
  in the expanded type (e.g. `infix "&"' in INTEGER_32 calling `bit_and' which is redefined) then
  we were calling the new `bit_and' routine but still using its inherited signature thus generating
  the wrong argument passing. So we fixed that by changing {CALL_ACCESS_B}.byte_node to update the
  call to the descendant signature but this caused eweasel test#exec060 to now fails. We tried to
  fix it but could not for the time being. The only result of that change is in {BYTE_CONTEXT}.real_type
  which has been factorized to use {BYTE_CONTEXT}.creation_type which now has a slightly different
  code for resolving types when handling inherited code. Other eweasel tests affected by this change
  but that are passing are test#incr288, test#expanded007 and test#melt069.
Had to change FEATURE_I.access to call the new {TYPE_A}.context_free_type instead of {TYPE_A}.deep_actual_type
  because otherwise the code generation in workbench mode for .NET of `abs_ref' in INTEGER would 
  be incorrect for the postcondition. Basically `context_free_type' only keeps `like Current' and gets
  rid of all the other anchors. The name is not that great since it is not completely free from context,
  but could not find one that express this.
 
Added some validity precondition in TYPE_A for `dispatch_anchors', `is_equivalent', `is_safe_equivalent'
  and `equivalent'. Updated REFERENCE_DESC to reflect that change.


Revision 73305 - (view) (annotate) - [select for diffs]
Modified Sat May 3 01:07:33 2008 UTC (11 years, 7 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 51799 byte(s)
Diff to previous 72419
Optimized `deep_actual_type' and `actual_argument_type' to not perform 2 loops when you have
  a like.


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/gen_type_a.e
File length: 51416 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/gen_type_a.e
File length: 32189 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/gen_type_a.e
File length: 32269 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 ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 32832 byte(s)
Diff to previous 70525
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 70525 - (view) (annotate) - [select for diffs]
Modified Mon Oct 8 21:17:03 2007 UTC (12 years, 2 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 32696 byte(s)
Diff to previous 70524
Added support for generating more than one error at degree 4:
- Fixed issue with more than one error in degree 5 as found in test#multierr003
- Removed `mark' and `nb_errors' from ERROR_HANDLER, use a new query `error_level' to find out if
  more errors have been added.
- Moved type checking and instantiator from degree 4 to degree 3. Indeed it was shown by eweasel
  test#vfav401 that moving a class such as BOOLEAN in the system that has an error late in degree 4
  would yield a somewhat complete recompilation of the system, but in that case, `creators' on
  many classes is computed and therefore is used to check the validity of the expanded (with regards to
  default_create), unfortunately we have stored the former `routine ID' of {ANY}.default_create, not the new
  one (this is when checking ANY using the once per compilation of {SYSTEM_I}.default_create_rout_id
  computing the former one, not the new one) and thus fails to validate many basic types.
  Also to prevent the wrong IDs to be stored, we reset them at the beginning of each degree 4.
  The only drawbacks is that some errors for incorrect types are reported at degree 3 instead of 
  degree 4 and the check is done at the beginning of {EIFFEL_CLASS_C}.pass3.
- Because once you have a class with an error at degree 4, we have added `is_ignored_for_degree_4' in
  CLASS_C, so that all the descendants of that class are not processed.


Revision 70524 - (view) (annotate) - [select for diffs]
Modified Mon Oct 8 20:57:33 2007 UTC (12 years, 2 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 32766 byte(s)
Diff to previous 70327
Gave better name `_rout_id' (instead of `_id') since it represents a routine ID.


Revision 70327 - (view) (annotate) - [select for diffs]
Modified Sat Sep 15 04:33:08 2007 UTC (12 years, 2 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 32761 byte(s)
Diff to previous 69125
Cosmetics.
Fixed check violation when displaying the VTCG7 error for inherited code (as shown by eweasel
  test#valid208), by making sure that we set the `written_class' attribute so that instead
  of displaying the source for the current class we display the source for the inherited class.


Revision 69125 - (view) (annotate) - [select for diffs]
Modified Fri Jun 15 18:53:48 2007 UTC (12 years, 5 months ago) by martins
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 32706 byte(s)
Diff to previous 68852
Minor changes in contracts and cosmetics.
formal_a.e: Better contract.
gen_type_a.e: Cosmetics.
type_set_a.e: Deleted broken post condition.

Revision 68852 - (view) (annotate) - [select for diffs]
Modified Mon Jun 4 18:15:15 2007 UTC (12 years, 6 months ago) by martins
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 32707 byte(s)
Diff to previous 68627
Fixed bug#12818 (assigner command).
Added more support for alias features.
vwbr.e: Extended the error class to be able to support multi constraint error messages (switcht from CLACC_C to TYPE_A)
formal_a.e: Removed obsolete feature `has_multi_constraints'
gen_type_a.e: Cosmetics
renaming_a.e: Enabled storage of alias names. Detection of Infix/Prefix is not implemented (see bug#12817). 
type_set_a.e: Changed code related to alias names and added some more contracts.
formal_constraint_as.e: Creation of renaming with alias names
ast_feature_checker_generator.e: Fixed bug#12818 (assigner command) and fixed a bug for infix features.
byte_context.e: Fixed bug#12784 reproduced by test#multicon041.
constraining_type_as.e: refactored code into query
ast_formal_generics_pass2.e: In case of enabled assertions there are cases where the checks fail.


Revision 68627 - (view) (annotate) - [select for diffs]
Modified Wed May 23 23:31:00 2007 UTC (12 years, 6 months ago) by martins
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 32737 byte(s)
Diff to previous 68353
* Clean-Up
* Switched from VTGD back to VTCG which yields in proper error location in more cases.
* il_node_generator.e: fixed a bug by protecting a call on void target

Revision 68353 - (view) (annotate) - [select for diffs]
Modified Wed May 16 05:05:24 2007 UTC (12 years, 6 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 33286 byte(s)
Diff to previous 68291
Removed commented code related to conversion of actual generic parameter to the formal constraint.
  This can go away since now we only use conformance for that and never conversion.


Revision 68291 - (view) (annotate) - [select for diffs]
Modified Mon May 14 18:07:06 2007 UTC (12 years, 6 months ago) by martins
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 34009 byte(s)
Diff to previous 68089
ast_feature_checker_generator.e: a number of bugs has been fixed found while executing tcs#26. The bugs are catched by several already existing eweasel tests.
gen_type_a.e: Fixed bug#12704/test#valid214
formal_dec_as.e: By uncommenting the newly added lines every formal will be regarded as a multi constrained one. This is part of tcs#26.

Revision 68089 - (view) (annotate) - [select for diffs]
Modified Thu May 3 18:36:31 2007 UTC (12 years, 7 months ago) by martins
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 33655 byte(s)
Diff to previous 68062
Refactored RENAMED_TYPE_A to RENAMED_TYPE [G -> TYPE_A]
This change allows us to program type safe if possible.

Revision 68062 - (view) (annotate) - [select for diffs]
Modified Wed May 2 16:38:25 2007 UTC (12 years, 7 months ago) by martins
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 33646 byte(s)
Diff to previous 67957
In case a generic derivation is outside of a feature the message printied in an error was simply: "invariant"
In some cases it was wrong as the context has not been cleared.
This fix cleares now the `ast_context.current_feature' before it checks inherited classes and
the error message in feature_error.e has (temporarily) be adapted.


Revision 67957 - (view) (annotate) - [select for diffs]
Modified Mon Apr 23 21:58:30 2007 UTC (12 years, 7 months ago) by martins
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 33587 byte(s)
Diff to previous 67948
* mostly removed my TODOs
* removed wrong usage of `{CLASS_C}.constraint' from ast_breakable_slot_startegy.e
* refactored constraint_fixed back into constraint
* degree_4.e: removed check as assumptions seemed to be correct


Revision 67948 - (view) (annotate) - [select for diffs]
Modified Sat Apr 21 00:50:00 2007 UTC (12 years, 7 months ago) by martins
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 33650 byte(s)
Diff to previous 67905
formal_a.e: Added feature to check whether a formals constraint has a renaming or not. This is a necessary adaptation to handle single constraints which have a renaming correctly.
gen_type_a.e: provide location information.
renamed_type_a.e: Fixed bug in is_equivalent
renaming_a.e: Added a feature to map old names onto their new names.
type_a.e: added feature allows to check for certain conditions without a reverse assignment to formal_a.e
formal_constraint_as.e: removed too strong error handling (eweasel tests failed because of this, that's why it is removed)
ast_feature_checker_generator.e: Bug fix for bug#12503 and bug#12504
formal_constraint_as.e: Added a feature to support changes in formal.a and fixed a plain wrong feature.
named_tuple_type_as.e: fixed a bug which printed one comma too much in the `dump' feature



Revision 67905 - (view) (annotate) - [select for diffs]
Modified Thu Apr 19 12:17:53 2007 UTC (12 years, 7 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 33605 byte(s)
Diff to previous 67862
Removed non-use local.


Revision 67862 - (view) (annotate) - [select for diffs]
Modified Tue Apr 17 02:11:27 2007 UTC (12 years, 7 months ago) by martins
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 33631 byte(s)
Diff to previous 67828
* Fixed minor bug in FORMAL_CONSTRAINT_AS (renaming of single constraint type was not checked)
* Adapted precondition of conformance features in TYPE_SET_A
* Refactored EXTENDED_TYPE_A into RENAMED_TYPE_A.
* Refactored MC_ERROR_REPORT into MC_FEATURE_INFO

Revision 67828 - (view) (annotate) - [select for diffs]
Modified Fri Apr 13 00:34:21 2007 UTC (12 years, 7 months ago) by martins
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 33670 byte(s)
Diff to previous 67762
* The commit of `TYPE_A_CHECKER' implements 8.12.12 (creation readiness) of ECMA 2nd Edition.
  Tests assocaited with this: valid208, valid207, incr201, valid139, term147
* The split of `remaining_validity_check_list' into a temporary buffer and the global list should prevent incremental bugs.
  Tests associated with this: multicon15, multicon31, incr283
* Refactored named_tuple_type_a.e to use function `add_future_checking'
* Refactired error generatuion in gen_type_a.e to a function.

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/gen_type_a.e
File length: 32469 byte(s)
Diff to previous 67649
* 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 67649 - (view) (annotate) - [select for diffs]
Modified Sat Mar 31 01:36:09 2007 UTC (12 years, 8 months ago) by martins
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 31754 byte(s)
Diff to previous 67428
* Fixed bugs: bug#12316, bug#12420
* Fixed typos and did minor cosmetics

Revision 67428 - (view) (annotate) - [select for diffs]
Modified Wed Mar 21 16:42:51 2007 UTC (12 years, 8 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 31653 byte(s)
Diff to previous 67227
Fixed bug#12317 where a precondition violation was raised in `{TYPE_A}.to_type_set' becaused it was
  not properly redefined in TYPE_SET_A and EXTENDED_TYPE_A.
Fixed eweasel test#term147 showing a bug in {GEN_TYPE_A}.creation_constraint_check.


Revision 67227 - (view) (annotate) - [select for diffs]
Modified Tue Mar 13 01:32:16 2007 UTC (12 years, 8 months ago) by martins
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 31096 byte(s)
Diff to previous 67176
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 67176 - (view) (annotate) - [select for diffs]
Modified Sat Mar 10 01:10:13 2007 UTC (12 years, 9 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 33660 byte(s)
Diff to previous 67136
Added `evaluated_type_in_descendant' in TYPE_A to evaluate a type in the context of a descendant class.
  The existing instantiation_in would not do it since it does it in a CL_TYPE_A version of the descandant
  class. Although not yet done, `instantiation_in' could be rewritten in a much simpler fashion by using
  this new routine and the existing `instantiated_in'.
Full class checking:
 - Added `full_class_checking' option in the configuration library and removed the system option
   in SYSTEM_OPTIONS.full_type_checking and the associated settings in the configuration library.
 - Updated code in AST_FEATURE_CHECKER_GENERATOR to perform a correct full class checking.
 - Changed EIFFEL_CLASS_C.pass3 to properly initialize the checker to perform full class checking,
   also melted routine without assertions are checked normally (i.e. `to_melt_in' on DEF_PROC_I
   are now the same as FEATURE_I).
First result of applying catcall checking on the compiler:
 - Fixed a validity error in `is_safe_equivalent' from TYPE_A.
 - Fixed a validity error in CLASS_TYPE.make


Revision 67136 - (view) (annotate) - [select for diffs]
Modified Thu Mar 8 22:55:07 2007 UTC (12 years, 9 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 32983 byte(s)
Diff to previous 61551
Removed `has_formal' which was not used anymore (has_formal_generic was used instead).
Fixed bug#11951 where in `valid_generic' we used `like Current' to perform the comparison
  but when you mix NAMED_TUPLE_TYPE_A and TUPLE_TYPE_A the assignment failed and it was
  not recognized as valid_generic. This fixes eweasel test#tuple007.
Fixed flat degree 3 error in `actual_argument_type' where instead of creating a new `like Current'
  we use `twin' instead. This is because the creation routine `make' used in this context is not
  valid for descendants.


Revision 61551 - (view) (annotate) - [select for diffs]
Modified Fri Jul 21 23:22:40 2006 UTC (13 years, 4 months ago) by tedf
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 33277 byte(s)
Diff to previous 60286
Added `has_like_argument' in TYPE_A.
In AST_DECORATED_OUTPUT_STRATEGY we test return type of found feature using `has_like_argument' so that we can solve the type by when there are like argument types appears in it. By doing this, most of the time we avoid expression visiting.
Slightly refactored output strategy for documentation generation.

Revision 60286 - (view) (annotate) - [select for diffs]
Modified Sat Jun 24 17:55:36 2006 UTC (13 years, 5 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/gen_type_a.e
File length: 32969 byte(s)
Diff to previous 58325
Fixed test#valid176 when we needed to check at the end of degree 4 a type for both
  conversion and validity of the creation procedure constraints.


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/gen_type_a.e
File length: 30463 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/gen_type_a.e
File length: 30463 byte(s)
Diff to previous 57776
Fixed mixing paranthesis in indexing clause for the licensing.
Added missing license reference in newly created Eiffel classes.


Revision 57776 - (view) (annotate) - [select for diffs]
Modified Sun Mar 26 23:51:14 2006 UTC (13 years, 8 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 30453 byte(s)
Diff to previous 57426
Now FORMAL_CONSTRAINT_AS.constraint_type takes an argument which is the class
  in which FORMAL_CONSTRAINT_AS appears. It frees us from the dependency to
  finding out the current class from SYSTEM_I which can be Void when not compiling.


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/gen_type_a.e
File length: 30386 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/gen_type_a.e
File length: 30311 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/gen_type_a.e
File length: 30625 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, 10 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 30496 byte(s)
Diff to previous 56083
Added text of the GPL license to all classes of the compiler.


Revision 56083 - (view) (annotate) - [select for diffs]
Modified Fri Dec 9 15:25:14 2005 UTC (14 years ago) by alexk
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 29091 byte(s)
Diff to previous 56011
Ensured that generic parameters are instantiated in `instantiation_in' using a context type.

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/gen_type_a.e
File length: 28935 byte(s)
Diff to previous 55812
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 55812 - (view) (annotate) - [select for diffs]
Modified Mon Nov 21 14:52:39 2005 UTC (14 years ago) by alexk
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 28982 byte(s)
Diff to previous 55788
Changed `instantiate' use a new feature `conformance_type' due to changes
in processing of "like Current" type.


Revision 55788 - (view) (annotate) - [select for diffs]
Modified Fri Nov 18 07:53:59 2005 UTC (14 years ago) by alexk
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 28977 byte(s)
Diff to previous 55393
Changed signature of `instantiated_in' to accept LIKE_CURRENT that can
now be used during type checking in addition to the previously used
CL_TYPE_A.


Revision 55393 - (view) (annotate) - [select for diffs]
Modified Thu Oct 27 09:04:40 2005 UTC (14 years, 1 month ago) by alexk
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 29017 byte(s)
Diff to previous 52753
Added missing settings for "is_separate" flag.


Revision 52753 - (view) (annotate) - [select for diffs]
Modified Wed Jun 29 18:12:28 2005 UTC (14 years, 5 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 28923 byte(s)
Diff to previous 52670
Fixed new bug introduced with previous fix for exec206 with respect to anchor.
  We still need to instantiate the `actual_type' of the anchor, but not to loose
  the fact it is an anchor. This is not catch by eweasel test valid168.


Revision 52670 - (view) (annotate) - [select for diffs]
Modified Tue Jun 28 04:48:48 2005 UTC (14 years, 5 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 28443 byte(s)
Diff to previous 50190
Fixed eweasel test exec206, where in `instantiate' we should not call
  `actual_type' on the generic parameter, as otherwise we will loose the
  typing information (e.g. for anchors).


Revision 50190 - (view) (annotate) - [select for diffs]
Modified Tue Apr 19 04:52:41 2005 UTC (14 years, 7 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 28455 byte(s)
Diff to previous 48837
Replaced `conformance_type' by `actual_argument_type' which is used to
  resolve anchors to arguments, it uses an array as argument rather than
  having it shared in SHARED_ARG_TYPE (which has now been removed).


Revision 48837 - (view) (annotate) - [select for diffs]
Modified Tue Mar 1 18:46:40 2005 UTC (14 years, 9 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 28399 byte(s)
Diff to previous 48822
Fixed eweasel test valid158 by checking the validity of the computed
  generic_parameter before starting the recursion in `check_constraints'.
  When there is an error, we use the orginal type for the display.


Revision 48822 - (view) (annotate) - [select for diffs]
Modified Tue Mar 1 10:37:05 2005 UTC (14 years, 9 months ago) by alexk
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 28011 byte(s)
Diff to previous 48803
Added a feature to determine whether type is completely fixed or is subject
to changes because of anchored and/or formal generic types that are used
in its definition.


Revision 48803 - (view) (annotate) - [select for diffs]
Modified Mon Feb 28 22:42:16 2005 UTC (14 years, 9 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 27726 byte(s)
Diff to previous 48775
Use `like Current' instead of `GEN_TYPE_A' so that the routine also works
  for descendent classes.


Revision 48775 - (view) (annotate) - [select for diffs]
Modified Fri Feb 25 13:10:11 2005 UTC (14 years, 9 months ago) by alexk
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 27724 byte(s)
Diff to previous 45487
Corrected resolution for generic-like types (i.e., types that are processed in a
special way: tuple, native array, typed pointer) that depend on an anchored
type: before they were converted to "normal" generic types that later caused
a compiler crash.


Revision 45487 - (view) (annotate) - [select for diffs]
Modified Fri Sep 3 21:19:43 2004 UTC (15 years, 3 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 27783 byte(s)
Diff to previous 44434
Use Precursor to avoid code duplication.


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/gen_type_a.e
File length: 27869 byte(s)
Diff to previous 43815
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 43815 - (view) (annotate) - [select for diffs]
Modified Tue Jun 15 17:48:52 2004 UTC (15 years, 5 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 27888 byte(s)
Diff to previous 42649
Use new creation procedure of GEN_TYPE_I, TUPLE_TYPE_I and NATIVE_ARRAY_TYPE_I.


Revision 42649 - (view) (annotate) - [select for diffs]
Modified Fri Apr 9 17:48:49 2004 UTC (15 years, 8 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 27945 byte(s)
Diff to previous 42627
Fixed bug in `check_constraints' when checking reference/expanded constraint.
  We should not check it on `to_check' but on actual generic parameter
  `gen_param'.


Revision 42627 - (view) (annotate) - [select for diffs]
Modified Fri Apr 9 02:53:26 2004 UTC (15 years, 8 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 27941 byte(s)
Diff to previous 41751
Implemented constraints that are either reference or expanded:
  perform validation checking in `check_constraints'. However error messages
  are not very clear yet.


Revision 41751 - (view) (annotate) - [select for diffs]
Modified Fri Mar 5 22:38:29 2004 UTC (15 years, 9 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 27355 byte(s)
Diff to previous 40762
Now the attribute that stores the expanded status is `is_expanded', so updated
  accordingly all calls from `is_true_expanded' to `is_expanded'.
  Now `is_true_expanded' represents an expanded type which is not basic.
Implemented `is_full_named_type' for a generic class which states that it
  is True if and only if all generic parameters are also `is_full_named_type'.
Change signature of `solved_type' so that it applies to descendant classes too.
Perform late checking of conversion validity when used in generic parameters.
  Note that this may be useless if we allow automatic conversion of expanded to
  reference without the need of specifying a conversion routine. Moved
  `generate_constraint_error' to parent class TYPE_A.
Cosmetics.


Revision 40762 - (view) (annotate) - [select for diffs]
Modified Thu Dec 11 23:17:07 2003 UTC (15 years, 11 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 26421 byte(s)
Diff to previous 39047
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 39047 - (view) (annotate) - [select for diffs]
Modified Mon Sep 15 00:40:56 2003 UTC (16 years, 2 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 26435 byte(s)
Diff to previous 38947
Fixed minor issue in `instantiate': when we convert the formal `type' at
position `i' to its corresponding instantiation in Current, we still have
to take the `actual_type' of the formal type at position `i' in Current.


Revision 38947 - (view) (annotate) - [select for diffs]
Modified Sun Sep 7 01:57:34 2003 UTC (16 years, 3 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 26423 byte(s)
Diff to previous 37662
Fixed bug revealed by former eweasel test ccomp045. You had:
class TEST1[G -> ANY create default_create end]
TEST1[DOUBLE]
this should not have been accepted as DOUBLE as no creation procedure.


Revision 37662 - (view) (annotate) - [select for diffs]
Modified Tue Jun 10 23:37:06 2003 UTC (16 years, 6 months ago) by julieng
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 26263 byte(s)
Diff to previous 37513
Replace creation keyword with create keyword.


Revision 37513 - (view) (annotate) - [select for diffs]
Modified Mon Jun 2 23:34:53 2003 UTC (16 years, 6 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 26249 byte(s)
Diff to previous 37503
Added new lace option `check_generic_creation_constraint' which enables or
disables checking against the creation constraint clause of a formal generic
parameter constraint.


Revision 37503 - (view) (annotate) - [select for diffs]
Modified Sat May 31 16:57:11 2003 UTC (16 years, 6 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 26155 byte(s)
Diff to previous 36959
Fixed bug found by failing eweasel tests incr141 after we added a creation
generic constraint to the ROUTINE class. Some time `to_check' does not
represent a class (e.g. when it represents NONE) and therefore there is
no associated class.


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/gen_type_a.e
File length: 25958 byte(s)
Diff to previous 30265
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 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/gen_type_a.e
File length: 25523 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, 10 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 25539 byte(s)
Diff to previous 30051
Use new creation procedure `make' of CL_TYPE_I, GEN_TYPE_I and TUPLE_TYPE_I
instead of calling `set_base_id'.


Revision 30051 - (view) (annotate) - [select for diffs]
Modified Sun Jan 6 03:51:49 2002 UTC (17 years, 11 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 25556 byte(s)
Diff to previous 29421
Moved precondition located in GEN_TYPE_A for `valid_generic' in TYPE_A as it should
  be in the parent and not in the descendant.
Redefined `instantiation_in' in GEN_TYPE_A so that if it is not a class, the
  instantiation is done on all generic parameter of Current. This solve Eric Bezault's
  problem where he had A [G-> B] and in B there is a feature `f' returning `C [like Current]'.
  In A he has b: C [G] and a: G and he tries to do `b := a.f' then the type of `f'
  is C [like Current] which does not conform to C [G] because `like Current' was
  not instantiated in the context of G. After doing the instantiation no correctly,
  it becomes C [G].


Revision 29421 - (view) (annotate) - [select for diffs]
Modified Fri Nov 30 03:33:44 2001 UTC (18 years ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 24907 byte(s)
Diff to previous 28769
Fixed bug because we were not taking the actual type of a generic class
declaration. Added check statement to ensure that a class_c is not void when
performing checking.


Revision 28769 - (view) (annotate) - [select for diffs]
Modified Mon Nov 5 23:20:15 2001 UTC (18 years, 1 month ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 24838 byte(s)
Diff to previous 26913
Fixed `creation_constraint_check' so that it checks exportation of creation
routines to the Current generic type and not to the class in which we instantiate
the generic type. It fixes the following bug:

class TEST
creation make
feature
   make is do end
   foo : FOO[BAR,BAR] -- Error here before.
end

class FOO[G->BAR create make end,H->BAR create make end]
end

class BAR
creation {FOO} make
feature make is do end
end


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


Revision 16182 - (view) (annotate) - [select for diffs]
Modified Wed Aug 11 19:05:51 1999 UTC (20 years, 4 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 26022 byte(s)
Diff to previous 14875
Fixed an error due to the introduction of TUPLES after recursive constraints
because even if generics /= Void it does not mean there are generic parameters and
therefore we are not allow to do the substitution.


Revision 14875 - (view) (annotate) - [select for diffs]
Modified Mon Jun 14 00:07:48 1999 UTC (20 years, 5 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 25887 byte(s)
Diff to previous 14457
Added `update_dependance' which is needed to fix a DCR bug because we do not keep
the dependance to a `like x' where x is a feature.
Added the redefinition of `conformance_type' in GEN_TYPE_A to translate the definition
of `like x' statement so that we can test the conformance between A[X] and A[like x] where
x: X.


Revision 14457 - (view) (annotate) - [select for diffs]
Modified Sat May 15 02:18:52 1999 UTC (20 years, 6 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 25039 byte(s)
Diff to previous 14396
Classes which have `default_create' as creation procedure are now accepted
when the constraint creation clause specifies `default_create' as one if the
creation procedure.


Revision 14396 - (view) (annotate) - [select for diffs]
Modified Thu May 13 01:03:51 1999 UTC (20 years, 6 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 24759 byte(s)
Diff to previous 14244
We forgot to check that the class did have a constraint creation clause. If it does not
have it we raise an error.


Revision 14244 - (view) (annotate) - [select for diffs]
Modified Tue May 4 18:09:42 1999 UTC (20 years, 7 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 24707 byte(s)
Diff to previous 13231
Modified completeley the validity checking of the constraint part of
a generic class. Before, it was not able starting from scratch to detect
invalid use of creation constraint clause, now it is.

Fixed a bug of command/query separation for `check_constraints' defined in TYPE_A.

The remaining problems are a missing incrementallity check when someone changes
the creation clause of a class used as a generic parameter of a generic class.


Revision 13231 - (view) (annotate) - [select for diffs]
Modified Fri Feb 5 03:46:12 1999 UTC (20 years, 10 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 19990 byte(s)
Diff to previous 13153
1-Fixed a problem related to the use of expanded type when generating a new GEN_TYPE_I
or GEN_TYPE_A.

2-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'.

3-Fixed some problems with creation constraints when we don't have the full information
on the two classes we need to check. Add an optimization which does not check when both
classes are identical, in that case we are sure that the class is valid.


Revision 13153 - (view) (annotate) - [select for diffs]
Modified Tue Feb 2 04:32:30 1999 UTC (20 years, 10 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 19491 byte(s)
Diff to previous 13093
Check correctly, this time, that the creation routine is callable, i.e.
exported to the effective generic parameter.


Revision 13093 - (view) (annotate) - [select for diffs]
Modified Sun Jan 31 20:31:48 1999 UTC (20 years, 10 months ago) by bouaziz
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 19394 byte(s)
Diff to previous 13076
Bug fix in reverse engineering.


Revision 13076 - (view) (annotate) - [select for diffs]
Modified Sat Jan 30 00:53:01 1999 UTC (20 years, 10 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 19400 byte(s)
Diff to previous 12873
Fixed a bug which was occuring at degree 4 when starting from scratch. Once more
when checking for a valid creation constraint whe we were making the assumption that
all the feature tables have been computed, but this is not true, especially when
we are checking the constraint.

For the moment, we add a test which makes the rule less valuable, but will work
as the previous implementation.

What needs to be done next: a new topological sort which takes into account a kind
of relation between a class and its constraint.


Revision 12873 - (view) (annotate) - [select for diffs]
Modified Sun Jan 24 06:58:36 1999 UTC (20 years, 10 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 19130 byte(s)
Diff to previous 12233
Check correctly the new creation constraint with the creation procedures list given in the class declaration of the generic class


Revision 12233 - (view) (annotate) - [select for diffs]
Modified Tue Dec 8 21:07:08 1998 UTC (21 years ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 18159 byte(s)
Diff to previous 12180
New implementation for routine object which can be of the form:
	~r
	~r (a,b)
	~{A}r
	~{A}r (a,b)
	~~r


Revision 12180 - (view) (annotate) - [select for diffs]
Modified Sat Dec 5 21:27:36 1998 UTC (21 years ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 17612 byte(s)
Diff to previous 12125
Introduction of the new routine object in the compiler with an updated
TUPLE class. Now you can write: ~r or ~{A}r.


Revision 12125 - (view) (annotate) - [select for diffs]
Modified Sat Nov 28 03:59:56 1998 UTC (21 years ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 17614 byte(s)
Diff to previous 11342
Since a TUPLE can have no generic parameter, we need to add some protections.


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


Revision 11202 - (view) (annotate) - [select for diffs]
Modified Thu Sep 3 21:47:59 1998 UTC (21 years, 3 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 17438 byte(s)
Diff to previous 11054
We add the TUPLE class in the compiler


Revision 11054 - (view) (annotate) - [select for diffs]
Modified Wed Aug 19 02:05:27 1998 UTC (21 years, 3 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 17171 byte(s)
Diff to previous 10818
Cosmetics


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/gen_type_a.e
File length: 17171 byte(s)
Diff to previous 10151
Add the generic conformance to the compiler


Revision 10151 - (view) (annotate) - [select for diffs]
Modified Thu May 14 01:36:43 1998 UTC (21 years, 6 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 17065 byte(s)
Diff to previous 9946
Fixed a bug with the error list in the generic checking
Prepared the checking when creation in generics will be available


Revision 9946 - (view) (annotate) - [select for diffs]
Modified Wed Apr 22 03:14:09 1998 UTC (21 years, 7 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 16798 byte(s)
Diff to previous 9883
Removed the feature `check_generics' and replaced it by `check_constraints' which
is more meaningful.

Changed the way to implement the depedency between generics, it now checks correctly
when there is a constraint which is a formal generic parameter, ie
FOO [G, H -> G]

now a: FOO [K, STRING] where K is a generic parameter.

It used to be OK, but it should not since a generic parameter is conform only to
itself


Revision 9883 - (view) (annotate) - [select for diffs]
Modified Wed Apr 15 01:09:05 1998 UTC (21 years, 7 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 16192 byte(s)
Diff to previous 9656
Improved the first implementation of dependency between generics
Niw, it should cover all the cases, but some tests needs to be done


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


Revision 8136 - (view) (annotate) - [select for diffs]
Modified Mon Sep 15 01:52:28 1997 UTC (22 years, 2 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 15095 byte(s)
Diff to previous 6561
Adaptation to the new FIXED_LIST


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


Revision 5775 - (view) (annotate) - [select for diffs]
Modified Fri Jun 28 18:56:07 1996 UTC (23 years, 5 months ago) by xavierl
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 15147 byte(s)
Diff to previous 5305
`is_equivalent' implemented (used instead of `deep_equal')


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/gen_type_a.e
File length: 15149 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/gen_type_a.e
File length: 15141 byte(s)
Diff to previous 3652
formatting


Revision 3652 - (view) (annotate) - [select for diffs]
Modified Mon Jan 15 15:32:22 1996 UTC (23 years, 10 months ago) by ericb
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 15134 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, 10 months ago) by guusl
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 14939 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/gen_type_a.e
File length: 14937 byte(s)
Diff to previous 3178
cosmetics (indexing, feature clauses, comments)


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


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/gen_type_a.e
File length: 14960 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/gen_type_a.e
File length: 14943 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/gen_type_a.e
File length: 14931 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/gen_type_a.e
File length: 14739 byte(s)
Diff to previous 1118
case stuff


Revision 1118 - (view) (annotate) - [select for diffs]
Modified Tue Sep 20 16:08:27 1994 UTC (25 years, 2 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 13511 byte(s)
Diff to previous 1006
`format': constant strings


Revision 1006 - (view) (annotate) - [select for diffs]
Modified Sat Sep 10 00:05:30 1994 UTC (25 years, 3 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 13498 byte(s)
Diff to previous 605
output formats


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/gen_type_a.e
File length: 13445 byte(s)
Diff to previous 547
*** empty log message ***


Revision 547 - (view) (annotate) - [select for diffs]
Modified Mon May 9 17:25:40 1994 UTC (25 years, 7 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 13434 byte(s)
Diff to previous 435
*** empty log message ***


Revision 435 - (view) (annotate) - [select for diffs]
Modified Wed Dec 8 16:54:36 1993 UTC (26 years ago) by grator
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 12766 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/gen_type_a.e
File length: 12367 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, 1 month ago) by grator
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 12327 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/gen_type_a.e
File length: 12277 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/gen_type_a.e
File length: 12184 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, 3 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 11485 byte(s)
Diff to previous 250
*** empty log message ***


Revision 250 - (view) (annotate) - [select for diffs]
Modified Wed Jun 23 18:01:59 1993 UTC (26 years, 5 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 10592 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/gen_type_a.e
File length: 10626 byte(s)
Diff to previous 37
*** empty log message ***


Revision 37 - (view) (annotate) - [select for diffs]
Modified Mon Mar 15 12:25:50 1993 UTC (26 years, 8 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/gen_type_a.e
File length: 9997 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/gen_type_a.e
File length: 9819 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