/[eiffelstudio]/branches/eth/eve/Src/Eiffel/API/evaluated_type/visitor
ViewVC logotype

Log of /branches/eth/eve/Src/Eiffel/API/evaluated_type/visitor

View Directory Listing Directory Listing


Sticky Revision:

Revision 94983 - Directory Listing
Modified Fri May 2 11:05:28 2014 UTC (5 years, 7 months ago) by jasonw
<<Merged from trunk#94978.>>

Revision 94740 - Directory Listing
Modified Fri Mar 28 09:42:08 2014 UTC (5 years, 8 months ago) by jasonw
<<Merged from trunk#94739.>>

Revision 94581 - Directory Listing
Modified Fri Mar 7 11:57:58 2014 UTC (5 years, 9 months ago) by jasonw
<<Merged from trunk#94580.>>

Revision 93780 - Directory Listing
Modified Fri Dec 20 15:08:05 2013 UTC (5 years, 11 months ago) by jasonw
<<Merged from trunk#93779.>>

Revision 93635 - Directory Listing
Modified Fri Dec 6 07:00:12 2013 UTC (6 years ago) by jasonw
<<Merged from trunk#93634.>>

Revision 92782 - Directory Listing
Modified Fri Jul 5 06:01:58 2013 UTC (6 years, 5 months ago) by jasonw
<<Merged from trunk#92781.>>

Revision 92723 - Directory Listing
Modified Fri Jun 21 07:47:04 2013 UTC (6 years, 5 months ago) by jasonw
<<Merged from trunk#92722.>>

Revision 92684 - Directory Listing
Modified Fri Jun 7 15:28:53 2013 UTC (6 years, 6 months ago) by jasonw
<<Merged from trunk#92682.>>

Revision 92499 - Directory Listing
Modified Fri Apr 26 23:06:21 2013 UTC (6 years, 7 months ago) by jasonw
<<Merged from trunk#92492.>>

Revision 92434 - Directory Listing
Modified Fri Apr 12 10:41:30 2013 UTC (6 years, 7 months ago) by jasonw
<<Merged from trunk#92433.>>

Revision 91379 - Directory Listing
Modified Fri Mar 15 08:48:07 2013 UTC (6 years, 8 months ago) by jasonw
<<Merged from trunk#91375.>>

Revision 89347 - Directory Listing
Modified Fri Aug 10 15:09:25 2012 UTC (7 years, 3 months ago) by jasonw
<<Merged from trunk#89346.>>

Revision 87220 - Directory Listing
Modified Thu Sep 15 08:09:35 2011 UTC (8 years, 2 months ago) by jasonw
<<Merged from trunk#87219.>>

Revision 84268 - Directory Listing
Modified Tue Aug 24 14:02:11 2010 UTC (9 years, 3 months ago) by jasonw
<<Merged from trunk#84267.>>

Revision 83928 - Directory Listing
Modified Fri Jul 16 15:21:01 2010 UTC (9 years, 4 months ago) by mpei
<<Merged from trunk#83927>>

Revision 83594 - Directory Listing
Modified Thu Jun 17 09:23:33 2010 UTC (9 years, 5 months ago) by julian
<<Merged from trunk#83593.>>

Revision 83524 - Directory Listing
Modified Fri Jun 11 08:12:14 2010 UTC (9 years, 6 months ago) by jasonw
<<Merged from trunk#83523.>>

Revision 83445 - Directory Listing
Modified Sat Jun 5 15:29:40 2010 UTC (9 years, 6 months ago) by jasonw
<<Merged from trunk@83442.>>

Revision 83441 - Directory Listing
Modified Sat Jun 5 13:52:53 2010 UTC (9 years, 6 months ago) by jasonw
Renamed branch eve3 to eve. The eve branch serves as the new branch for the EVE project.

Revision 83331 - Directory Listing
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/visitor
<<Breanched from trunk@83330>> Created a branch to upgrade Eiffel Transform library to trunk.

Revision 83052 - Directory Listing
Modified Mon May 3 15:51:44 2010 UTC (9 years, 7 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/visitor
Supported qualified anchored types that involve generic types.
Changed processing in {TYPE_A_CHECKER} to support qualified types when
context type may be different from the current class which affects
evaluation of `like Current' and formal generics and fixes test#anchor006
and test#anchor007.
Registered intermediate types during processing in {TYPE_A_CHECKER} so that
they are available when the code is generated.
Recorded context class ID in {QUALIFIED_ACNHORED_TYPE_A} to allow creation
of {CREATE_QUALIFIED} without any additional context when generating type
tables in finalized mode.
Added a class {TYPE_A_FEATURE_FINDER} to factor out the general need to
find a feature in a given type that might be not that straightforward when
the type is anchored, a formal generic parameter or even a formal generic
parameter with multiple constraints.
Corrected {QUALIFIED_ACNHORED_TYPE_A}.evaluated_type_in_descendant that did
not work quite well for generic types, now it uses {TYPE_A_FEATURE_FINDER}.
Used {TYPE_A_FEATURE_FINDER} to initialize {CREATE_QUALIFIED} correctly.
Redefined `generate_gen_type_conversion' and `is_generic' in
{CREATE_QUALIFIED} since it depends on both qualifier and current type.


Revision 83034 - Directory Listing
Modified Sun May 2 05:18:53 2010 UTC (9 years, 7 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/visitor
Corrected class description and added a feature clause comment for visitor routines.

Revision 82736 - Directory Listing
Modified Thu Apr 1 05:19:53 2010 UTC (9 years, 8 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/visitor
Cosmetics: fixed wrong identation.


Revision 82735 - Directory Listing
Modified Thu Apr 1 05:13:43 2010 UTC (9 years, 8 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/visitor
Merged REAL_32_A and REAL_64_A into REAL_A for simplicity and letting us add a new descendant MANIFEST_REAL_A to represent the type of manifest real type. That way we can assign a manifest real to either a REAL_32 or a REAL_64 (this is done the same way as we do for manifest integer/naturals).
The next thing to do is to validate the value to ensure that it fits on either a REAL_32 or REAL_64 but this won't be done now.


Revision 82731 - Directory Listing
Modified Wed Mar 31 20:43:06 2010 UTC (9 years, 8 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/visitor
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 82434 - Directory Listing
Modified Thu Feb 25 17:45:30 2010 UTC (9 years, 9 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/visitor
Removed usage of {SPECIAL}.do_all_in_bounds since it does not in non-experimental mode.


Revision 82277 - Directory Listing
Modified Sun Feb 7 10:23:57 2010 UTC (9 years, 10 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/visitor
Supported type checking (except code generation for creation and object
test) for qualified anchored types.
Supported structured output for qualified anchored types.
Simplified interface and logic behind detection of cyclic anchors.


Revision 81128 - Directory Listing
Modified Sat Oct 10 03:44:57 2009 UTC (10 years, 2 months ago) by tedf
Original Path: trunk/Src/Eiffel/API/evaluated_type/visitor
- Removed duplicated code AST_OUTPUT_HELPER. Use the code from E_FEATURE instead.
- Use `infix_symbol' and `prefix_symbol' instead of the extracting methods.
- Print alias name based on the feature rather than the AS. Because the feature could be renamed.

Revision 80802 - Directory Listing
Modified Tue Sep 22 16:05:45 2009 UTC (10 years, 2 months ago) by tedf
Original Path: trunk/Src/Eiffel/API/evaluated_type/visitor
- Extracted routine for printing infix/prefix feature name, and use that for interval as and anchored type.
- Left name of unqualified infix/prefix feature call as it is, rather than trying to make it a qualified call `@ Current'. See discussion at http://eiffelstudio.origo.ethz.ch/node/311

Revision 80744 - Directory Listing
Modified Thu Sep 17 07:30:16 2009 UTC (10 years, 2 months ago) by tedf
Original Path: trunk/Src/Eiffel/API/evaluated_type/visitor
Added infix/prefix formatting for anchored type. Fixed bug#11356.

Revision 77703 - Directory Listing
Modified Wed Mar 11 23:59:15 2009 UTC (10 years, 9 months ago) by paulb
Original Path: trunk/Src/Eiffel/API/evaluated_type/visitor
Replaced documentation generation of !/? marks with attached/detachable.


Revision 76432 - Directory Listing
Modified Mon Dec 29 23:41:59 2008 UTC (10 years, 11 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/visitor
Removal of `is' keyword.
Replacement of `is' by `=' for constant definitions.
Replaced `indexing' by `note'.


Revision 75211 - Directory Listing
Modified Tue Oct 21 16:43:16 2008 UTC (11 years, 1 month ago) by king
Original Path: trunk/Src/Eiffel/API/evaluated_type/visitor
Updated to work with non-conforming routines, if a feature has a replicated AST then we retrieve the generic information from its written class

Revision 72419 - Directory Listing
Modified Sat Feb 23 00:45:27 2008 UTC (11 years, 9 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/visitor
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 71150 - Directory Listing
Modified Wed Nov 14 19:34:34 2007 UTC (12 years ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/visitor
Supported attachment marks for formal generic parameter (in internal
structures only).
Refactored types that can have attachment marks into a separate class.
Fixed issue when "like Current" was not considered as attached even when
compiling with an option "is_attached_by_default".
Taken into account attachment status when comparing types for equality.
Made TUPLE type in an agent type (PROCEDURE or FUNCTION) attached in
void-safe context, so that it conforms to the usual type declaration.
Ensured actual type preserves attachment status of the corresponding
anchored type.


Revision 70927 - Directory Listing
Modified Sat Oct 27 08:44:50 2007 UTC (12 years, 1 month ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/visitor
Removed a space after an attachment mark.

Revision 69973 - Directory Listing
Modified Tue Aug 14 19:15:39 2007 UTC (12 years, 3 months ago) by alexk
Original Path: trunk/Src/Eiffel/API/evaluated_type/visitor
Promoted attachment properties to descendants of TYPE_A.

Revision 68589 - Directory Listing
Modified Tue May 22 23:48:04 2007 UTC (12 years, 6 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/visitor
Put the routines in alphabetical order (process_renamed_type_a).


Revision 68089 - Directory Listing
Modified Thu May 3 18:36:31 2007 UTC (12 years, 7 months ago) by martins
Original Path: trunk/Src/Eiffel/API/evaluated_type/visitor
Refactored RENAMED_TYPE_A to RENAMED_TYPE [G -> TYPE_A]
This change allows us to program type safe if possible.

Revision 67875 - Directory Listing
Modified Wed Apr 18 00:40:15 2007 UTC (12 years, 7 months ago) by martins
Original Path: trunk/Src/Eiffel/API/evaluated_type/visitor
Further adapted refactoring away from EXTENDED_TYPE_A to RENAMED_TYPE_A.

Revision 67862 - Directory Listing
Modified Tue Apr 17 02:11:27 2007 UTC (12 years, 7 months ago) by martins
Original Path: trunk/Src/Eiffel/API/evaluated_type/visitor
* 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 67227 - Directory Listing
Modified Tue Mar 13 01:32:16 2007 UTC (12 years, 9 months ago) by martins
Original Path: trunk/Src/Eiffel/API/evaluated_type/visitor
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 65165 - Directory Listing
Modified Tue Nov 21 01:36:22 2006 UTC (13 years ago) by patrickr
Original Path: trunk/Src/Eiffel/API/evaluated_type/visitor
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 63743 - Directory Listing
Modified Wed Sep 20 21:19:03 2006 UTC (13 years, 2 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/visitor
Removed `process_generic_in_type' because it was useless. Indeed the code was made to solve the case
  were in the ancestor you have a formal and in the current class it is not. But here we always
  process a type in a class. Therefore when we have a formal it is still a formal and no special
  handling is required.
  This fixes eweasel test#term043, test#term050 and test#incr157 because sometime we can call
  this visitor for processing types that did not go through degree 4 yet.


Revision 63687 - Directory Listing
Modified Tue Sep 19 00:29:36 2006 UTC (13 years, 2 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/visitor
Use the name from `l_feat' since it is the proper one when a feature is
  being renamed in a descendand. Fixes bug#11306.


Revision 63558 - Directory Listing
Modified Thu Sep 14 00:07:41 2006 UTC (13 years, 2 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/visitor
Fixed bug#11182 where if a constraint of a class had generics, they would not be shown
  in the descendant/ancestor format as well as in error messages for that class. Now
  we made AST_TYPE_OUTPUT_STRATEGY one of the stateless visitor and updated the
  AST_DECORATED_OUTPUT_STRATEGY to use its new interface.
  And finally we use AST_TYPE_OUTPUT_STRATEGY in FORMAL_CONSTRAINT_AS to properly
  display the constraint type.


Revision 63452 - Directory Listing
Modified Mon Sep 11 01:52:29 2006 UTC (13 years, 3 months ago) by jasonw
Original Path: trunk/Src/Eiffel/API/evaluated_type/visitor
Fixed a bug that keyword "BIT" is not colored in class/feature browser and in feature flat form.

Revision 59042 - Directory Listing
Modified Wed May 17 22:28:03 2006 UTC (13 years, 6 months ago) by tedf
Original Path: trunk/Src/Eiffel/API/evaluated_type/visitor
Fixed a bug that a named tuple type should have a semi-colon between type entries rather than a comma.

Revision 58325 - Directory Listing
Modified Thu Apr 20 16:05:16 2006 UTC (13 years, 7 months ago) by manus
Original Path: trunk/Src/Eiffel/API/evaluated_type/visitor
Moved trunk/Src/bench/Eiffel to trunk/Src/Eiffel.

Revision 58027 - Directory Listing
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/visitor
Fixed mixing paranthesis in indexing clause for the licensing.
Added missing license reference in newly created Eiffel classes.


Revision 57484 - Directory Listing
Modified Wed Mar 15 23:05:12 2006 UTC (13 years, 8 months ago) by tedf
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/visitor
After compilation errors occur, we do not have routine id correctly set and some classes are missing. In this case, we do not evaluate types, but send simple text to output.
Fixed a bug in CLICKABLE_TEXT that sometimes the last line did not appear after processing as a text formatter.

Revision 57426 - Directory Listing
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/visitor
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 - Directory Listing
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/visitor
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 - Directory Listing
Added Thu Mar 2 01:57:13 2006 UTC (13 years, 9 months ago) by manus
Original Path: trunk/Src/bench/Eiffel/API/evaluated_type/visitor
Wrote a TYPE_A visitor.


  ViewVC Help
Powered by ViewVC 1.1.23