-
Notifications
You must be signed in to change notification settings - Fork 82
Phasing out annotation syntax #2745
Copy link
Copy link
Open
Description
Annotation syntax still exists. Their semantics is (almost) simulated by the interpreter using keyword fields under the hood. The Tree@\loc annotation is simulated by the Tree.src keyword field. The default throws NoSuchAnnotation.
This is the sequential plan to finally remove all declarations and uses of annotation syntax:
- Rewrite all annotations in the standard library to keyword fields. There is a tool for this ready. Test and integration tests should succeed.
- Make a BOOT release of the rascal project
- Rewrite all annotations in the typepal project
- Make a BOOT release of typepal depending on the BOOT release of rascal
- Make rascal depend on the BOOT release of typepal
- Make a normal RC release of rascal
- Bump the release of rascal in typepal to the RC release
- release typepal with an RC number
- bump to this release of typepal in the rascal project
- Change the checker to report errors for uses and declarations of annotations. Not only deprecation warnings anymore. do not show errors for annotation uses not declared in the current project, only a warning, unless their declarations have been replaced by keyword fields already. Then it's still an error. This is to allow maintenance on projects that use other projects which have yet to be fixed.
- Connect the transformation tool to the quick fix feature of the Rascal ide. It will rewrite all declarations and uses of the entire project in one go, per project.
- Release rascal and the ide with the above features.
- Apply the fixes to all library projects under our care, using the ide. Release them.
- Wait a year and several releases.
- Remove the semantics for annotation syntax from the interpreter and the compiler. The syntax will stay to accommodate proper error messages.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels