CHANGES.md lists intentional changes between the Strada (Typescript) and Corsa (Go) compilers.
- Node positions use UTF8 offsets from the beginning of the file, not UTF16 offsets. Node positions in files with non-ASCII characters will be greater than before.
- Source files do not contain an EndOfFile token as their last child.
- Malformed
...T?at the end of a tuple now fails with a parse error instead of a grammar error. - Malformed string ImportSpecifiers (
import x as "OOPS" from "y") now contain the string's text instead of an empty identifier. - Empty binding elements no longer have a separate kind for OmittedExpression. Instead they have Kind=BindingElement with a nil Initialiser, Name and DotDotDotToken.
- ShorthandPropertyAssignment no longer includes an EqualsToken as a child when it has an ObjectAssignmentInitializer.
- JSDoc nodes now include leading whitespace in their location.
- The parser always parses a JSDocText node for comments in JSDoc.
stringis no longer part of the type ofcomment. - In cases where Strada did produce a JSDocText node, Corsa no longer (incorrectly) includes all leading and trailing whitespace/asterisks, as well as initial
/**. - JSDocMemberName is now parsed as QualifiedName. These two nodes previously only differed by type, and now QualifiedName has a much less restrictive type for its left child.
JSDoc types are parsed in normal type annotation position but show a grammar error. Corsa no longer parses the JSDoc types below, giving a parse error instead of a grammar error.
- No postfix
T?andT!types. Prefix?Tand!Tare still parsed and!Tcontinues to have no semantics. - No Closure
function(string,string): voidtypes. - No JSDoc standalone
?type. - No JSDoc module namepaths:
module:folder/file.C
Corsa no longer parses the following JSDoc tags with a specific node type. They now parse as generic JSDocTag nodes.
@class@throws@author@enum