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

Log of /branches/eth/eve/Src/Eiffel/API/evaluated_type/type_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, 7 months ago) by jasonw
File length: 59260 byte(s)
Diff to previous 94740
<<Merged from trunk#94978.>>

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: 48783 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: 48788 byte(s)
Diff to previous 94556
<<Merged from trunk#94580.>>

Revision 94556 - (view) (annotate) - [select for diffs]
Modified Fri Feb 28 09:44:00 2014 UTC (5 years, 9 months ago) by jasonw
File length: 48754 byte(s)
Diff to previous 93980
<<Merged from trunk#94547.>>

Revision 93980 - (view) (annotate) - [select for diffs]
Modified Tue Jan 14 12:19:38 2014 UTC (5 years, 10 months ago) by mschill
File length: 47569 byte(s)
Diff to previous 93780
SCOOP typing exception: Changed note key and improved code


Revision 93780 - (view) (annotate) - [select for diffs]
Modified Fri Dec 20 15:08:05 2013 UTC (5 years, 11 months ago) by jasonw
File length: 47902 byte(s)
Diff to previous 92723
<<Merged from trunk#93779.>>

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: 48251 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: 47513 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: 47250 byte(s)
Diff to previous 92434
<<Merged from trunk#92492.>>

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

Revision 92338 - (view) (annotate) - [select for diffs]
Modified Tue Mar 26 06:29:10 2013 UTC (6 years, 8 months ago) by mschill
File length: 47558 byte(s)
Diff to previous 91379
New: Features annotated with ignore_scoop_check: True are allowing assignments of separate objects to non-separate variables. Used for optimizations in array splitting

Revision 91379 - (view) (annotate) - [select for diffs]
Modified Fri Mar 15 08:48:07 2013 UTC (6 years, 8 months ago) by jasonw
File length: 46487 byte(s)
Diff to previous 89347
<<Merged from trunk#91375.>>

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

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: 47231 byte(s)
Diff to previous 85792
<<Merged from trunk#86353.>>

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

Revision 84545 - (view) (annotate) - [select for diffs]
Modified Sun Oct 10 10:53:48 2010 UTC (9 years, 2 months ago) by wests
File length: 46345 byte(s)
Diff to previous 84470
Scoop fixes: degree integration, usage of the processor tag attribute, and generic implicit type.

The compilation degree format had some preconditions to only allow certain
degree numbers (which we extend to include some degree 7, for SCOOP).

Also, since the processor tag doesn't exist, we guard it more carefully 
(it should never be used in situations where we know the type isn't
separate).

Lastly, since the implied formal generic type is now detachable separate ANY,
we have to account for this in the assign_finder, which was generating
calls to .implementation_ on basic types.


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


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


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

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: 45595 byte(s)
Diff to previous 84016
This commit merges SCOOP from the old EVE branch.

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



Revision 84016 - (view) (annotate) - [select for diffs]
Modified Mon Jul 26 09:16:52 2010 UTC (9 years, 4 months ago) by wests
File length: 45313 byte(s)
Diff to previous 83928
<<Merged from trunk#84001.>>

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

Revision 82901 - (view) (annotate) - [select for diffs]
Modified Wed Apr 21 09:50:11 2010 UTC (9 years, 7 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 44895 byte(s)
Diff to previous 82731
Added a feature that tests whether 2 types are syntactically equal.

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/type_a.e
File length: 44692 byte(s)
Diff to previous 82578
Changed the understanding of `sk_type' in the compiler to be a NATURAL_32 as it is in the runtime. Only a few cases of a conversion from integer to natural or from natural to integer have been added with comments stating that they are safe.


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


Revision 82540 - (view) (annotate) - [select for diffs]
Modified Wed Mar 10 14:08:04 2010 UTC (9 years, 9 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 44599 byte(s)
Diff to previous 80983
Changed export status of features that are not subject to public use (in
particular in visitor classes that have too many of them). This also
improves readability when browsing the features in various tools and
documents which of them are really used by the clients.
Moved `feature_table' from AST_CONTEXT to AST_FEATURE_CHECKER_GENERATOR
since it is not used outside it and therefore requires unnecessary
initialization at the degrees, not related to
AST_FEATURE_CHECKER_GENERATOR.
Removed feature {TYPE_A}.is_solved as it always returns the same value
regardless of the associated type object.
Added feature {TYPE_A}.is_computable_using_ancestors as a short track to
see if a particular type may need type information other than from the
current class and ancestors. Pobably it will not be used or will be
replaced with the more precise computation. At the moment it is supposed to
be used together with {FEATURE_I}.is_type_evaluation_delayed.
Added feature {FEATURE_I}.is_type_evaluation_delayed that tells if type
checking for the feature cannot be done before building feature tables for
all the classes in the system.
Replaced direct access to {INHERIT_INFO}.a_feature with a conditional one,
including delayed feature instantiation if the types of the feature
signature are not yet computed.
Introduced and used "delayed" versions of the following features for cases
when type information associated with a feature is not computed yet:
 - {CONVERTIBILITY_CHECKER}.check_conversion_type
 - {INHERIT_INFO}.instantiate_a_feature
 - {FEATURE_I}.check_assigner
 - {FEATURE_I}.check_same_signature
 - {FEATURE_I}.check_signature
 - {FEATURE_I}.check_types
 - {FEATURE_I}.process_pattern
 - {FEATURE_I}.update_instantiator2
Delayed computation of a class skeleton because it may depend on features
for which type information is not available yet. This is a subject for
future optimization.
Added some assertions to ensure everything is properly set before
processing.
Added actions to update type information associated with a feature in cases
it is cloned in a descendant while the type information of the original
feature is not computed yet.
Introduced new mechanism in DEGREE_4 to record actions to be taken after
the "normal" processing when some type checks are delayed. This is required
to compute qualified anchored types that may depend on descendants or other
classes that are not processed before the given one, but are still required
to get the correct type information.
Introduced new mechanism to TMP_FEATURE_SERVER to store features for which
type information is not yet computed. These features are kept in memory
instead flushing to the disk that is performed after computing type
information for them.
Made some minor optimizaions.


Revision 80983 - (view) (annotate) - [select for diffs]
Modified Wed Sep 30 22:24:11 2009 UTC (10 years, 2 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 44405 byte(s)
Diff to previous 80247
Fixed typo in assertion tag.


Revision 80247 - (view) (annotate) - [select for diffs]
Modified Thu Aug 13 17:24:47 2009 UTC (10 years, 4 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 44406 byte(s)
Diff to previous 78532
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 78532 - (view) (annotate) - [select for diffs]
Modified Thu May 7 05:44:55 2009 UTC (10 years, 7 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 44320 byte(s)
Diff to previous 78287
Added postcondition to `actual_argument_type' that shows that if TYPE_A has not like arguments
  then the TYPE_A object is the same as Current and that it is not the same as Current otherwise.


Revision 78287 - (view) (annotate) - [select for diffs]
Modified Fri Apr 17 14:02:41 2009 UTC (10 years, 7 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 44189 byte(s)
Diff to previous 78267
Corrected postcondition of `as_attached_in' that might fail if result is attached, but not `is_implicitly_attached' that happens for LIKE_CURRENT with attached actual type (this fixes bug#15640).

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


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/type_a.e
File length: 43527 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/type_a.e
File length: 43505 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/type_a.e
File length: 43009 byte(s)
Diff to previous 76432
Improved degree 4 implementation to alias feature i objects should no change be required, most reusable objects are now cached for each class pass resulting in far less memory, gc and disk space being used, aliasing can be further improved by not storing export information in the feature i objects themselves as well as redoing the somewhat broken is_origin implementation

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


Revision 76370 - (view) (annotate) - [select for diffs]
Modified Wed Dec 24 01:39:45 2008 UTC (10 years, 11 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 43408 byte(s)
Diff to previous 76125
Merged back the fixed catcall checker that I was keeping on hold. This fixes eweasel test#term166 (crash)
  and test#catcall001 and test#catcall005 (matching output). This catcall checker assumes there are no
  frozen entities and that all actual formal generics are variant. Once we have syntax support for those
  keywords in type, we will be able to actually fix those catcall warnings in the code.


Revision 76125 - (view) (annotate) - [select for diffs]
Modified Tue Dec 9 20:24:44 2008 UTC (11 years ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 42537 byte(s)
Diff to previous 75946
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 75946 - (view) (annotate) - [select for diffs]
Modified Fri Nov 28 13:42:30 2008 UTC (11 years ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 41848 byte(s)
Diff to previous 75593
Corrected setting attachment marks for anchored types, so that the attachment status is of an anchored type itself if it has an explicit mark or of the anchor type otherwise.

Revision 75593 - (view) (annotate) - [select for diffs]
Modified Fri Nov 14 14:58:03 2008 UTC (11 years ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 41508 byte(s)
Diff to previous 75567
Changed a call to `append_short_integer' to `append_natural_16' in `make_(full_)type_byte_code' as otherwise we get a precondition violation as `generate_cid' returns `NATURAL_16' and it is greater than a short integer for `NONE_A'.

Revision 75567 - (view) (annotate) - [select for diffs]
Modified Thu Nov 13 20:39:48 2008 UTC (11 years ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 41514 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 (11 years, 1 month ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 41513 byte(s)
Diff to previous 75365
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 75365 - (view) (annotate) - [select for diffs]
Modified Thu Oct 30 10:42:24 2008 UTC (11 years, 1 month ago) by jfiat
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 42501 byte(s)
Diff to previous 75259
Fixed invariant by adding a make_with_class creation routine.

Revision 75259 - (view) (annotate) - [select for diffs]
Modified Thu Oct 23 18:28:25 2008 UTC (11 years, 1 month ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 42506 byte(s)
Diff to previous 75209
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 75209 - (view) (annotate) - [select for diffs]
Modified Tue Oct 21 16:39:55 2008 UTC (11 years, 1 month ago) by king
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 41986 byte(s)
Diff to previous 75151
Commented out preconditions that reference conformity so that non-conforming features work, this needs to be reviewed ASAP

Revision 75151 - (view) (annotate) - [select for diffs]
Modified Fri Oct 17 08:35:38 2008 UTC (11 years, 1 month ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 41874 byte(s)
Diff to previous 75070
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 75070 - (view) (annotate) - [select for diffs]
Modified Sun Oct 12 05:45:16 2008 UTC (11 years, 2 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 41685 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, 2 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 41686 byte(s)
Diff to previous 74912
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 74912 - (view) (annotate) - [select for diffs]
Modified Thu Oct 2 21:34:50 2008 UTC (11 years, 2 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 42638 byte(s)
Diff to previous 74866
Fixed full class checking error while checking SPECIAL_CLASS_TYPE and NATIVE_ARRAY_CLASS_TYPE
  because type of `generic_derivation' is not `like Current' and they redefine `type' originally
  of type CL_TYPE_A into GEN_TYPE_A and NATIVE_ARRAY_TYPE_A (thus the detected full class checking
  error).


Revision 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/type_a.e
File length: 42590 byte(s)
Diff to previous 74786
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 74786 - (view) (annotate) - [select for diffs]
Modified Tue Sep 23 08:38:28 2008 UTC (11 years, 2 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 40629 byte(s)
Diff to previous 74759
Added a query that tells if a type may need automatic initialization.

Revision 74759 - (view) (annotate) - [select for diffs]
Modified Sun Sep 21 18:50:25 2008 UTC (11 years, 2 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 39960 byte(s)
Diff to previous 73697
Supported initialization of self-initializing attached locals (including Result) and attributes (the latter needs to be done a bit different to take into account explicit attribute declarations and multidot access to the attributes).

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/type_a.e
File length: 39771 byte(s)
Diff to previous 73617
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 73617 - (view) (annotate) - [select for diffs]
Modified Mon May 19 14:21:39 2008 UTC (11 years, 6 months ago) by king
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 39638 byte(s)
Diff to previous 73470
Updated precondition to account for replication.

Revision 73470 - (view) (annotate) - [select for diffs]
Modified Fri May 9 21:29:40 2008 UTC (11 years, 7 months ago) by king
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 39610 byte(s)
Diff to previous 73277
Updated feature conformance preconditions to account for replication

Revision 73277 - (view) (annotate) - [select for diffs]
Modified Fri May 2 00:01:08 2008 UTC (11 years, 7 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 39526 byte(s)
Diff to previous 72955
Fixed eweasel test#svalid005 by not repeating obsolete warnings for inherited routines (since
  the warning was already raised when checking the routine where it was declared).
Fixed eweasel test#valid219 by not triggering an obsolete warning when we are analyzing an
  obsolete feature.
Added feature context whenever possible so that we know from where the warning is comming from.


Revision 72955 - (view) (annotate) - [select for diffs]
Modified Sat Apr 5 07:27:44 2008 UTC (11 years, 8 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 39339 byte(s)
Diff to previous 72829
Improved support for implicitly attached types that is required if CAP
rules cover not only read-only entities, but also local variables.
Changed processing of implicitly attached types during type checking to
ensure this property is not promoted to the types that are derived from the
other context types (anchored types in particular), because in
non-void-safe mode we cannot be sure that the status of an implicitly
attached type is preserved.
Extended CAP rules to cover Result and local variables.
Added new conditions for variable-based CAP rules: an assignment of a
non-void value and a creation instruction.
Tracked when a variable may get a void value to terminate its non-void
scope.
Modified processing of non-void scopes that is required to implement more
dynamic modifiction of the variable voidness state that was not needed for
read-only entities.
Extended CAP rules to allow left and right parts of equality expressions to
be included in parentheses.


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

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

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

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


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


Revision 72697 - (view) (annotate) - [select for diffs]
Modified Tue Mar 11 21:34:07 2008 UTC (11 years, 9 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 39262 byte(s)
Diff to previous 72584
Added code review URL.


Revision 72584 - (view) (annotate) - [select for diffs]
Modified Tue Mar 4 04:52:08 2008 UTC (11 years, 9 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 39197 byte(s)
Diff to previous 72431
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 72431 - (view) (annotate) - [select for diffs]
Modified Sun Feb 24 00:16:42 2008 UTC (11 years, 9 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 38960 byte(s)
Diff to previous 72419
Added missing postcondition.


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/type_a.e
File length: 38859 byte(s)
Diff to previous 72120
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 72120 - (view) (annotate) - [select for diffs]
Modified Wed Jan 30 00:11:28 2008 UTC (11 years, 10 months ago) by king
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 23200 byte(s)
Diff to previous 71593
Fixed some typos

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/type_a.e
File length: 23200 byte(s)
Diff to previous 71591
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 71591 - (view) (annotate) - [select for diffs]
Modified Thu Dec 20 20:59:04 2007 UTC (11 years, 11 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 23350 byte(s)
Copied from: trunk/Src/Eiffel/eiffel/AST/parser_override/type_a.e revision 71590
Diff to previous 70926
Moved TYPE_A where it belongs since now we do not need to override it in the compiler.


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

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


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


Revision 70522 - (view) (annotate) - [select for diffs]
Modified Mon Oct 8 20:43:34 2007 UTC (12 years, 2 months ago) by manus
Original Path: trunk/Src/Eiffel/eiffel/AST/parser_override/type_a.e
File length: 22343 byte(s)
Diff to previous 69812
Cosmetics and updated comments to match new ECMA specification.


Revision 69812 - (view) (annotate) - [select for diffs]
Modified Thu Aug 2 17:07:09 2007 UTC (12 years, 4 months ago) by manus
Original Path: trunk/Src/Eiffel/eiffel/AST/parser_override/type_a.e
File length: 22332 byte(s)
Diff to previous 69634
Fixed errors reported by the full class checking which are both insufficient export
  and wrong type being passed around (simply use anchors to solve that)


Revision 69634 - (view) (annotate) - [select for diffs]
Modified Tue Jul 24 04:00:29 2007 UTC (12 years, 4 months ago) by manus
Original Path: trunk/Src/Eiffel/eiffel/AST/parser_override/type_a.e
File length: 22241 byte(s)
Diff to previous 68945
Fixed all occurrences of `Current.whatever' by just `whatever' since they are semantically
  identical except for the invariant check.


Revision 68945 - (view) (annotate) - [select for diffs]
Modified Fri Jun 8 14:58:16 2007 UTC (12 years, 6 months ago) by alexk
Original Path: trunk/Src/Eiffel/eiffel/AST/parser_override/type_a.e
File length: 22249 byte(s)
Diff to previous 68135
Renamed `{SYSTEM_I}.set_freeze' and `{SYSTEM_I}.private_freeze' into
`request_freeze' and `is_freeze_requested' respectively to highlight the
fact that freezing happens because of compiler needs rather than due to
project settings or users' request.
Made `{SYSTEM_I}.is_freeze_requested' available for call to allow quick
test if the system is about to be frozen anyway to avoid more complex
checks.
Changed code generation for CECIL table in workbench mode to call wrappers
that convert CECIL types into EIF_UNION and back, so that CECIL interface
is preserved (this fixes code generation issues in test#ccomp063).
Ensured that if visible features are recompiled, the code is frozen so that
CECIL wrappers are generated.
Removed precondition "has_current_class" from `{TYPE_A}.create_info'
because it is not required for the implementation.
Removed byte code generation for CECIL table as it is not used in the
current implementation.


Revision 68135 - (view) (annotate) - [select for diffs]
Modified Fri May 4 22:29:11 2007 UTC (12 years, 7 months ago) by martins
Original Path: trunk/Src/Eiffel/eiffel/AST/parser_override/type_a.e
File length: 22300 byte(s)
Diff to previous 68089
type_a.e: Added missing precondition to `same_as': other /= Void

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/eiffel/AST/parser_override/type_a.e
File length: 22257 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, 7 months ago) by martins
Original Path: trunk/Src/Eiffel/eiffel/AST/parser_override/type_a.e
File length: 22239 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, 7 months ago) by martins
Original Path: trunk/Src/Eiffel/eiffel/AST/parser_override/type_a.e
File length: 22696 byte(s)
Diff to previous 67875
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 67875 - (view) (annotate) - [select for diffs]
Modified Wed Apr 18 00:40:15 2007 UTC (12 years, 7 months ago) by martins
Original Path: trunk/Src/Eiffel/eiffel/AST/parser_override/type_a.e
File length: 22321 byte(s)
Diff to previous 67862
Further adapted refactoring away from EXTENDED_TYPE_A to RENAMED_TYPE_A.

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/eiffel/AST/parser_override/type_a.e
File length: 22221 byte(s)
Diff to previous 67846
* 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 67846 - (view) (annotate) - [select for diffs]
Modified Fri Apr 13 21:29:28 2007 UTC (12 years, 8 months ago) by martins
Original Path: trunk/Src/Eiffel/eiffel/AST/parser_override/type_a.e
File length: 22222 byte(s)
Diff to previous 67428
cosmetics: proof of concept for removal of double new lines in code


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/eiffel/AST/parser_override/type_a.e
File length: 22223 byte(s)
Diff to previous 67298
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 67298 - (view) (annotate) - [select for diffs]
Modified Wed Mar 14 23:38:54 2007 UTC (12 years, 9 months ago) by martins
Original Path: trunk/Src/Eiffel/eiffel/AST/parser_override/type_a.e
File length: 22380 byte(s)
Diff to previous 67227
- Fixed bug where TYPE_SET_A was not reporting that it is actually a typeset.
- Fixed bug in invaraint of TYPE_A
- Added invariant to EXTENDED_TYPE_A which ensures that neither another EXTENDED_TYPE_A object or a TYPE_SET_A instance can be set as `type'.

Revision 67227 - (view) (annotate) - [select for diffs]
Modified Tue Mar 13 01:32:16 2007 UTC (12 years, 9 months ago) by martins
Original Path: trunk/Src/Eiffel/eiffel/AST/parser_override/type_a.e
File length: 22223 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/eiffel/AST/parser_override/type_a.e
File length: 19066 byte(s)
Diff to previous 66957
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 66957 - (view) (annotate) - [select for diffs]
Modified Tue Feb 27 20:56:04 2007 UTC (12 years, 9 months ago) by manus
Original Path: trunk/Src/Eiffel/eiffel/AST/parser_override/type_a.e
File length: 17681 byte(s)
Diff to previous 64420
Renamed `is_deep_equal' into `is_safe_equivalent' since there is `is_deep_equal' from
  ANY when compiling with FreeELKS.


Revision 64420 - (view) (annotate) - [select for diffs]
Modified Wed Oct 18 17:29:39 2006 UTC (13 years, 1 month ago) by patrickr
Original Path: trunk/Src/Eiffel/eiffel/AST/parser_override/type_a.e
File length: 17676 byte(s)
Copied from: trunk/Src/Eiffel/API/evaluated_type/type_a.e revision 64389
Diff to previous 64415
some more moving of files

Revision 64415 - (view) (annotate) - [select for diffs]
Modified Wed Oct 18 15:23:06 2006 UTC (13 years, 1 month ago) by patrickr
Original Path: trunk/Src/Eiffel/parser_override/type_a.e
File length: 17676 byte(s)
Copied from: trunk/Src/Eiffel/API/evaluated_type/type_a.e revision 64389
Diff to previous 61551
refactored configuration library into two parts, parser that handles parsing and writing configuration files, compiler that does the compiler specific part (degree 6)
moved some classes around and created some new libraries to be able to use the parser and configuration system as a library in the compiler
cleaned up the ec.ecf

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/type_a.e
File length: 17676 byte(s)
Diff to previous 61537
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 61537 - (view) (annotate) - [select for diffs]
Modified Fri Jul 21 14:52:22 2006 UTC (13 years, 4 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 17547 byte(s)
Diff to previous 59403
Provided code generation for CHARACTER_32.
Supported reattachment of a result type anchored to an argument of a
reference formal type with an expanded actual type to this expanded type.


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

Revision 58610 - (view) (annotate) - [select for diffs]
Modified Mon May 1 18:04:21 2006 UTC (13 years, 7 months ago) by patrickr
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 17324 byte(s)
Diff to previous 58567
added possibility to disable/enable warnings globally
refactored warnings so that they are now directly in CONF_OPTION

Revision 58567 - (view) (annotate) - [select for diffs]
Modified Fri Apr 28 20:49:07 2006 UTC (13 years, 7 months ago) by patrickr
Original Path: trunk/Src/Eiffel/API/evaluated_type/type_a.e
File length: 17325 byte(s)
Diff to previous 58325


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


Revision 57781 - (view) (annotate) - [select for diffs]
Modified Mon Mar 27 17:11:27 2006 UTC (13 years, 8 months ago) by patrickr
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 17269 byte(s)
Diff to previous 57426
New compiler with new configuration system
For now only the batch compiler works


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/type_a.e
File length: 17192 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/type_a.e
File length: 17165 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/type_a.e
File length: 16052 byte(s)
Diff to previous 57173
Wrote a TYPE_A visitor.


Revision 57173 - (view) (annotate) - [select for diffs]
Modified Mon Feb 27 05:28:09 2006 UTC (13 years, 9 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 15865 byte(s)
Diff to previous 56868
Implementation of labeled tuples with a limitation which is that the identifier
  list is reduced to only one element, as it is causing the grammar to be too
  difficult. But the current implementation is fully equipped to handle multiple
  entries as soon as the parser is fixed.


Revision 56868 - (view) (annotate) - [select for diffs]
Modified Thu Feb 2 23:38:26 2006 UTC (13 years, 10 months ago) by jasonw
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 15246 byte(s)
Diff to previous 56645
Added dummy first_token and last_token in TYPE_A.

Revision 56645 - (view) (annotate) - [select for diffs]
Modified Fri Jan 20 20:26:24 2006 UTC (13 years, 10 months ago) by jasonw
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 15230 byte(s)
Diff to previous 56535
Added `fist_token' and `last_token'.

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/type_a.e
File length: 15282 byte(s)
Diff to previous 56475
Added text of the GPL license to all classes of the compiler.


Revision 56475 - (view) (annotate) - [select for diffs]
Modified Tue Jan 10 00:01:15 2006 UTC (13 years, 11 months ago) by jasonw
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 13877 byte(s)
Diff to previous 55789
Added complete_start_location and complete_end_location to give the pricise position of an AST node. And changed start_location/end_location to call the above 2 features.


Revision 55789 - (view) (annotate) - [select for diffs]
Modified Fri Nov 18 08:11:53 2005 UTC (14 years ago) by alexk
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 13889 byte(s)
Diff to previous 55787
Moved implementation of `update_dependance' together with the associated
data to the class LIKE_FEATURE to avoid reverse assignment, to reduce
class interdependance and to simplify the code.


Revision 55787 - (view) (annotate) - [select for diffs]
Modified Fri Nov 18 07:52:50 2005 UTC (14 years ago) by alexk
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 14338 byte(s)
Diff to previous 55395
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 55395 - (view) (annotate) - [select for diffs]
Modified Thu Oct 27 09:07:25 2005 UTC (14 years, 1 month ago) by alexk
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 14251 byte(s)
Diff to previous 50240
Added a check to prevent inheritance links to external classes from
expanded types.


Revision 50240 - (view) (annotate) - [select for diffs]
Modified Wed Apr 20 16:46:27 2005 UTC (14 years, 7 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 13839 byte(s)
Diff to previous 50190
Simply redefine `solved_type' as it is now defined in TYPE_AS.


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/type_a.e
File length: 13826 byte(s)
Diff to previous 49799
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 49799 - (view) (annotate) - [select for diffs]
Modified Mon Apr 4 06:37:15 2005 UTC (14 years, 8 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 13695 byte(s)
Diff to previous 49681
Removed `check_conformance' which was not used.
Added dummy implementation for `start_location' and `end_location'.
Added inheritance to SHARED_TEXT_ITEMS since it is not inherited anymore in
  AST_EIFFEL.


Revision 49681 - (view) (annotate) - [select for diffs]
Modified Thu Mar 31 15:29:30 2005 UTC (14 years, 8 months ago) by alexk
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 13986 byte(s)
Diff to previous 49374
Added a feature to get an intrinsic type of manifest constant.


Revision 49374 - (view) (annotate) - [select for diffs]
Modified Tue Mar 22 01:26:15 2005 UTC (14 years, 8 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 13841 byte(s)
Diff to previous 48688
Moved precondition of `create_info' from LIKE_FEATURE_A to TYPE_A as otherwise
  it was useless.


Revision 48688 - (view) (annotate) - [select for diffs]
Modified Wed Feb 23 20:45:08 2005 UTC (14 years, 9 months ago) by alexk
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 13780 byte(s)
Diff to previous 47808
Removed `has_formal_generic' as now it is declared in TYPE_AS.


Revision 47808 - (view) (annotate) - [select for diffs]
Modified Mon Jan 24 23:30:56 2005 UTC (14 years, 10 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 13907 byte(s)
Diff to previous 47234
Added `is_natural' for easy recognition of NATURAL_XX types.


Revision 47234 - (view) (annotate) - [select for diffs]
Modified Sat Dec 25 00:19:09 2004 UTC (14 years, 11 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 13807 byte(s)
Diff to previous 44434
Provided new class names, new feature names to entities representing
  basic types so that they are close to the new basic type names:
    real -> real_32
	double -> double_32
	float -> real_32
	long -> integer
	....


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/type_a.e
File length: 13789 byte(s)
Diff to previous 43410
Removed support for `reference' types:
  - removed `reference_actual_type'.
  - added `is_conformant_to' which enables us to find if one type inherits
    from another one in a conformant way. It is needed for checking constraint
	genericity when actual generic is an expanded and constraint is a reference.
	Before we were using `reference_actual_type.conform_to' but since we
	removed it, we need something else and this is `is_conformant_to'.


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


Revision 42625 - (view) (annotate) - [select for diffs]
Modified Fri Apr 9 02:51:57 2004 UTC (15 years, 8 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 13713 byte(s)
Diff to previous 41744
Implemented constraints that are either reference or expanded.
Added `is_reference' to help us validate that indeed the actual generic
  parameter matches a formal generic parameter declared as always be a
  reference type.


Revision 41744 - (view) (annotate) - [select for diffs]
Modified Fri Mar 5 22:16:47 2004 UTC (15 years, 9 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 13598 byte(s)
Diff to previous 40762
Now `is_true_expanded' represents an expanded type which is not basic; and
`is_expanded' states if a type is expanded or not.
Added definition of `is_external' to find if we are handling an external type.
Added definition of `reference_actual_type' in case we anchor to a basic type.
Added `is_named_type' and `is_full_named_type' to find out if we handle a type
  which does not have anchors.

Updated `check_const_gen_conformance' to use VTCG7 instead of VTCG5 as VTCG7
now covers the constraint case too.

Renamed `internal_conform_to' into `conform_to' since nd removed `in_generics'
parameter as conformance does not play a different role when used for checking
validity of generic parameters.

Removed `redeclaration_conform_to' since we should use the strict definition
of conformance for a redeclaration, not a custom made one.

Removed `heaviest' since we are now relying on the conversion mechanism and
  not on the balancing rules.

Moved `generate_constraint_error' from GEN_TYPE_A to TYPE_A. Added
`delayed_convert_constraint_check' to perform late check for checking conversion
in generic parameters.

Changed semantic of `valid_expanded_creation' to check that `default_create'
is indeed a creation procedure for a given expanded type.


Revision 40762 - (view) (annotate) - [select for diffs]
Modified Thu Dec 11 23:17:07 2003 UTC (16 years ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 11004 byte(s)
Diff to previous 39175
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 39175 - (view) (annotate) - [select for diffs]
Modified Sun Sep 21 22:44:43 2003 UTC (16 years, 2 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 11015 byte(s)
Diff to previous 37827
First imlementation of TYPED_POINTER: now all $x expression where x is a local,
argument, Current, Result or an attribute are of type TYPED_POINTER [type of x].


Revision 37827 - (view) (annotate) - [select for diffs]
Modified Fri Jun 27 22:26:49 2003 UTC (16 years, 5 months ago) by julieng
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 11004 byte(s)
Diff to previous 37662
Implement visitor feature `process' inhertied from AST_EIFFEL.


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/type_a.e
File length: 10912 byte(s)
Diff to previous 37129
Replace creation keyword with create keyword.


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


Revision 37039 - (view) (annotate) - [select for diffs]
Modified Wed Apr 30 00:03:19 2003 UTC (16 years, 7 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 11003 byte(s)
Diff to previous 36958
Added `convert_to' function to find out if a type convert to another.


Revision 36958 - (view) (annotate) - [select for diffs]
Modified Thu Apr 24 22:23:35 2003 UTC (16 years, 7 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 10769 byte(s)
Diff to previous 35178
Fixed revision tag for CVS.


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


Revision 34001 - (view) (annotate) - [select for diffs]
Modified Sat Aug 24 02:30:55 2002 UTC (17 years, 3 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 10658 byte(s)
Diff to previous 33448
A .NET class which is expanded is always valid for us even if it has more
than one creation procedure available.


Revision 33448 - (view) (annotate) - [select for diffs]
Modified Tue Aug 6 22:32:57 2002 UTC (17 years, 4 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 10571 byte(s)
Diff to previous 32562
Added export to NONE of all inherited features of SHARED_TYPE_I.


Revision 32562 - (view) (annotate) - [select for diffs]
Modified Fri Jun 21 21:06:53 2002 UTC (17 years, 5 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 10542 byte(s)
Diff to previous 32513
Fixed incorrect precondition to `heaviest'.


Revision 32513 - (view) (annotate) - [select for diffs]
Modified Mon Jun 17 23:06:17 2002 UTC (17 years, 5 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 10537 byte(s)
Diff to previous 30798
Revisited `heaviest' to make code simpler to understand and not to rely
on manifest integer values to give the `weight' (feature which has been
removed).


Revision 30798 - (view) (annotate) - [select for diffs]
Modified Thu Feb 21 02:24:00 2002 UTC (17 years, 9 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 10661 byte(s)
Diff to previous 30263
Updated to new name of `position' in AST_EIFFEL, i.e. `start_position'.


Revision 30263 - (view) (annotate) - [select for diffs]
Modified Mon Jan 21 01:35:39 2002 UTC (17 years, 10 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 10655 byte(s)
Diff to previous 30223
Removed non-used feature `set'.
Added precondition to `conform_to' and `redeclaration_conform_to'.
Use HASH_TABLE instead of EXTEND_TABLE as they are now semantically identical.


Revision 30223 - (view) (annotate) - [select for diffs]
Modified Thu Jan 17 00:51:18 2002 UTC (17 years, 10 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 10591 byte(s)
Diff to previous 30051
Added precondition to `ext_append_to'.


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/type_a.e
File length: 10528 byte(s)
Diff to previous 27514
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 27514 - (view) (annotate) - [select for diffs]
Modified Tue Sep 11 03:07:45 2001 UTC (18 years, 3 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 10415 byte(s)
Diff to previous 26913
Now LIKE_FEATURE is using a name ID instead of a STRING to represent `feature_name'.
Updated corresponding classes.


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


Revision 14875 - (view) (annotate) - [select for diffs]
Modified Mon Jun 14 00:07:48 1999 UTC (20 years, 6 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 9928 byte(s)
Diff to previous 14244
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 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/type_a.e
File length: 9379 byte(s)
Diff to previous 12233
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 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/type_a.e
File length: 9382 byte(s)
Diff to previous 11342
New implementation for routine object which can be of the form:
	~r
	~r (a,b)
	~{A}r
	~{A}r (a,b)
	~~r


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


Revision 11302 - (view) (annotate) - [select for diffs]
Modified Sun Sep 13 22:35:07 1998 UTC (21 years, 3 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 9070 byte(s)
Diff to previous 11202
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 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/type_a.e
File length: 9367 byte(s)
Diff to previous 11128
We add the TUPLE class in the compiler


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


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


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


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


Revision 3632 - (view) (annotate) - [select for diffs]
Modified Mon Jan 15 11:35:14 1996 UTC (23 years, 11 months ago) by guusl
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 9715 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/type_a.e
File length: 9710 byte(s)
Diff to previous 3182
cosmetics (indexing, feature clauses, comments)


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


Revision 3078 - (view) (annotate) - [select for diffs]
Modified Mon Oct 30 11:24:52 1995 UTC (24 years, 1 month ago) by dinov
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 9671 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/type_a.e
File length: 8796 byte(s)
Diff to previous 1167
abstract parser: <type> => <type_B>


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/type_a.e
File length: 8792 byte(s)
Diff to previous 605
case stuff


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


Revision 411 - (view) (annotate) - [select for diffs]
Modified Tue Nov 2 18:51:32 1993 UTC (26 years, 1 month ago) by grator
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 8397 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/type_a.e
File length: 8294 byte(s)
Diff to previous 388
*** empty log message ***


Revision 388 - (view) (annotate) - [select for diffs]
Modified Fri Oct 15 14:29:26 1993 UTC (26 years, 2 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 8156 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/type_a.e
File length: 7701 byte(s)
Diff to previous 329
*** empty log message ***


Revision 329 - (view) (annotate) - [select for diffs]
Modified Thu Aug 26 19:17:21 1993 UTC (26 years, 3 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 7608 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/type_a.e
File length: 7231 byte(s)
Diff to previous 280
*** empty log message ***


Revision 280 - (view) (annotate) - [select for diffs]
Modified Fri Jul 16 13:31:07 1993 UTC (26 years, 5 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 7087 byte(s)
Diff to previous 240
*** empty log message ***


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


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


Revision 214 - (view) (annotate) - [select for diffs]
Modified Fri May 28 11:07:19 1993 UTC (26 years, 6 months ago) by grator
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/type_a.e
File length: 6905 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/type_a.e
File length: 6864 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/type_a.e
File length: 6402 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