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

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

Parent Directory Parent Directory | Revision Log Revision Log


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

Revision 94983 - (view) (annotate) - [select for diffs]
Modified Fri May 2 11:05:28 2014 UTC (5 years, 5 months ago) by jasonw
File length: 24867 byte(s)
Diff to previous 94581
<<Merged from trunk#94978.>>

Revision 94581 - (view) (annotate) - [select for diffs]
Modified Fri Mar 7 11:57:58 2014 UTC (5 years, 7 months ago) by jasonw
File length: 24852 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, 3 months ago) by jasonw
File length: 24825 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, 5 months ago) by jasonw
File length: 24201 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, 5 months ago) by jasonw
File length: 24043 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, 6 months ago) by jasonw
File length: 24043 byte(s)
Diff to previous 92408
<<Merged from trunk#92433.>>

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

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

Revision 87220 - (view) (annotate) - [select for diffs]
Modified Thu Sep 15 08:09:35 2011 UTC (8 years, 1 month ago) by jasonw
File length: 23793 byte(s)
Diff to previous 86354
<<Merged from trunk#87219.>>

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

Revision 84836 - (view) (annotate) - [select for diffs]
Modified Fri Nov 5 12:16:32 2010 UTC (8 years, 11 months ago) by jasonw
File length: 22943 byte(s)
Diff to previous 84363
<<Merged from trunk#84828.>>

Revision 84363 - (view) (annotate) - [select for diffs]
Modified Fri Sep 3 09:37:49 2010 UTC (9 years, 1 month ago) by jasonw
File length: 22488 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, 1 month ago) by jasonw
File length: 22063 byte(s)
Diff to previous 83928
<<Merged from trunk#84267.>>

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

Revision 83826 - (view) (annotate) - [select for diffs]
Modified Wed Jul 7 11:33:55 2010 UTC (9 years, 3 months ago) by mpei
File length: 21815 byte(s)
Diff to previous 83441
<<Merged from trunk#83825>>

Revision 83441 - (view) (annotate) - [select for diffs]
Modified Sat Jun 5 13:52:53 2010 UTC (9 years, 4 months ago) by jasonw
File length: 20142 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, 4 months ago) by jasonw
Original Path: branches/eth/eve3/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 20142 byte(s)
Diff to previous 81024
<<Breanched from trunk@83330>> Created a branch to upgrade Eiffel Transform library to trunk.

Revision 81024 - (view) (annotate) - [select for diffs]
Modified Tue Oct 6 20:53:27 2009 UTC (10 years ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 20142 byte(s)
Diff to previous 80991
Slightly changed the compiler so that attachment marks are ignored when code is compiled in non-void-safe
  mode. As a result, the setting `is_attached_by_default' has no effect in non-void-safe mode.
Fixed eweasel test#svalid022 to ensure that the specified conversion types are indeed attached in void-safe
  mode, otherwise we accept them regardless. We also prevent the same type to be repeated twice even if
  they differ by their attachment mark.


Revision 80991 - (view) (annotate) - [select for diffs]
Modified Thu Oct 1 22:28:02 2009 UTC (10 years ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 19962 byte(s)
Diff to previous 80247
Fixed an issue for autotest (eweasel test#store025) retrieval of a non-void safe system set of objects in
  a void-safe system as long as all attributes are attached, if one of them is not attached we trigger
  an exception and the object cannot be retrieved. Refactored the attribute matching so that we mark
  if a check for non-void attribute is required when retrieving an attribute.
Once the fix was done, we realized that now `store021' was failing. This is because the attribute description
  in `eskelet' was wrong. If you had `LIST [attached G]' in a generic class, we dropped the attachment mark.
  After fixing the bug, we realized that eweasel test#store021 and test#store018 were not passing anymore
  because the tests were based on that bug. We changed test#store021 to make it pass by taking this change
  into account. However we haven't fixed test#store018 yet because it requires another change in the compiler
  that are will do shortly.


Revision 80247 - (view) (annotate) - [select for diffs]
Modified Thu Aug 13 17:24:47 2009 UTC (10 years, 2 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 20235 byte(s)
Diff to previous 78267
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 78267 - (view) (annotate) - [select for diffs]
Modified Thu Apr 16 07:47:49 2009 UTC (10 years, 6 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 20213 byte(s)
Diff to previous 77824
Unified setting of attached status for types that are known to be attached.
Supported intermediate levels of void-safety.


Revision 77824 - (view) (annotate) - [select for diffs]
Modified Fri Mar 20 12:52:26 2009 UTC (10 years, 7 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 20201 byte(s)
Diff to previous 77703
Used context class settings when checking conformance to discard attachment status for non-void-safe classes.

Revision 77703 - (view) (annotate) - [select for diffs]
Modified Wed Mar 11 23:59:15 2009 UTC (10 years, 7 months ago) by paulb
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 20037 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, 7 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 19974 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, 7 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 19941 byte(s)
Diff to previous 76515
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 76515 - (view) (annotate) - [select for diffs]
Modified Wed Dec 31 21:57:14 2008 UTC (10 years, 9 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 19290 byte(s)
Diff to previous 76432
Made code compilable with full class checking (it was mostly export issues)


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


Revision 76125 - (view) (annotate) - [select for diffs]
Modified Tue Dec 9 20:24:44 2008 UTC (10 years, 10 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 19406 byte(s)
Diff to previous 75947
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 75947 - (view) (annotate) - [select for diffs]
Modified Fri Nov 28 13:45:34 2008 UTC (10 years, 10 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 19786 byte(s)
Diff to previous 75567
Introduced new rules for formal generics that take attachment marks of a type into consideration because the actual attachment status of the corresponding actual generic is not known, so the code should be safe in any scenario.

Revision 75567 - (view) (annotate) - [select for diffs]
Modified Thu Nov 13 20:39:48 2008 UTC (10 years, 11 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 19116 byte(s)
Diff to previous 75456
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 75456 - (view) (annotate) - [select for diffs]
Modified Thu Nov 6 16:15:54 2008 UTC (10 years, 11 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 18433 byte(s)
Diff to previous 75259
Refactored attachment status manipulation so that the design is more consistent (that fixes some issues involving anchored types and formal generics) and used `conformance_type' in conformance checks for formal generic so that it should also work for anchored types.

Revision 75259 - (view) (annotate) - [select for diffs]
Modified Thu Oct 23 18:28:25 2008 UTC (10 years, 11 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 18602 byte(s)
Diff to previous 75151
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 75151 - (view) (annotate) - [select for diffs]
Modified Fri Oct 17 08:35:38 2008 UTC (11 years ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 18555 byte(s)
Diff to previous 75116
Added a query that tells if initialization is required for a type (this is
different from attachment status, because entities of formal generic type
require initialization though we do not know if the actual type will be
attached or not).
Factored out a function that transfers attachment status of the current
type to the specified one which is required for processing anchored types.


Revision 75116 - (view) (annotate) - [select for diffs]
Modified Wed Oct 15 19:49:08 2008 UTC (11 years ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 18207 byte(s)
Diff to previous 75070
Slight modification in the generic conformance code so that it uses much less memory. With
  EiffelStudio, we went from using 40MB of C memory down to 16MB and a minor speed improvement
  where we went from 111s down to 107s. The change is to never build the conformance table
  when computing the dynamic type of a generic class, the conformance table is only build when
  needed, i.e. object test/assignment attempts and explicit call to {ANY}.conforms_to.
  For this to work, we had to review the representation of formal generic parameters in a
  type description. Now we cannot use the "0xFFF8 + pos" when describing a type in workbench mode
  nor in finalized mode except if we can guarantee that it is always a formal in all its descendants.
  The reason is quite simple, if a descendant instantiate the generic type, then 0xFFF8 does not
  make sense anymore, previously we relied on the conformance table to find out the type of the formal
  in the descendant, now we actually rely on our TYPE_FEATURE_I (so far only used in .NET code
  generation) to get the type of a formal and for generating a type description of a FORMAL_A
  we use the same technique as the one used for anchors by using the CREATE_FORMAL_TYPE abstraction.
Fixed a few issues with the processing of TYPE_FEATURE_I so that their pattern_id is properly
  computed. And defined TYPE_FEATURE_I to be a function and properly implemented `new_rout_entry'
  so that it generates a FORMAL_ENTRY which is like a ROUT_ENTRY for which the type information is
  always generated in workbench mode. Also made sure that those TYPE_FEATURE_I are added
  to `system.rout_info_table' otherwise code generation simply does not work.
Minor refactor of SELECT_TABLE.add_units so that we can easily add the processing of TYPE_FEATURE_I
  for finalization without duplicating too much code.
Removed `bc_gen_param_create' opcode since not used anymore.
Removed `eif_gen_tuple_typecode_str' which was not used anymore.


Revision 75070 - (view) (annotate) - [select for diffs]
Modified Sun Oct 12 05:45:16 2008 UTC (11 years ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 17244 byte(s)
Diff to previous 74954
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 74954 - (view) (annotate) - [select for diffs]
Modified Fri Oct 3 20:10:12 2008 UTC (11 years ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 17279 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 ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 17563 byte(s)
Diff to previous 74760
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 74760 - (view) (annotate) - [select for diffs]
Modified Sun Sep 21 18:54:18 2008 UTC (11 years ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 17418 byte(s)
Diff to previous 72728
Supported new syntax for self-initializing formal generics as well as associated queries.

Revision 72728 - (view) (annotate) - [select for diffs]
Modified Thu Mar 13 17:11:01 2008 UTC (11 years, 7 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 17134 byte(s)
Diff to previous 72584
Fixed catcall warnings.


Revision 72584 - (view) (annotate) - [select for diffs]
Modified Tue Mar 4 04:52:08 2008 UTC (11 years, 7 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 17130 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, 7 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 17151 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, 9 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 14000 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, 9 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 14079 byte(s)
Diff to previous 71547
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 71547 - (view) (annotate) - [select for diffs]
Modified Mon Dec 17 13:50:12 2007 UTC (11 years, 10 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 14229 byte(s)
Diff to previous 71150
Corrected conformance rules for formal generics so that an explicitly attached formal generic conforms to a plain one (see test#attach007).

Revision 71150 - (view) (annotate) - [select for diffs]
Modified Wed Nov 14 19:34:34 2007 UTC (11 years, 11 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 14052 byte(s)
Diff to previous 69139
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 69139 - (view) (annotate) - [select for diffs]
Modified Sat Jun 16 01:30:00 2007 UTC (12 years, 4 months ago) by martins
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 13569 byte(s)
Diff to previous 69125
Cleanup and renaming of misleading argument name.
formal_a.e: Removed obsolete feature.
renaming_a.e: Renamed argument to proper name (feature_id into feature_name_id)



Revision 69125 - (view) (annotate) - [select for diffs]
Modified Fri Jun 15 18:53:48 2007 UTC (12 years, 4 months ago) by martins
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 13946 byte(s)
Diff to previous 68998
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 68998 - (view) (annotate) - [select for diffs]
Modified Mon Jun 11 01:41:38 2007 UTC (12 years, 4 months ago) by martins
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 13942 byte(s)
Diff to previous 68852
vtgc2.e: Error printing improved.
ast_feature_checker_generator.e: Added a protection for NONE types and refactored code. Compare bug#13012 (test#fixed133).
class_c.e and formal_a.e: Bugfix related to bug in ast_feature_checker_generator.e
mc_feature_info.e: added constraint position to output (more information for the user)
renaming_a.e: implemented alias support for multi constraints. Various bugs fixed, see list below.
type_set_a.e: went from is_loose to has_formal as is_loose includes like which is ok.
ast_compiler_factory.e: Added comment about where similar code can be found code.
formal_constraint_as.e: Added code to print erros without using the compiled version of a renaming, as it cannot reproduce the complete information.
rename_clause_as.e: Added two features to support error output generation.

The following bugs are fixed because of better error printing and alias support for multi-constraint formals:
 * bug#12776 with test#multicon044
 * bug#12778 (now there is a proper error message)
 * bug#12877 with test#multicon045
 * bug#12785 with test#multicon047

Revision 68852 - (view) (annotate) - [select for diffs]
Modified Mon Jun 4 18:15:15 2007 UTC (12 years, 4 months ago) by martins
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 13922 byte(s)
Diff to previous 68089
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 68089 - (view) (annotate) - [select for diffs]
Modified Thu May 3 18:36:31 2007 UTC (12 years, 5 months ago) by martins
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 14159 byte(s)
Diff to previous 68030
Refactored RENAMED_TYPE_A to RENAMED_TYPE [G -> TYPE_A]
This change allows us to program type safe if possible.

Revision 68030 - (view) (annotate) - [select for diffs]
Modified Mon Apr 30 18:38:45 2007 UTC (12 years, 5 months ago) by martins
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 14194 byte(s)
Diff to previous 67948
Main change: I merged many occurences of "constrained_type" like features into `FORMAL_A'
Renamed `is_multi_constrained_formal' into `is_multi_constrained'
type_a.e: I moved some features into FORMAL_A because the usage pattern suggests that they are not needed in TYPE_A (to improve speed).
renamed_type_a.e: added implementation for `conformance_type', this was a bug (not reported)
formal_dec_as.e: fixed a bug in `is_multi_constrained' (not reported)

Revision 67948 - (view) (annotate) - [select for diffs]
Modified Sat Apr 21 00:50:00 2007 UTC (12 years, 6 months ago) by martins
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 11401 byte(s)
Diff to previous 67227
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 67227 - (view) (annotate) - [select for diffs]
Modified Tue Mar 13 01:32:16 2007 UTC (12 years, 7 months ago) by martins
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 10726 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, 7 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 9037 byte(s)
Diff to previous 65165
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 65165 - (view) (annotate) - [select for diffs]
Modified Tue Nov 21 01:36:22 2006 UTC (12 years, 10 months ago) by patrickr
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 8562 byte(s)
Diff to previous 58325
made old and new HASH_TABLE compatible
added some catcall detection and prevention features to HASH_TABLE
changed ID_AS not to inherit form STRING but have a name_id which is an id into the names heap
switched compiler from the obsolete HASH_TABLE to the normal HASH_TABLE of base

Revision 58325 - (view) (annotate) - [select for diffs]
Modified Thu Apr 20 16:05:16 2006 UTC (13 years, 6 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/formal_a.e
File length: 8557 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, 6 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/formal_a.e
File length: 8557 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, 7 months ago) by tedf
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/formal_a.e
File length: 8547 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, 7 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/formal_a.e
File length: 8572 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, 7 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/formal_a.e
File length: 8580 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, 9 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/formal_a.e
File length: 8462 byte(s)
Diff to previous 55787
Added text of the GPL license to all classes of the compiler.


Revision 55787 - (view) (annotate) - [select for diffs]
Modified Fri Nov 18 07:52:50 2005 UTC (13 years, 11 months ago) by alexk
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/formal_a.e
File length: 7057 byte(s)
Diff to previous 55694
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.
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 55694 - (view) (annotate) - [select for diffs]
Modified Fri Nov 11 18:20:15 2005 UTC (13 years, 11 months ago) by alexk
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/formal_a.e
File length: 7055 byte(s)
Diff to previous 51888
Allowed for non-expanded formal generics to conform to some other type.
(Under the ECMA rules it might also be possible that any formal generic can
conform to some other type. In this case there is no need to check for
expandedness status of the formal generic at all.)
Ensured that there are no infinite recursive calls during conformance check
when the formal generic is constrained to itself.


Revision 51888 - (view) (annotate) - [select for diffs]
Modified Wed Jun 8 12:40:25 2005 UTC (14 years, 4 months ago) by alexk
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/formal_a.e
File length: 6922 byte(s)
Diff to previous 48822
Added an additional check that generics are not void before checking for
value of formal generic index as this can happen when there are errors
during compilation and output has to show a formal generic.


Revision 48822 - (view) (annotate) - [select for diffs]
Modified Tue Mar 1 10:37:05 2005 UTC (14 years, 7 months ago) by alexk
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/formal_a.e
File length: 6888 byte(s)
Diff to previous 42628
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 42628 - (view) (annotate) - [select for diffs]
Modified Fri Apr 9 02:53:43 2004 UTC (15 years, 6 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/formal_a.e
File length: 6779 byte(s)
Diff to previous 42387
Implemented constraints that are either reference or expanded.


Revision 42387 - (view) (annotate) - [select for diffs]
Modified Fri Mar 26 02:45:20 2004 UTC (15 years, 6 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/formal_a.e
File length: 6020 byte(s)
Diff to previous 41736
Fixed `conform_to' on formal generic parameter as a formal can only conform
  to itself. It conforms to its constraint only if it is specified as a
  reference (Although I've added `is_reference' it is not yet set to True).
Added `convert_to' so that if formal generic parameter is reattached to
  something of type X and the constraint of the generic parameter conforms to X
  then it is allowed and a special code is generated here so that if the formal
  is instantiated as a reference we do a simple reattachement, if the formal
  is instantiated as an expanded we do a conversion (expanded -> reference).
Updated `check_const_gen_conformance' to allow conformance as if formal
  generic parameter was marked with `is_reference' set to True.


Revision 41736 - (view) (annotate) - [select for diffs]
Modified Fri Mar 5 18:54:00 2004 UTC (15 years, 7 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/formal_a.e
File length: 4034 byte(s)
Diff to previous 40762
Renamed `internal_conform_to' into `conform_to' since `internal_conform_to'
  has now been removed from parent.
Made FORMAL_A a descendant of NAMED_TYPE_A and made it also a full named type.


Revision 40762 - (view) (annotate) - [select for diffs]
Modified Thu Dec 11 23:17:07 2003 UTC (15 years, 10 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/formal_a.e
File length: 3943 byte(s)
Diff to previous 37662
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 37662 - (view) (annotate) - [select for diffs]
Modified Tue Jun 10 23:37:06 2003 UTC (16 years, 4 months ago) by julieng
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/formal_a.e
File length: 3958 byte(s)
Diff to previous 32271
Replace creation keyword with create keyword.


Revision 32271 - (view) (annotate) - [select for diffs]
Modified Wed May 29 19:03:54 2002 UTC (17 years, 4 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/formal_a.e
File length: 3948 byte(s)
Diff to previous 31460
Temporary bug fix to prevent crash in displaying error that you can get by
compiling code below:
class B [H, K ->INTEGER]
inherit CELL [K] redefine item end
feature item: INTEGER
end


Revision 31460 - (view) (annotate) - [select for diffs]
Modified Fri Apr 12 03:02:40 2002 UTC (17 years, 6 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/formal_a.e
File length: 3426 byte(s)
Diff to previous 26913
Since we can now create a formal generic parameter, `create_info' should
return something valid, in this case an instance of CREATE_FORMAL_TYPE.


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


Revision 11342 - (view) (annotate) - [select for diffs]
Modified Wed Sep 16 03:03:22 1998 UTC (21 years, 1 month ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/formal_a.e
File length: 3635 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, 1 month ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/formal_a.e
File length: 3641 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, 1 month ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/formal_a.e
File length: 3731 byte(s)
Diff to previous 9656
We removed E_CLASS from the system, we should now use CLASS_C instead.


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


Revision 8802 - (view) (annotate) - [select for diffs]
Modified Wed Dec 10 17:04:10 1997 UTC (21 years, 10 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/formal_a.e
File length: 3810 byte(s)
Diff to previous 5775
Cosmetics


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


Revision 3665 - (view) (annotate) - [select for diffs]
Modified Tue Jan 16 09:28:26 1996 UTC (23 years, 9 months ago) by ericb
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/formal_a.e
File length: 3650 byte(s)
Diff to previous 3652
integration problem (OUTPUT_WINDOW => STRUCTURED_TEXT)


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


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


Revision 3078 - (view) (annotate) - [select for diffs]
Modified Mon Oct 30 11:24:52 1995 UTC (23 years, 11 months ago) by dinov
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/formal_a.e
File length: 3506 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, 3 months ago) by dewij
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/formal_a.e
File length: 3396 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 (24 years, 11 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/formal_a.e
File length: 3390 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 ago) by grator
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/formal_a.e
File length: 3274 byte(s)
Diff to previous 296
case stuff


Revision 296 - (view) (annotate) - [select for diffs]
Modified Thu Aug 19 20:09:35 1993 UTC (26 years, 2 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/formal_a.e
File length: 2857 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, 4 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/formal_a.e
File length: 2714 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, 7 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/formal_a.e
File length: 2578 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