Cf. language issue #1341: The grammar rule in Dart.g for <metadata> is
wrong, it does not allow `@x` where `x` is the name of a variable
which is not a `<typeIdentifier>` (in particular, a variable can have
a name like `required` even though it's a built-in identifier).
This CL changes `qualifiedName` such that it only includes the cases
with a '.', and then the remaining case is added where `qualifiedName`
is used. We add `identifier` in `metadata` such that it allows
`@required` and such, and we add `typeIdentifier` in
`constructorDesignation`, because that's required to be an import
prefix or a class name, which are both `typeIdentifier`s.
Change-Id: Ia22d9d9842b995c4ebaa8e18e1c2ccbce1c30e62
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/174540
Commit-Queue: Erik Ernst <eernst@google.com>
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
This CL updates the spec_parser grammar Dart.g such that it corresponds
more precisely to the grammar in the language specification.
Main corrections:
fieldFormalParameter now allows `?` on the parameter type.
cascade was reorganized in the spec, Dart.g now reorganized similarly.
`?` removed from argumentPart (we did not add null-aware invocation)
Other changes were mainly renamings and simplifications of rules, to
make them more similar to the version in the specification.
Change-Id: I1a9bc0097fe6b260dfa6657c947840f2deb437b3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/167805
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Commit-Queue: Erik Ernst <eernst@google.com>
This CL adds tests in language/external_abstract_fields, testing the
support for abstract instance variables, and for external top-level,
class, and instance variables. It is tested that the syntax of
supported declarations is accepted, and a number of non-supported
forms are rejected, and abstract fields are tested at run time as well.
The implementation of external fields is provided by an implementation
specific mechanism, and no tests are added for any such mechanisms
(that is, with external fields we only test errors).
This CL also updates the spec grammar Dart.g to include grammar
rules for the new kinds of declarations, and it has been verified that
the new tests are passing, respectively cause syntax errors, as
indicated in the test files.
The tests are a further development of the ones in
https://dart-review.googlesource.com/c/sdk/+/145862.
Change-Id: I13be746a05d5acf0117d8cb22151bd9863a71a78
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/148324
Commit-Queue: Erik Ernst <eernst@google.com>
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Update spec_parser to enable configurableUri in deferred imports,
make cascade syntax compositional, include `extension` declarations,
add `late` as a built-in identifier, and reorder the lexical rules for
single words such that they are grouped into reserved words, built-in
identifiers, and "other words known by the grammar".
Cf. language issue #615, #627, #628, #638.
Change-Id: If60b2ba2ca0e7d4bbc9b4e886857f657fb14c809
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/121991
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Commit-Queue: Erik Ernst <eernst@google.com>
This CL makes several adjustments to the spec_parser grammar Dart.g,
such that the spec_parser can parse the proposed NNBD constructs,
cf. language PR #293.
Change-Id: Ieec00259d73b6037d6a87d5c97cfac40186baef0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/101500
Reviewed-by: Leaf Petersen <leafp@google.com>
Commit-Queue: Erik Ernst <eernst@google.com>