| // Copyright (c) 2015, 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. |
| |
| part of dart2js.semantics_visitor_test; |
| |
| const Map<String, List<Test>> DECL_TESTS = const { |
| 'Function declarations': const [ |
| const Test( |
| ''' |
| m(a, b) {} |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_DECL, |
| element: 'function(m)', |
| parameters: '(a,b)', |
| body: '{}'), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(m#a)', |
| index: 0), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(m#b)', |
| index: 1), |
| ]), |
| const Test( |
| ''' |
| m(a, [b]) {} |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_DECL, |
| element: 'function(m)', |
| parameters: '(a,[b])', |
| body: '{}'), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(m#a)', |
| index: 0), |
| const Visit(VisitKind.VISIT_OPTIONAL_PARAMETER_DECL, |
| element: 'parameter(m#b)', |
| index: 1, |
| constant: 'null'), |
| ]), |
| const Test( |
| ''' |
| m(a, [b = null]) {} |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_DECL, |
| element: 'function(m)', |
| parameters: '(a,[b=null])', |
| body: '{}'), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(m#a)', |
| index: 0), |
| const Visit(VisitKind.VISIT_OPTIONAL_PARAMETER_DECL, |
| element: 'parameter(m#b)', |
| constant: 'null', |
| index: 1), |
| ]), |
| const Test( |
| ''' |
| m(a, [b = 42]) {} |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_DECL, |
| element: 'function(m)', |
| parameters: '(a,[b=42])', |
| body: '{}'), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(m#a)', |
| index: 0), |
| const Visit(VisitKind.VISIT_OPTIONAL_PARAMETER_DECL, |
| element: 'parameter(m#b)', |
| constant: 42, |
| index: 1), |
| ]), |
| const Test( |
| ''' |
| m(a, {b}) {} |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_DECL, |
| element: 'function(m)', |
| parameters: '(a,{b})', |
| body: '{}'), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(m#a)', |
| index: 0), |
| const Visit(VisitKind.VISIT_NAMED_PARAMETER_DECL, |
| element: 'parameter(m#b)', |
| constant: 'null'), |
| ]), |
| const Test( |
| ''' |
| m(a, {b: null}) {} |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_DECL, |
| element: 'function(m)', |
| parameters: '(a,{b: null})', |
| body: '{}'), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(m#a)', |
| index: 0), |
| const Visit(VisitKind.VISIT_NAMED_PARAMETER_DECL, |
| element: 'parameter(m#b)', |
| constant: 'null'), |
| ]), |
| const Test( |
| ''' |
| m(a, {b:42}) {} |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_DECL, |
| element: 'function(m)', |
| parameters: '(a,{b: 42})', |
| body: '{}'), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(m#a)', |
| index: 0), |
| const Visit(VisitKind.VISIT_NAMED_PARAMETER_DECL, |
| element: 'parameter(m#b)', |
| constant: 42), |
| ]), |
| const Test( |
| ''' |
| get m => null; |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_TOP_LEVEL_GETTER_DECL, |
| element: 'getter(m)', |
| body: '=>null;'), |
| ]), |
| const Test( |
| ''' |
| set m(a) {} |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_TOP_LEVEL_SETTER_DECL, |
| element: 'setter(m)', |
| parameters: '(a)', |
| body: '{}'), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(m#a)', |
| index: 0), |
| ]), |
| const Test.clazz( |
| ''' |
| class C { |
| static m(a, b) {} |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_STATIC_FUNCTION_DECL, |
| element: 'function(C#m)', |
| parameters: '(a,b)', |
| body: '{}'), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(m#a)', |
| index: 0), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(m#b)', |
| index: 1), |
| ]), |
| const Test.clazz( |
| ''' |
| class C { |
| static get m => null; |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_STATIC_GETTER_DECL, |
| element: 'getter(C#m)', |
| body: '=>null;'), |
| ]), |
| const Test.clazz( |
| ''' |
| class C { |
| static set m(a) {} |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_STATIC_SETTER_DECL, |
| element: 'setter(C#m)', |
| parameters: '(a)', |
| body: '{}'), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(m#a)', |
| index: 0), |
| ]), |
| const Test.clazz( |
| ''' |
| class C { |
| m(a, b) {} |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_INSTANCE_METHOD_DECL, |
| element: 'function(C#m)', |
| parameters: '(a,b)', |
| body: '{}'), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(m#a)', |
| index: 0), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(m#b)', |
| index: 1), |
| ]), |
| const Test.clazz( |
| ''' |
| class C { |
| get m => null; |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_INSTANCE_GETTER_DECL, |
| element: 'getter(C#m)', |
| body: '=>null;'), |
| ]), |
| const Test.clazz( |
| ''' |
| class C { |
| set m(a) {} |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_INSTANCE_SETTER_DECL, |
| element: 'setter(C#m)', |
| parameters: '(a)', |
| body: '{}'), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(m#a)', |
| index: 0), |
| ]), |
| const Test.clazz( |
| ''' |
| abstract class C { |
| m(a, b); |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_ABSTRACT_METHOD_DECL, |
| element: 'function(C#m)', |
| parameters: '(a,b)'), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(m#a)', |
| index: 0), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(m#b)', |
| index: 1), |
| ]), |
| const Test.clazz( |
| ''' |
| abstract class C { |
| get m; |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_ABSTRACT_GETTER_DECL, |
| element: 'getter(C#m)'), |
| ]), |
| const Test.clazz( |
| ''' |
| abstract class C { |
| set m(a); |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_ABSTRACT_SETTER_DECL, |
| element: 'setter(C#m)', |
| parameters: '(a)'), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(m#a)', |
| index: 0), |
| ]), |
| const Test( |
| ''' |
| m(a, b) {} |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_DECL, |
| element: 'function(m)', |
| parameters: '(a,b)', |
| body: '{}'), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(m#a)', |
| index: 0), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(m#b)', |
| index: 1), |
| ]), |
| const Test( |
| ''' |
| m() { |
| local(a, b) {} |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_DECL, |
| element: 'function(m)', |
| parameters: '()', |
| body: '{local(a,b){}}'), |
| const Visit(VisitKind.VISIT_LOCAL_FUNCTION_DECL, |
| element: 'function(m#local)', |
| parameters: '(a,b)', |
| body: '{}'), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(local#a)', |
| index: 0), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(local#b)', |
| index: 1), |
| ]), |
| const Test( |
| ''' |
| m() => (a, b) {}; |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_DECL, |
| element: 'function(m)', |
| parameters: '()', |
| body: '=>(a,b){};'), |
| const Visit(VisitKind.VISIT_CLOSURE_DECL, |
| element: 'function(m#)', |
| parameters: '(a,b)', |
| body: '{}'), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(#a)', |
| index: 0), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(#b)', |
| index: 1), |
| ]), |
| ], |
| 'Constructor declarations': const [ |
| const Test.clazz( |
| ''' |
| class C { |
| C(a, b); |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_GENERATIVE_CONSTRUCTOR_DECL, |
| element: 'generative_constructor(C#)', |
| parameters: '(a,b)', |
| body: ';'), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(#a)', |
| index: 0), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(#b)', |
| index: 1), |
| const Visit(VisitKind.VISIT_IMPLICIT_SUPER_CONSTRUCTOR_INVOKE, |
| element: 'generative_constructor(Object#)', |
| type: 'Object'), |
| ], |
| method: ''), |
| const Test.clazz( |
| ''' |
| class C { |
| var b; |
| C(a, this.b); |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_GENERATIVE_CONSTRUCTOR_DECL, |
| element: 'generative_constructor(C#)', |
| parameters: '(a,this.b)', |
| body: ';'), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(#a)', |
| index: 0), |
| const Visit(VisitKind.VISIT_REQUIRED_INITIALIZING_FORMAL_DECL, |
| element: 'initializing_formal(#b)', |
| index: 1), |
| const Visit(VisitKind.VISIT_IMPLICIT_SUPER_CONSTRUCTOR_INVOKE, |
| element: 'generative_constructor(Object#)', |
| type: 'Object'), |
| ], |
| method: ''), |
| const Test.clazz( |
| ''' |
| class C { |
| var b; |
| C(a, [this.b = 42]); |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_GENERATIVE_CONSTRUCTOR_DECL, |
| element: 'generative_constructor(C#)', |
| parameters: '(a,[this.b=42])', |
| body: ';'), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(#a)', |
| index: 0), |
| const Visit(VisitKind.VISIT_OPTIONAL_INITIALIZING_FORMAL_DECL, |
| element: 'initializing_formal(#b)', |
| constant: 42, |
| index: 1), |
| const Visit(VisitKind.VISIT_IMPLICIT_SUPER_CONSTRUCTOR_INVOKE, |
| element: 'generative_constructor(Object#)', |
| type: 'Object'), |
| ], |
| method: ''), |
| const Test.clazz( |
| ''' |
| class C { |
| var b; |
| C(a, {this.b: 42}); |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_GENERATIVE_CONSTRUCTOR_DECL, |
| element: 'generative_constructor(C#)', |
| parameters: '(a,{this.b: 42})', |
| body: ';'), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(#a)', |
| index: 0), |
| const Visit(VisitKind.VISIT_NAMED_INITIALIZING_FORMAL_DECL, |
| element: 'initializing_formal(#b)', |
| constant: 42), |
| const Visit(VisitKind.VISIT_IMPLICIT_SUPER_CONSTRUCTOR_INVOKE, |
| element: 'generative_constructor(Object#)', |
| type: 'Object'), |
| ], |
| method: ''), |
| const Test.clazz( |
| ''' |
| class C { |
| C(a, b) : super(); |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_GENERATIVE_CONSTRUCTOR_DECL, |
| element: 'generative_constructor(C#)', |
| parameters: '(a,b)', |
| body: ';'), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(#a)', |
| index: 0), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(#b)', |
| index: 1), |
| const Visit(VisitKind.VISIT_SUPER_CONSTRUCTOR_INVOKE, |
| element: 'generative_constructor(Object#)', |
| type: 'Object', |
| arguments: '()', |
| selector: 'CallStructure(arity=0)'), |
| ], |
| method: ''), |
| const Test.clazz( |
| ''' |
| class C { |
| var field; |
| C(a, b) : this.field = a; |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_GENERATIVE_CONSTRUCTOR_DECL, |
| element: 'generative_constructor(C#)', |
| parameters: '(a,b)', |
| body: ';'), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(#a)', |
| index: 0), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(#b)', |
| index: 1), |
| const Visit(VisitKind.VISIT_FIELD_INITIALIZER, |
| element: 'field(C#field)', |
| rhs: 'a'), |
| const Visit(VisitKind.VISIT_IMPLICIT_SUPER_CONSTRUCTOR_INVOKE, |
| element: 'generative_constructor(Object#)', |
| type: 'Object'), |
| ], |
| method: ''), |
| const Test.clazz( |
| ''' |
| class C { |
| var field1; |
| var field2; |
| C(a, b) : this.field1 = a, this.field2 = b; |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_GENERATIVE_CONSTRUCTOR_DECL, |
| element: 'generative_constructor(C#)', |
| parameters: '(a,b)', |
| body: ';'), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(#a)', |
| index: 0), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(#b)', |
| index: 1), |
| const Visit(VisitKind.VISIT_FIELD_INITIALIZER, |
| element: 'field(C#field1)', |
| rhs: 'a'), |
| const Visit(VisitKind.VISIT_FIELD_INITIALIZER, |
| element: 'field(C#field2)', |
| rhs: 'b'), |
| const Visit(VisitKind.VISIT_IMPLICIT_SUPER_CONSTRUCTOR_INVOKE, |
| element: 'generative_constructor(Object#)', |
| type: 'Object'), |
| ], |
| method: ''), |
| const Test.clazz( |
| ''' |
| class C { |
| C(a, b) : this._(a, b); |
| C._(a, b); |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_REDIRECTING_GENERATIVE_CONSTRUCTOR_DECL, |
| element: 'generative_constructor(C#)', |
| parameters: '(a,b)', |
| initializers: ':this._(a,b)'), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(#a)', |
| index: 0), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(#b)', |
| index: 1), |
| const Visit(VisitKind.VISIT_THIS_CONSTRUCTOR_INVOKE, |
| element: 'generative_constructor(C#_)', |
| arguments: '(a,b)', |
| selector: 'CallStructure(arity=2)'), |
| ], |
| method: ''), |
| const Test.clazz( |
| ''' |
| class C { |
| factory C(a, b) => null; |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_FACTORY_CONSTRUCTOR_DECL, |
| element: 'function(C#)', |
| parameters: '(a,b)', |
| body: '=>null;'), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(#a)', |
| index: 0), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(#b)', |
| index: 1), |
| ], |
| method: ''), |
| const Test.clazz( |
| ''' |
| class C { |
| factory C(a, b) = C._; |
| C._(a, b); |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_REDIRECTING_FACTORY_CONSTRUCTOR_DECL, |
| element: 'function(C#)', |
| parameters: '(a,b)', |
| target: 'generative_constructor(C#_)', |
| type: 'C'), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(#a)', |
| index: 0), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(#b)', |
| index: 1), |
| ], |
| method: ''), |
| const Test.clazz( |
| ''' |
| class C { |
| factory C(a, b) = D; |
| } |
| class D<T> { |
| D(a, b); |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_REDIRECTING_FACTORY_CONSTRUCTOR_DECL, |
| element: 'function(C#)', |
| parameters: '(a,b)', |
| target: 'generative_constructor(D#)', |
| type: 'D'), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(#a)', |
| index: 0), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(#b)', |
| index: 1), |
| ], |
| method: ''), |
| const Test.clazz( |
| ''' |
| class C { |
| factory C(a, b) = D<int>; |
| } |
| class D<T> { |
| D(a, b); |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_REDIRECTING_FACTORY_CONSTRUCTOR_DECL, |
| element: 'function(C#)', |
| parameters: '(a,b)', |
| target: 'generative_constructor(D#)', |
| type: 'D<int>'), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(#a)', |
| index: 0), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(#b)', |
| index: 1), |
| ], |
| method: ''), |
| const Test.clazz( |
| ''' |
| class C { |
| factory C(a, b) = D<int>; |
| } |
| class D<T> { |
| factory D(a, b) = E<D<T>>; |
| } |
| class E<S> { |
| E(a, b); |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_REDIRECTING_FACTORY_CONSTRUCTOR_DECL, |
| element: 'function(C#)', |
| parameters: '(a,b)', |
| target: 'function(D#)', |
| type: 'D<int>'), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(#a)', |
| index: 0), |
| const Visit(VisitKind.VISIT_REQUIRED_PARAMETER_DECL, |
| element: 'parameter(#b)', |
| index: 1), |
| ], |
| method: ''), |
| ], |
| "Field declarations": const [ |
| const Test.clazz( |
| ''' |
| class C { |
| var m; |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_INSTANCE_FIELD_DECL, |
| element: 'field(C#m)'), |
| ]), |
| const Test.clazz( |
| ''' |
| class C { |
| var m, n; |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_INSTANCE_FIELD_DECL, |
| element: 'field(C#m)'), |
| ]), |
| const Test.clazz( |
| ''' |
| class C { |
| var m = 42; |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_INSTANCE_FIELD_DECL, |
| element: 'field(C#m)', |
| rhs: 42), |
| ]), |
| const Test( |
| ''' |
| m() { |
| var local; |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_DECL, |
| element: 'function(m)', |
| parameters: '()', |
| body: '{var local;}'), |
| const Visit(VisitKind.VISIT_LOCAL_VARIABLE_DECL, |
| element: 'variable(m#local)'), |
| ]), |
| const Test( |
| ''' |
| m() { |
| var local = 42; |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_DECL, |
| element: 'function(m)', |
| parameters: '()', |
| body: '{var local=42;}'), |
| const Visit(VisitKind.VISIT_LOCAL_VARIABLE_DECL, |
| element: 'variable(m#local)', |
| rhs: 42), |
| ]), |
| const Test( |
| ''' |
| m() { |
| const local = 42; |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_DECL, |
| element: 'function(m)', |
| parameters: '()', |
| body: '{const local=42;}'), |
| const Visit(VisitKind.VISIT_LOCAL_CONSTANT_DECL, |
| element: 'variable(m#local)', |
| constant: 42), |
| ]), |
| const Test( |
| ''' |
| m() { |
| var local1, local2; |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_DECL, |
| element: 'function(m)', |
| parameters: '()', |
| body: '{var local1,local2;}'), |
| const Visit(VisitKind.VISIT_LOCAL_VARIABLE_DECL, |
| element: 'variable(m#local1)'), |
| const Visit(VisitKind.VISIT_LOCAL_VARIABLE_DECL, |
| element: 'variable(m#local2)'), |
| ]), |
| const Test( |
| ''' |
| m() { |
| var local1 = 42, local2 = true; |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_DECL, |
| element: 'function(m)', |
| parameters: '()', |
| body: '{var local1=42,local2=true;}'), |
| const Visit(VisitKind.VISIT_LOCAL_VARIABLE_DECL, |
| element: 'variable(m#local1)', |
| rhs: 42), |
| const Visit(VisitKind.VISIT_LOCAL_VARIABLE_DECL, |
| element: 'variable(m#local2)', |
| rhs: true), |
| ]), |
| const Test( |
| ''' |
| m() { |
| const local1 = 42, local2 = true; |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_TOP_LEVEL_FUNCTION_DECL, |
| element: 'function(m)', |
| parameters: '()', |
| body: '{const local1=42,local2=true;}'), |
| const Visit(VisitKind.VISIT_LOCAL_CONSTANT_DECL, |
| element: 'variable(m#local1)', |
| constant: 42), |
| const Visit(VisitKind.VISIT_LOCAL_CONSTANT_DECL, |
| element: 'variable(m#local2)', |
| constant: true), |
| ]), |
| const Test.clazz( |
| ''' |
| class C { |
| static var m; |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_STATIC_FIELD_DECL, |
| element: 'field(C#m)'), |
| ]), |
| const Test.clazz( |
| ''' |
| class C { |
| static var m, n; |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_STATIC_FIELD_DECL, |
| element: 'field(C#m)'), |
| ]), |
| const Test.clazz( |
| ''' |
| class C { |
| static var k, l, m, n; |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_STATIC_FIELD_DECL, |
| element: 'field(C#m)'), |
| ]), |
| const Test.clazz( |
| ''' |
| class C { |
| static var m = 42; |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_STATIC_FIELD_DECL, |
| element: 'field(C#m)', |
| rhs: 42), |
| ]), |
| const Test.clazz( |
| ''' |
| class C { |
| static var m = 42, n = true; |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_STATIC_FIELD_DECL, |
| element: 'field(C#m)', |
| rhs: 42), |
| ]), |
| const Test.clazz( |
| ''' |
| class C { |
| static const m = 42; |
| } |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_STATIC_CONSTANT_DECL, |
| element: 'field(C#m)', |
| constant: 42), |
| ]), |
| const Test( |
| ''' |
| var m; |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_TOP_LEVEL_FIELD_DECL, |
| element: 'field(m)'), |
| ]), |
| const Test( |
| ''' |
| var m, n; |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_TOP_LEVEL_FIELD_DECL, |
| element: 'field(m)'), |
| ]), |
| const Test( |
| ''' |
| var m = 42; |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_TOP_LEVEL_FIELD_DECL, |
| element: 'field(m)', |
| rhs: 42), |
| ]), |
| const Test( |
| ''' |
| const m = 42; |
| ''', |
| const [ |
| const Visit(VisitKind.VISIT_TOP_LEVEL_CONSTANT_DECL, |
| element: 'field(m)', |
| constant: 42), |
| ]), |
| ], |
| }; |