| // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| /// @assertion A script is a library whose exported namespace includes a |
| /// top-level function main(). |
| /// |
| /// libraryDefinition: |
| /// scriptTag? libraryName? importOrImport* partDirective* topLevelDefinition* |
| /// ; |
| /// topLevelDefinition: |
| /// classDefinition | |
| /// enumType | |
| /// typeAlias | |
| /// external? functionSignature ‘;’ | |
| /// external? getterSignature ‘;’ | |
| /// external? setterSignature ‘;’ | |
| /// functionSignature functionBody | |
| /// returnType? get identifier functionBody | |
| /// returnType? set identifier formalParameterList functionBody | |
| /// (final | const) type? staticFinalDeclarationList ‘;’ | |
| /// variableDeclaration ‘;’ |
| /// ; |
| /// @description Checks that a script with valid top level definitions is parsed |
| /// without errors. |
| /// @author msyabro |
| /// @issue 42392 |
| |
| |
| abstract class I {} |
| abstract class J<T> {} |
| |
| class A {} |
| class B extends A {} |
| class C implements I {} |
| class D implements J<String> {} |
| |
| f() {} |
| g(p1, p2) => p1 + p2; |
| A h([p1, p2]) { |
| return new A(); |
| } |
| |
| typedef typeF(); |
| typedef int typeG(); |
| typedef void typeH(p1, p2); |
| |
| external int extFunc(bool); |
| external int get extGetter; |
| external void set extSetter(int x); |
| |
| final x = 'x'; |
| String y = 'y'; |
| var z; |
| |
| int? a, b; |
| int c = 1; |
| |
| get _x {} |
| set _y(p) {} |
| |
| main() { |
| new A(); |
| new B(); |
| new C(); |
| new D(); |
| |
| f(); |
| g(1, 2); |
| h('', ""); |
| |
| typeF funcF = () => 1; |
| typeG funcG = () { throw "Error"; }; |
| typeH funcH = (p1, p2) {}; |
| |
| x; |
| y; |
| z; |
| a; |
| b; |
| c; |
| |
| _x; |
| _y = 1; |
| } |