| // Copyright (c) 2017, 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. |
| |
| import 'package:analyzer/dart/analysis/results.dart'; |
| import 'package:analyzer/src/dart/element/element.dart'; |
| import 'package:analyzer/src/error/codes.dart'; |
| import 'package:test_reflective_loader/test_reflective_loader.dart'; |
| |
| import '../dart/resolution/node_text_expectations.dart'; |
| import 'elements_base.dart'; |
| |
| main() { |
| defineReflectiveSuite(() { |
| defineReflectiveTests(TopLevelInferenceTest); |
| defineReflectiveTests(TopLevelInferenceErrorsTest); |
| defineReflectiveTests(UpdateNodeTextExpectations); |
| }); |
| } |
| |
| @reflectiveTest |
| class TopLevelInferenceErrorsTest extends ElementsBaseTest { |
| @override |
| bool get keepLinkingLibraries => true; |
| |
| test_initializer_additive() async { |
| await _assertErrorOnlyLeft(['+', '-']); |
| } |
| |
| test_initializer_assign() async { |
| await assertNoErrorsInCode(''' |
| var a = 1; |
| var t1 = a += 1; |
| var t2 = a = 2; |
| '''); |
| } |
| |
| test_initializer_binary_onlyLeft() async { |
| await assertNoErrorsInCode(''' |
| var a = 1; |
| var t = (a = 1) + (a = 2); |
| '''); |
| } |
| |
| test_initializer_bitwise() async { |
| await _assertErrorOnlyLeft(['&', '|', '^']); |
| } |
| |
| test_initializer_boolean() async { |
| await assertNoErrorsInCode(''' |
| var a = 1; |
| var t1 = ((a = 1) == 0) || ((a = 2) == 0); |
| var t2 = ((a = 1) == 0) && ((a = 2) == 0); |
| var t3 = !((a = 1) == 0); |
| '''); |
| } |
| |
| test_initializer_cascade() async { |
| await assertNoErrorsInCode(''' |
| var a = 0; |
| var t = (a = 1)..isEven; |
| '''); |
| } |
| |
| test_initializer_classField_instance_instanceCreation() async { |
| await assertNoErrorsInCode(''' |
| class A<T> {} |
| class B { |
| var t1 = new A<int>(); |
| var t2 = new A(); |
| } |
| '''); |
| } |
| |
| test_initializer_classField_static_instanceCreation() async { |
| await assertNoErrorsInCode(''' |
| class A<T> {} |
| class B { |
| static var t1 = 1; |
| static var t2 = new A(); |
| } |
| '''); |
| } |
| |
| test_initializer_conditional() async { |
| await assertNoErrorsInCode(''' |
| var a = 1; |
| var b = true; |
| var t = b |
| ? (a = 1) |
| : (a = 2); |
| '''); |
| } |
| |
| test_initializer_dependencyCycle() async { |
| await assertErrorsInCode( |
| ''' |
| var a = b; |
| var b = a; |
| ''', |
| [ |
| error(CompileTimeErrorCode.TOP_LEVEL_CYCLE, 4, 1), |
| error(CompileTimeErrorCode.TOP_LEVEL_CYCLE, 15, 1), |
| ], |
| ); |
| } |
| |
| test_initializer_equality() async { |
| await assertNoErrorsInCode(''' |
| var a = 1; |
| var t1 = ((a = 1) == 0) == ((a = 2) == 0); |
| var t2 = ((a = 1) == 0) != ((a = 2) == 0); |
| '''); |
| } |
| |
| test_initializer_extractIndex() async { |
| await assertNoErrorsInCode(''' |
| var a = [0, 1.2]; |
| var b0 = a[0]; |
| var b1 = a[1]; |
| '''); |
| } |
| |
| test_initializer_functionLiteral_blockBody() async { |
| await assertNoErrorsInCode(''' |
| var t = (int p) {}; |
| '''); |
| assertType(findElement2.topVar('t').type, 'Null Function(int)'); |
| } |
| |
| test_initializer_functionLiteral_expressionBody() async { |
| await assertNoErrorsInCode(''' |
| var a = 0; |
| var t = (int p) => (a = 1); |
| '''); |
| assertType(findElement2.topVar('t').type, 'int Function(int)'); |
| } |
| |
| test_initializer_functionLiteral_parameters_withoutType() async { |
| await assertNoErrorsInCode(''' |
| var t = (int a, b,int c, d) => 0; |
| '''); |
| assertType( |
| findElement2.topVar('t').type, |
| 'int Function(int, dynamic, int, dynamic)', |
| ); |
| } |
| |
| test_initializer_hasTypeAnnotation() async { |
| await assertNoErrorsInCode(''' |
| var a = 1; |
| int t = (a = 1); |
| '''); |
| } |
| |
| test_initializer_identifier() async { |
| await assertNoErrorsInCode(''' |
| int top_function() => 0; |
| var top_variable = 0; |
| int get top_getter => 0; |
| class A { |
| static var static_field = 0; |
| static int get static_getter => 0; |
| static int static_method() => 0; |
| int instance_method() => 0; |
| } |
| var t1 = top_function; |
| var t2 = top_variable; |
| var t3 = top_getter; |
| var t4 = A.static_field; |
| var t5 = A.static_getter; |
| var t6 = A.static_method; |
| var t7 = new A().instance_method; |
| '''); |
| } |
| |
| test_initializer_identifier_error() async { |
| await assertNoErrorsInCode(''' |
| var a = 0; |
| var b = (a = 1); |
| var c = b; |
| '''); |
| } |
| |
| test_initializer_ifNull() async { |
| await assertNoErrorsInCode(''' |
| int? a = 1; |
| var t = a ?? 2; |
| '''); |
| } |
| |
| test_initializer_instanceCreation_withoutTypeParameters() async { |
| await assertNoErrorsInCode(''' |
| class A {} |
| var t = new A(); |
| '''); |
| } |
| |
| test_initializer_instanceCreation_withTypeParameters() async { |
| await assertNoErrorsInCode(''' |
| class A<T> {} |
| var t1 = new A<int>(); |
| var t2 = new A(); |
| '''); |
| } |
| |
| test_initializer_instanceGetter() async { |
| await assertNoErrorsInCode(''' |
| class A { |
| int f = 1; |
| } |
| var a = new A().f; |
| '''); |
| } |
| |
| test_initializer_methodInvocation_function() async { |
| await assertNoErrorsInCode(''' |
| int f1() => 0; |
| T f2<T>() => throw 0; |
| var t1 = f1(); |
| var t2 = f2(); |
| var t3 = f2<int>(); |
| '''); |
| } |
| |
| test_initializer_methodInvocation_method() async { |
| await assertNoErrorsInCode(''' |
| class A { |
| int m1() => 0; |
| T m2<T>() => throw 0; |
| } |
| var a = new A(); |
| var t1 = a.m1(); |
| var t2 = a.m2(); |
| var t3 = a.m2<int>(); |
| '''); |
| } |
| |
| test_initializer_multiplicative() async { |
| await _assertErrorOnlyLeft(['*', '/', '%', '~/']); |
| } |
| |
| test_initializer_postfixIncDec() async { |
| await assertNoErrorsInCode(''' |
| var a = 1; |
| var t1 = a++; |
| var t2 = a--; |
| '''); |
| } |
| |
| test_initializer_prefixIncDec() async { |
| await assertNoErrorsInCode(''' |
| var a = 1; |
| var t1 = ++a; |
| var t2 = --a; |
| '''); |
| } |
| |
| test_initializer_relational() async { |
| await _assertErrorOnlyLeft(['>', '>=', '<', '<=']); |
| } |
| |
| test_initializer_shift() async { |
| await _assertErrorOnlyLeft(['<<', '>>']); |
| } |
| |
| test_initializer_typedList() async { |
| await assertNoErrorsInCode(''' |
| var a = 1; |
| var t = <int>[a = 1]; |
| '''); |
| } |
| |
| test_initializer_typedMap() async { |
| await assertNoErrorsInCode(''' |
| var a = 1; |
| var t = <int, int>{(a = 1) : (a = 2)}; |
| '''); |
| } |
| |
| test_initializer_untypedList() async { |
| await assertNoErrorsInCode(''' |
| var a = 1; |
| var t = [ |
| a = 1, |
| 2, |
| 3, |
| ]; |
| '''); |
| } |
| |
| test_initializer_untypedMap() async { |
| await assertNoErrorsInCode(''' |
| var a = 1; |
| var t = { |
| (a = 1) : |
| (a = 2), |
| }; |
| '''); |
| } |
| |
| test_override_conflictFieldType() async { |
| await assertErrorsInCode( |
| ''' |
| abstract class A { |
| int aaa = 0; |
| } |
| abstract class B { |
| String aaa = '0'; |
| } |
| class C implements A, B { |
| var aaa; |
| } |
| ''', |
| [ |
| error( |
| CompileTimeErrorCode.INVALID_OVERRIDE, |
| 109, |
| 3, |
| contextMessages: [message(testFile, 64, 3)], |
| ), |
| error( |
| CompileTimeErrorCode.INVALID_OVERRIDE, |
| 109, |
| 3, |
| contextMessages: [message(testFile, 25, 3)], |
| ), |
| ], |
| ); |
| } |
| |
| test_override_conflictParameterType_method() async { |
| await assertErrorsInCode( |
| ''' |
| abstract class A { |
| void mmm(int a); |
| } |
| abstract class B { |
| void mmm(String a); |
| } |
| class C implements A, B { |
| void mmm(a) {} |
| } |
| ''', |
| [error(CompileTimeErrorCode.NO_COMBINED_SUPER_SIGNATURE, 116, 3)], |
| ); |
| } |
| |
| Future<void> _assertErrorOnlyLeft(List<String> operators) async { |
| String code = 'var a = 1;\n'; |
| for (var i = 0; i < operators.length; i++) { |
| String operator = operators[i]; |
| code += 'var t$i = (a = 1) $operator (a = 2);\n'; |
| } |
| await assertNoErrorsInCode(code); |
| } |
| } |
| |
| @reflectiveTest |
| class TopLevelInferenceTest extends ElementsBaseTest { |
| @override |
| bool get keepLinkingLibraries => true; |
| |
| test_initializer_additive() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var vPlusIntInt = 1 + 2; |
| var vPlusIntDouble = 1 + 2.0; |
| var vPlusDoubleInt = 1.0 + 2; |
| var vPlusDoubleDouble = 1.0 + 2.0; |
| var vMinusIntInt = 1 - 2; |
| var vMinusIntDouble = 1 - 2.0; |
| var vMinusDoubleInt = 1.0 - 2; |
| var vMinusDoubleDouble = 1.0 - 2.0; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer vPlusIntInt @4 |
| reference: <testLibraryFragment>::@topLevelVariable::vPlusIntInt |
| element: <testLibrary>::@topLevelVariable::vPlusIntInt |
| getter2: <testLibraryFragment>::@getter::vPlusIntInt |
| setter2: <testLibraryFragment>::@setter::vPlusIntInt |
| hasInitializer vPlusIntDouble @29 |
| reference: <testLibraryFragment>::@topLevelVariable::vPlusIntDouble |
| element: <testLibrary>::@topLevelVariable::vPlusIntDouble |
| getter2: <testLibraryFragment>::@getter::vPlusIntDouble |
| setter2: <testLibraryFragment>::@setter::vPlusIntDouble |
| hasInitializer vPlusDoubleInt @59 |
| reference: <testLibraryFragment>::@topLevelVariable::vPlusDoubleInt |
| element: <testLibrary>::@topLevelVariable::vPlusDoubleInt |
| getter2: <testLibraryFragment>::@getter::vPlusDoubleInt |
| setter2: <testLibraryFragment>::@setter::vPlusDoubleInt |
| hasInitializer vPlusDoubleDouble @89 |
| reference: <testLibraryFragment>::@topLevelVariable::vPlusDoubleDouble |
| element: <testLibrary>::@topLevelVariable::vPlusDoubleDouble |
| getter2: <testLibraryFragment>::@getter::vPlusDoubleDouble |
| setter2: <testLibraryFragment>::@setter::vPlusDoubleDouble |
| hasInitializer vMinusIntInt @124 |
| reference: <testLibraryFragment>::@topLevelVariable::vMinusIntInt |
| element: <testLibrary>::@topLevelVariable::vMinusIntInt |
| getter2: <testLibraryFragment>::@getter::vMinusIntInt |
| setter2: <testLibraryFragment>::@setter::vMinusIntInt |
| hasInitializer vMinusIntDouble @150 |
| reference: <testLibraryFragment>::@topLevelVariable::vMinusIntDouble |
| element: <testLibrary>::@topLevelVariable::vMinusIntDouble |
| getter2: <testLibraryFragment>::@getter::vMinusIntDouble |
| setter2: <testLibraryFragment>::@setter::vMinusIntDouble |
| hasInitializer vMinusDoubleInt @181 |
| reference: <testLibraryFragment>::@topLevelVariable::vMinusDoubleInt |
| element: <testLibrary>::@topLevelVariable::vMinusDoubleInt |
| getter2: <testLibraryFragment>::@getter::vMinusDoubleInt |
| setter2: <testLibraryFragment>::@setter::vMinusDoubleInt |
| hasInitializer vMinusDoubleDouble @212 |
| reference: <testLibraryFragment>::@topLevelVariable::vMinusDoubleDouble |
| element: <testLibrary>::@topLevelVariable::vMinusDoubleDouble |
| getter2: <testLibraryFragment>::@getter::vMinusDoubleDouble |
| setter2: <testLibraryFragment>::@setter::vMinusDoubleDouble |
| getters |
| synthetic get vPlusIntInt |
| reference: <testLibraryFragment>::@getter::vPlusIntInt |
| element: <testLibraryFragment>::@getter::vPlusIntInt#element |
| synthetic get vPlusIntDouble |
| reference: <testLibraryFragment>::@getter::vPlusIntDouble |
| element: <testLibraryFragment>::@getter::vPlusIntDouble#element |
| synthetic get vPlusDoubleInt |
| reference: <testLibraryFragment>::@getter::vPlusDoubleInt |
| element: <testLibraryFragment>::@getter::vPlusDoubleInt#element |
| synthetic get vPlusDoubleDouble |
| reference: <testLibraryFragment>::@getter::vPlusDoubleDouble |
| element: <testLibraryFragment>::@getter::vPlusDoubleDouble#element |
| synthetic get vMinusIntInt |
| reference: <testLibraryFragment>::@getter::vMinusIntInt |
| element: <testLibraryFragment>::@getter::vMinusIntInt#element |
| synthetic get vMinusIntDouble |
| reference: <testLibraryFragment>::@getter::vMinusIntDouble |
| element: <testLibraryFragment>::@getter::vMinusIntDouble#element |
| synthetic get vMinusDoubleInt |
| reference: <testLibraryFragment>::@getter::vMinusDoubleInt |
| element: <testLibraryFragment>::@getter::vMinusDoubleInt#element |
| synthetic get vMinusDoubleDouble |
| reference: <testLibraryFragment>::@getter::vMinusDoubleDouble |
| element: <testLibraryFragment>::@getter::vMinusDoubleDouble#element |
| setters |
| synthetic set vPlusIntInt |
| reference: <testLibraryFragment>::@setter::vPlusIntInt |
| element: <testLibraryFragment>::@setter::vPlusIntInt#element |
| formalParameters |
| _vPlusIntInt |
| element: <testLibraryFragment>::@setter::vPlusIntInt::@parameter::_vPlusIntInt#element |
| synthetic set vPlusIntDouble |
| reference: <testLibraryFragment>::@setter::vPlusIntDouble |
| element: <testLibraryFragment>::@setter::vPlusIntDouble#element |
| formalParameters |
| _vPlusIntDouble |
| element: <testLibraryFragment>::@setter::vPlusIntDouble::@parameter::_vPlusIntDouble#element |
| synthetic set vPlusDoubleInt |
| reference: <testLibraryFragment>::@setter::vPlusDoubleInt |
| element: <testLibraryFragment>::@setter::vPlusDoubleInt#element |
| formalParameters |
| _vPlusDoubleInt |
| element: <testLibraryFragment>::@setter::vPlusDoubleInt::@parameter::_vPlusDoubleInt#element |
| synthetic set vPlusDoubleDouble |
| reference: <testLibraryFragment>::@setter::vPlusDoubleDouble |
| element: <testLibraryFragment>::@setter::vPlusDoubleDouble#element |
| formalParameters |
| _vPlusDoubleDouble |
| element: <testLibraryFragment>::@setter::vPlusDoubleDouble::@parameter::_vPlusDoubleDouble#element |
| synthetic set vMinusIntInt |
| reference: <testLibraryFragment>::@setter::vMinusIntInt |
| element: <testLibraryFragment>::@setter::vMinusIntInt#element |
| formalParameters |
| _vMinusIntInt |
| element: <testLibraryFragment>::@setter::vMinusIntInt::@parameter::_vMinusIntInt#element |
| synthetic set vMinusIntDouble |
| reference: <testLibraryFragment>::@setter::vMinusIntDouble |
| element: <testLibraryFragment>::@setter::vMinusIntDouble#element |
| formalParameters |
| _vMinusIntDouble |
| element: <testLibraryFragment>::@setter::vMinusIntDouble::@parameter::_vMinusIntDouble#element |
| synthetic set vMinusDoubleInt |
| reference: <testLibraryFragment>::@setter::vMinusDoubleInt |
| element: <testLibraryFragment>::@setter::vMinusDoubleInt#element |
| formalParameters |
| _vMinusDoubleInt |
| element: <testLibraryFragment>::@setter::vMinusDoubleInt::@parameter::_vMinusDoubleInt#element |
| synthetic set vMinusDoubleDouble |
| reference: <testLibraryFragment>::@setter::vMinusDoubleDouble |
| element: <testLibraryFragment>::@setter::vMinusDoubleDouble#element |
| formalParameters |
| _vMinusDoubleDouble |
| element: <testLibraryFragment>::@setter::vMinusDoubleDouble::@parameter::_vMinusDoubleDouble#element |
| topLevelVariables |
| hasInitializer vPlusIntInt |
| reference: <testLibrary>::@topLevelVariable::vPlusIntInt |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vPlusIntInt |
| type: int |
| getter: <testLibraryFragment>::@getter::vPlusIntInt#element |
| setter: <testLibraryFragment>::@setter::vPlusIntInt#element |
| hasInitializer vPlusIntDouble |
| reference: <testLibrary>::@topLevelVariable::vPlusIntDouble |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vPlusIntDouble |
| type: double |
| getter: <testLibraryFragment>::@getter::vPlusIntDouble#element |
| setter: <testLibraryFragment>::@setter::vPlusIntDouble#element |
| hasInitializer vPlusDoubleInt |
| reference: <testLibrary>::@topLevelVariable::vPlusDoubleInt |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vPlusDoubleInt |
| type: double |
| getter: <testLibraryFragment>::@getter::vPlusDoubleInt#element |
| setter: <testLibraryFragment>::@setter::vPlusDoubleInt#element |
| hasInitializer vPlusDoubleDouble |
| reference: <testLibrary>::@topLevelVariable::vPlusDoubleDouble |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vPlusDoubleDouble |
| type: double |
| getter: <testLibraryFragment>::@getter::vPlusDoubleDouble#element |
| setter: <testLibraryFragment>::@setter::vPlusDoubleDouble#element |
| hasInitializer vMinusIntInt |
| reference: <testLibrary>::@topLevelVariable::vMinusIntInt |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vMinusIntInt |
| type: int |
| getter: <testLibraryFragment>::@getter::vMinusIntInt#element |
| setter: <testLibraryFragment>::@setter::vMinusIntInt#element |
| hasInitializer vMinusIntDouble |
| reference: <testLibrary>::@topLevelVariable::vMinusIntDouble |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vMinusIntDouble |
| type: double |
| getter: <testLibraryFragment>::@getter::vMinusIntDouble#element |
| setter: <testLibraryFragment>::@setter::vMinusIntDouble#element |
| hasInitializer vMinusDoubleInt |
| reference: <testLibrary>::@topLevelVariable::vMinusDoubleInt |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vMinusDoubleInt |
| type: double |
| getter: <testLibraryFragment>::@getter::vMinusDoubleInt#element |
| setter: <testLibraryFragment>::@setter::vMinusDoubleInt#element |
| hasInitializer vMinusDoubleDouble |
| reference: <testLibrary>::@topLevelVariable::vMinusDoubleDouble |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vMinusDoubleDouble |
| type: double |
| getter: <testLibraryFragment>::@getter::vMinusDoubleDouble#element |
| setter: <testLibraryFragment>::@setter::vMinusDoubleDouble#element |
| getters |
| synthetic static get vPlusIntInt |
| firstFragment: <testLibraryFragment>::@getter::vPlusIntInt |
| returnType: int |
| synthetic static get vPlusIntDouble |
| firstFragment: <testLibraryFragment>::@getter::vPlusIntDouble |
| returnType: double |
| synthetic static get vPlusDoubleInt |
| firstFragment: <testLibraryFragment>::@getter::vPlusDoubleInt |
| returnType: double |
| synthetic static get vPlusDoubleDouble |
| firstFragment: <testLibraryFragment>::@getter::vPlusDoubleDouble |
| returnType: double |
| synthetic static get vMinusIntInt |
| firstFragment: <testLibraryFragment>::@getter::vMinusIntInt |
| returnType: int |
| synthetic static get vMinusIntDouble |
| firstFragment: <testLibraryFragment>::@getter::vMinusIntDouble |
| returnType: double |
| synthetic static get vMinusDoubleInt |
| firstFragment: <testLibraryFragment>::@getter::vMinusDoubleInt |
| returnType: double |
| synthetic static get vMinusDoubleDouble |
| firstFragment: <testLibraryFragment>::@getter::vMinusDoubleDouble |
| returnType: double |
| setters |
| synthetic static set vPlusIntInt |
| firstFragment: <testLibraryFragment>::@setter::vPlusIntInt |
| formalParameters |
| requiredPositional _vPlusIntInt |
| type: int |
| returnType: void |
| synthetic static set vPlusIntDouble |
| firstFragment: <testLibraryFragment>::@setter::vPlusIntDouble |
| formalParameters |
| requiredPositional _vPlusIntDouble |
| type: double |
| returnType: void |
| synthetic static set vPlusDoubleInt |
| firstFragment: <testLibraryFragment>::@setter::vPlusDoubleInt |
| formalParameters |
| requiredPositional _vPlusDoubleInt |
| type: double |
| returnType: void |
| synthetic static set vPlusDoubleDouble |
| firstFragment: <testLibraryFragment>::@setter::vPlusDoubleDouble |
| formalParameters |
| requiredPositional _vPlusDoubleDouble |
| type: double |
| returnType: void |
| synthetic static set vMinusIntInt |
| firstFragment: <testLibraryFragment>::@setter::vMinusIntInt |
| formalParameters |
| requiredPositional _vMinusIntInt |
| type: int |
| returnType: void |
| synthetic static set vMinusIntDouble |
| firstFragment: <testLibraryFragment>::@setter::vMinusIntDouble |
| formalParameters |
| requiredPositional _vMinusIntDouble |
| type: double |
| returnType: void |
| synthetic static set vMinusDoubleInt |
| firstFragment: <testLibraryFragment>::@setter::vMinusDoubleInt |
| formalParameters |
| requiredPositional _vMinusDoubleInt |
| type: double |
| returnType: void |
| synthetic static set vMinusDoubleDouble |
| firstFragment: <testLibraryFragment>::@setter::vMinusDoubleDouble |
| formalParameters |
| requiredPositional _vMinusDoubleDouble |
| type: double |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_as() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var V = 1 as num; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer V @4 |
| reference: <testLibraryFragment>::@topLevelVariable::V |
| element: <testLibrary>::@topLevelVariable::V |
| getter2: <testLibraryFragment>::@getter::V |
| setter2: <testLibraryFragment>::@setter::V |
| getters |
| synthetic get V |
| reference: <testLibraryFragment>::@getter::V |
| element: <testLibraryFragment>::@getter::V#element |
| setters |
| synthetic set V |
| reference: <testLibraryFragment>::@setter::V |
| element: <testLibraryFragment>::@setter::V#element |
| formalParameters |
| _V |
| element: <testLibraryFragment>::@setter::V::@parameter::_V#element |
| topLevelVariables |
| hasInitializer V |
| reference: <testLibrary>::@topLevelVariable::V |
| firstFragment: <testLibraryFragment>::@topLevelVariable::V |
| type: num |
| getter: <testLibraryFragment>::@getter::V#element |
| setter: <testLibraryFragment>::@setter::V#element |
| getters |
| synthetic static get V |
| firstFragment: <testLibraryFragment>::@getter::V |
| returnType: num |
| setters |
| synthetic static set V |
| firstFragment: <testLibraryFragment>::@setter::V |
| formalParameters |
| requiredPositional _V |
| type: num |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_assign() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var a = 1; |
| var t1 = (a = 2); |
| var t2 = (a += 2); |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer a @4 |
| reference: <testLibraryFragment>::@topLevelVariable::a |
| element: <testLibrary>::@topLevelVariable::a |
| getter2: <testLibraryFragment>::@getter::a |
| setter2: <testLibraryFragment>::@setter::a |
| hasInitializer t1 @15 |
| reference: <testLibraryFragment>::@topLevelVariable::t1 |
| element: <testLibrary>::@topLevelVariable::t1 |
| getter2: <testLibraryFragment>::@getter::t1 |
| setter2: <testLibraryFragment>::@setter::t1 |
| hasInitializer t2 @33 |
| reference: <testLibraryFragment>::@topLevelVariable::t2 |
| element: <testLibrary>::@topLevelVariable::t2 |
| getter2: <testLibraryFragment>::@getter::t2 |
| setter2: <testLibraryFragment>::@setter::t2 |
| getters |
| synthetic get a |
| reference: <testLibraryFragment>::@getter::a |
| element: <testLibraryFragment>::@getter::a#element |
| synthetic get t1 |
| reference: <testLibraryFragment>::@getter::t1 |
| element: <testLibraryFragment>::@getter::t1#element |
| synthetic get t2 |
| reference: <testLibraryFragment>::@getter::t2 |
| element: <testLibraryFragment>::@getter::t2#element |
| setters |
| synthetic set a |
| reference: <testLibraryFragment>::@setter::a |
| element: <testLibraryFragment>::@setter::a#element |
| formalParameters |
| _a |
| element: <testLibraryFragment>::@setter::a::@parameter::_a#element |
| synthetic set t1 |
| reference: <testLibraryFragment>::@setter::t1 |
| element: <testLibraryFragment>::@setter::t1#element |
| formalParameters |
| _t1 |
| element: <testLibraryFragment>::@setter::t1::@parameter::_t1#element |
| synthetic set t2 |
| reference: <testLibraryFragment>::@setter::t2 |
| element: <testLibraryFragment>::@setter::t2#element |
| formalParameters |
| _t2 |
| element: <testLibraryFragment>::@setter::t2::@parameter::_t2#element |
| topLevelVariables |
| hasInitializer a |
| reference: <testLibrary>::@topLevelVariable::a |
| firstFragment: <testLibraryFragment>::@topLevelVariable::a |
| type: int |
| getter: <testLibraryFragment>::@getter::a#element |
| setter: <testLibraryFragment>::@setter::a#element |
| hasInitializer t1 |
| reference: <testLibrary>::@topLevelVariable::t1 |
| firstFragment: <testLibraryFragment>::@topLevelVariable::t1 |
| type: int |
| getter: <testLibraryFragment>::@getter::t1#element |
| setter: <testLibraryFragment>::@setter::t1#element |
| hasInitializer t2 |
| reference: <testLibrary>::@topLevelVariable::t2 |
| firstFragment: <testLibraryFragment>::@topLevelVariable::t2 |
| type: int |
| getter: <testLibraryFragment>::@getter::t2#element |
| setter: <testLibraryFragment>::@setter::t2#element |
| getters |
| synthetic static get a |
| firstFragment: <testLibraryFragment>::@getter::a |
| returnType: int |
| synthetic static get t1 |
| firstFragment: <testLibraryFragment>::@getter::t1 |
| returnType: int |
| synthetic static get t2 |
| firstFragment: <testLibraryFragment>::@getter::t2 |
| returnType: int |
| setters |
| synthetic static set a |
| firstFragment: <testLibraryFragment>::@setter::a |
| formalParameters |
| requiredPositional _a |
| type: int |
| returnType: void |
| synthetic static set t1 |
| firstFragment: <testLibraryFragment>::@setter::t1 |
| formalParameters |
| requiredPositional _t1 |
| type: int |
| returnType: void |
| synthetic static set t2 |
| firstFragment: <testLibraryFragment>::@setter::t2 |
| formalParameters |
| requiredPositional _t2 |
| type: int |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_assign_indexed() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var a = [0]; |
| var t1 = (a[0] = 2); |
| var t2 = (a[0] += 2); |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer a @4 |
| reference: <testLibraryFragment>::@topLevelVariable::a |
| element: <testLibrary>::@topLevelVariable::a |
| getter2: <testLibraryFragment>::@getter::a |
| setter2: <testLibraryFragment>::@setter::a |
| hasInitializer t1 @17 |
| reference: <testLibraryFragment>::@topLevelVariable::t1 |
| element: <testLibrary>::@topLevelVariable::t1 |
| getter2: <testLibraryFragment>::@getter::t1 |
| setter2: <testLibraryFragment>::@setter::t1 |
| hasInitializer t2 @38 |
| reference: <testLibraryFragment>::@topLevelVariable::t2 |
| element: <testLibrary>::@topLevelVariable::t2 |
| getter2: <testLibraryFragment>::@getter::t2 |
| setter2: <testLibraryFragment>::@setter::t2 |
| getters |
| synthetic get a |
| reference: <testLibraryFragment>::@getter::a |
| element: <testLibraryFragment>::@getter::a#element |
| synthetic get t1 |
| reference: <testLibraryFragment>::@getter::t1 |
| element: <testLibraryFragment>::@getter::t1#element |
| synthetic get t2 |
| reference: <testLibraryFragment>::@getter::t2 |
| element: <testLibraryFragment>::@getter::t2#element |
| setters |
| synthetic set a |
| reference: <testLibraryFragment>::@setter::a |
| element: <testLibraryFragment>::@setter::a#element |
| formalParameters |
| _a |
| element: <testLibraryFragment>::@setter::a::@parameter::_a#element |
| synthetic set t1 |
| reference: <testLibraryFragment>::@setter::t1 |
| element: <testLibraryFragment>::@setter::t1#element |
| formalParameters |
| _t1 |
| element: <testLibraryFragment>::@setter::t1::@parameter::_t1#element |
| synthetic set t2 |
| reference: <testLibraryFragment>::@setter::t2 |
| element: <testLibraryFragment>::@setter::t2#element |
| formalParameters |
| _t2 |
| element: <testLibraryFragment>::@setter::t2::@parameter::_t2#element |
| topLevelVariables |
| hasInitializer a |
| reference: <testLibrary>::@topLevelVariable::a |
| firstFragment: <testLibraryFragment>::@topLevelVariable::a |
| type: List<int> |
| getter: <testLibraryFragment>::@getter::a#element |
| setter: <testLibraryFragment>::@setter::a#element |
| hasInitializer t1 |
| reference: <testLibrary>::@topLevelVariable::t1 |
| firstFragment: <testLibraryFragment>::@topLevelVariable::t1 |
| type: int |
| getter: <testLibraryFragment>::@getter::t1#element |
| setter: <testLibraryFragment>::@setter::t1#element |
| hasInitializer t2 |
| reference: <testLibrary>::@topLevelVariable::t2 |
| firstFragment: <testLibraryFragment>::@topLevelVariable::t2 |
| type: int |
| getter: <testLibraryFragment>::@getter::t2#element |
| setter: <testLibraryFragment>::@setter::t2#element |
| getters |
| synthetic static get a |
| firstFragment: <testLibraryFragment>::@getter::a |
| returnType: List<int> |
| synthetic static get t1 |
| firstFragment: <testLibraryFragment>::@getter::t1 |
| returnType: int |
| synthetic static get t2 |
| firstFragment: <testLibraryFragment>::@getter::t2 |
| returnType: int |
| setters |
| synthetic static set a |
| firstFragment: <testLibraryFragment>::@setter::a |
| formalParameters |
| requiredPositional _a |
| type: List<int> |
| returnType: void |
| synthetic static set t1 |
| firstFragment: <testLibraryFragment>::@setter::t1 |
| formalParameters |
| requiredPositional _t1 |
| type: int |
| returnType: void |
| synthetic static set t2 |
| firstFragment: <testLibraryFragment>::@setter::t2 |
| formalParameters |
| requiredPositional _t2 |
| type: int |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_assign_prefixed() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A { |
| int f; |
| } |
| var a = new A(); |
| var t1 = (a.f = 1); |
| var t2 = (a.f += 2); |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| fields |
| f @16 |
| reference: <testLibraryFragment>::@class::A::@field::f |
| element: <testLibraryFragment>::@class::A::@field::f#element |
| getter2: <testLibraryFragment>::@class::A::@getter::f |
| setter2: <testLibraryFragment>::@class::A::@setter::f |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| getters |
| synthetic get f |
| reference: <testLibraryFragment>::@class::A::@getter::f |
| element: <testLibraryFragment>::@class::A::@getter::f#element |
| setters |
| synthetic set f |
| reference: <testLibraryFragment>::@class::A::@setter::f |
| element: <testLibraryFragment>::@class::A::@setter::f#element |
| formalParameters |
| _f |
| element: <testLibraryFragment>::@class::A::@setter::f::@parameter::_f#element |
| topLevelVariables |
| hasInitializer a @25 |
| reference: <testLibraryFragment>::@topLevelVariable::a |
| element: <testLibrary>::@topLevelVariable::a |
| getter2: <testLibraryFragment>::@getter::a |
| setter2: <testLibraryFragment>::@setter::a |
| hasInitializer t1 @42 |
| reference: <testLibraryFragment>::@topLevelVariable::t1 |
| element: <testLibrary>::@topLevelVariable::t1 |
| getter2: <testLibraryFragment>::@getter::t1 |
| setter2: <testLibraryFragment>::@setter::t1 |
| hasInitializer t2 @62 |
| reference: <testLibraryFragment>::@topLevelVariable::t2 |
| element: <testLibrary>::@topLevelVariable::t2 |
| getter2: <testLibraryFragment>::@getter::t2 |
| setter2: <testLibraryFragment>::@setter::t2 |
| getters |
| synthetic get a |
| reference: <testLibraryFragment>::@getter::a |
| element: <testLibraryFragment>::@getter::a#element |
| synthetic get t1 |
| reference: <testLibraryFragment>::@getter::t1 |
| element: <testLibraryFragment>::@getter::t1#element |
| synthetic get t2 |
| reference: <testLibraryFragment>::@getter::t2 |
| element: <testLibraryFragment>::@getter::t2#element |
| setters |
| synthetic set a |
| reference: <testLibraryFragment>::@setter::a |
| element: <testLibraryFragment>::@setter::a#element |
| formalParameters |
| _a |
| element: <testLibraryFragment>::@setter::a::@parameter::_a#element |
| synthetic set t1 |
| reference: <testLibraryFragment>::@setter::t1 |
| element: <testLibraryFragment>::@setter::t1#element |
| formalParameters |
| _t1 |
| element: <testLibraryFragment>::@setter::t1::@parameter::_t1#element |
| synthetic set t2 |
| reference: <testLibraryFragment>::@setter::t2 |
| element: <testLibraryFragment>::@setter::t2#element |
| formalParameters |
| _t2 |
| element: <testLibraryFragment>::@setter::t2::@parameter::_t2#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| fields |
| f |
| firstFragment: <testLibraryFragment>::@class::A::@field::f |
| type: int |
| getter: <testLibraryFragment>::@class::A::@getter::f#element |
| setter: <testLibraryFragment>::@class::A::@setter::f#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| getters |
| synthetic get f |
| firstFragment: <testLibraryFragment>::@class::A::@getter::f |
| returnType: int |
| setters |
| synthetic set f |
| firstFragment: <testLibraryFragment>::@class::A::@setter::f |
| formalParameters |
| requiredPositional _f |
| type: int |
| returnType: void |
| topLevelVariables |
| hasInitializer a |
| reference: <testLibrary>::@topLevelVariable::a |
| firstFragment: <testLibraryFragment>::@topLevelVariable::a |
| type: A |
| getter: <testLibraryFragment>::@getter::a#element |
| setter: <testLibraryFragment>::@setter::a#element |
| hasInitializer t1 |
| reference: <testLibrary>::@topLevelVariable::t1 |
| firstFragment: <testLibraryFragment>::@topLevelVariable::t1 |
| type: int |
| getter: <testLibraryFragment>::@getter::t1#element |
| setter: <testLibraryFragment>::@setter::t1#element |
| hasInitializer t2 |
| reference: <testLibrary>::@topLevelVariable::t2 |
| firstFragment: <testLibraryFragment>::@topLevelVariable::t2 |
| type: int |
| getter: <testLibraryFragment>::@getter::t2#element |
| setter: <testLibraryFragment>::@setter::t2#element |
| getters |
| synthetic static get a |
| firstFragment: <testLibraryFragment>::@getter::a |
| returnType: A |
| synthetic static get t1 |
| firstFragment: <testLibraryFragment>::@getter::t1 |
| returnType: int |
| synthetic static get t2 |
| firstFragment: <testLibraryFragment>::@getter::t2 |
| returnType: int |
| setters |
| synthetic static set a |
| firstFragment: <testLibraryFragment>::@setter::a |
| formalParameters |
| requiredPositional _a |
| type: A |
| returnType: void |
| synthetic static set t1 |
| firstFragment: <testLibraryFragment>::@setter::t1 |
| formalParameters |
| requiredPositional _t1 |
| type: int |
| returnType: void |
| synthetic static set t2 |
| firstFragment: <testLibraryFragment>::@setter::t2 |
| formalParameters |
| requiredPositional _t2 |
| type: int |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_assign_prefixed_viaInterface() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class I { |
| int f; |
| } |
| abstract class C implements I {} |
| C c; |
| var t1 = (c.f = 1); |
| var t2 = (c.f += 2); |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class I @6 |
| reference: <testLibraryFragment>::@class::I |
| element: <testLibrary>::@class::I |
| fields |
| f @16 |
| reference: <testLibraryFragment>::@class::I::@field::f |
| element: <testLibraryFragment>::@class::I::@field::f#element |
| getter2: <testLibraryFragment>::@class::I::@getter::f |
| setter2: <testLibraryFragment>::@class::I::@setter::f |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::I::@constructor::new |
| element: <testLibraryFragment>::@class::I::@constructor::new#element |
| typeName: I |
| getters |
| synthetic get f |
| reference: <testLibraryFragment>::@class::I::@getter::f |
| element: <testLibraryFragment>::@class::I::@getter::f#element |
| setters |
| synthetic set f |
| reference: <testLibraryFragment>::@class::I::@setter::f |
| element: <testLibraryFragment>::@class::I::@setter::f#element |
| formalParameters |
| _f |
| element: <testLibraryFragment>::@class::I::@setter::f::@parameter::_f#element |
| class C @36 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| topLevelVariables |
| c @56 |
| reference: <testLibraryFragment>::@topLevelVariable::c |
| element: <testLibrary>::@topLevelVariable::c |
| getter2: <testLibraryFragment>::@getter::c |
| setter2: <testLibraryFragment>::@setter::c |
| hasInitializer t1 @63 |
| reference: <testLibraryFragment>::@topLevelVariable::t1 |
| element: <testLibrary>::@topLevelVariable::t1 |
| getter2: <testLibraryFragment>::@getter::t1 |
| setter2: <testLibraryFragment>::@setter::t1 |
| hasInitializer t2 @83 |
| reference: <testLibraryFragment>::@topLevelVariable::t2 |
| element: <testLibrary>::@topLevelVariable::t2 |
| getter2: <testLibraryFragment>::@getter::t2 |
| setter2: <testLibraryFragment>::@setter::t2 |
| getters |
| synthetic get c |
| reference: <testLibraryFragment>::@getter::c |
| element: <testLibraryFragment>::@getter::c#element |
| synthetic get t1 |
| reference: <testLibraryFragment>::@getter::t1 |
| element: <testLibraryFragment>::@getter::t1#element |
| synthetic get t2 |
| reference: <testLibraryFragment>::@getter::t2 |
| element: <testLibraryFragment>::@getter::t2#element |
| setters |
| synthetic set c |
| reference: <testLibraryFragment>::@setter::c |
| element: <testLibraryFragment>::@setter::c#element |
| formalParameters |
| _c |
| element: <testLibraryFragment>::@setter::c::@parameter::_c#element |
| synthetic set t1 |
| reference: <testLibraryFragment>::@setter::t1 |
| element: <testLibraryFragment>::@setter::t1#element |
| formalParameters |
| _t1 |
| element: <testLibraryFragment>::@setter::t1::@parameter::_t1#element |
| synthetic set t2 |
| reference: <testLibraryFragment>::@setter::t2 |
| element: <testLibraryFragment>::@setter::t2#element |
| formalParameters |
| _t2 |
| element: <testLibraryFragment>::@setter::t2::@parameter::_t2#element |
| classes |
| class I |
| reference: <testLibrary>::@class::I |
| firstFragment: <testLibraryFragment>::@class::I |
| fields |
| f |
| firstFragment: <testLibraryFragment>::@class::I::@field::f |
| type: int |
| getter: <testLibraryFragment>::@class::I::@getter::f#element |
| setter: <testLibraryFragment>::@class::I::@setter::f#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::I::@constructor::new |
| getters |
| synthetic get f |
| firstFragment: <testLibraryFragment>::@class::I::@getter::f |
| returnType: int |
| setters |
| synthetic set f |
| firstFragment: <testLibraryFragment>::@class::I::@setter::f |
| formalParameters |
| requiredPositional _f |
| type: int |
| returnType: void |
| abstract class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| interfaces |
| I |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| topLevelVariables |
| c |
| reference: <testLibrary>::@topLevelVariable::c |
| firstFragment: <testLibraryFragment>::@topLevelVariable::c |
| type: C |
| getter: <testLibraryFragment>::@getter::c#element |
| setter: <testLibraryFragment>::@setter::c#element |
| hasInitializer t1 |
| reference: <testLibrary>::@topLevelVariable::t1 |
| firstFragment: <testLibraryFragment>::@topLevelVariable::t1 |
| type: int |
| getter: <testLibraryFragment>::@getter::t1#element |
| setter: <testLibraryFragment>::@setter::t1#element |
| hasInitializer t2 |
| reference: <testLibrary>::@topLevelVariable::t2 |
| firstFragment: <testLibraryFragment>::@topLevelVariable::t2 |
| type: int |
| getter: <testLibraryFragment>::@getter::t2#element |
| setter: <testLibraryFragment>::@setter::t2#element |
| getters |
| synthetic static get c |
| firstFragment: <testLibraryFragment>::@getter::c |
| returnType: C |
| synthetic static get t1 |
| firstFragment: <testLibraryFragment>::@getter::t1 |
| returnType: int |
| synthetic static get t2 |
| firstFragment: <testLibraryFragment>::@getter::t2 |
| returnType: int |
| setters |
| synthetic static set c |
| firstFragment: <testLibraryFragment>::@setter::c |
| formalParameters |
| requiredPositional _c |
| type: C |
| returnType: void |
| synthetic static set t1 |
| firstFragment: <testLibraryFragment>::@setter::t1 |
| formalParameters |
| requiredPositional _t1 |
| type: int |
| returnType: void |
| synthetic static set t2 |
| firstFragment: <testLibraryFragment>::@setter::t2 |
| formalParameters |
| requiredPositional _t2 |
| type: int |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_assign_viaInterface() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class I { |
| int f; |
| } |
| abstract class C implements I {} |
| C getC() => null; |
| var t1 = (getC().f = 1); |
| var t2 = (getC().f += 2); |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class I @6 |
| reference: <testLibraryFragment>::@class::I |
| element: <testLibrary>::@class::I |
| fields |
| f @16 |
| reference: <testLibraryFragment>::@class::I::@field::f |
| element: <testLibraryFragment>::@class::I::@field::f#element |
| getter2: <testLibraryFragment>::@class::I::@getter::f |
| setter2: <testLibraryFragment>::@class::I::@setter::f |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::I::@constructor::new |
| element: <testLibraryFragment>::@class::I::@constructor::new#element |
| typeName: I |
| getters |
| synthetic get f |
| reference: <testLibraryFragment>::@class::I::@getter::f |
| element: <testLibraryFragment>::@class::I::@getter::f#element |
| setters |
| synthetic set f |
| reference: <testLibraryFragment>::@class::I::@setter::f |
| element: <testLibraryFragment>::@class::I::@setter::f#element |
| formalParameters |
| _f |
| element: <testLibraryFragment>::@class::I::@setter::f::@parameter::_f#element |
| class C @36 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| topLevelVariables |
| hasInitializer t1 @76 |
| reference: <testLibraryFragment>::@topLevelVariable::t1 |
| element: <testLibrary>::@topLevelVariable::t1 |
| getter2: <testLibraryFragment>::@getter::t1 |
| setter2: <testLibraryFragment>::@setter::t1 |
| hasInitializer t2 @101 |
| reference: <testLibraryFragment>::@topLevelVariable::t2 |
| element: <testLibrary>::@topLevelVariable::t2 |
| getter2: <testLibraryFragment>::@getter::t2 |
| setter2: <testLibraryFragment>::@setter::t2 |
| getters |
| synthetic get t1 |
| reference: <testLibraryFragment>::@getter::t1 |
| element: <testLibraryFragment>::@getter::t1#element |
| synthetic get t2 |
| reference: <testLibraryFragment>::@getter::t2 |
| element: <testLibraryFragment>::@getter::t2#element |
| setters |
| synthetic set t1 |
| reference: <testLibraryFragment>::@setter::t1 |
| element: <testLibraryFragment>::@setter::t1#element |
| formalParameters |
| _t1 |
| element: <testLibraryFragment>::@setter::t1::@parameter::_t1#element |
| synthetic set t2 |
| reference: <testLibraryFragment>::@setter::t2 |
| element: <testLibraryFragment>::@setter::t2#element |
| formalParameters |
| _t2 |
| element: <testLibraryFragment>::@setter::t2::@parameter::_t2#element |
| functions |
| getC @56 |
| reference: <testLibraryFragment>::@function::getC |
| element: <testLibrary>::@function::getC |
| classes |
| class I |
| reference: <testLibrary>::@class::I |
| firstFragment: <testLibraryFragment>::@class::I |
| fields |
| f |
| firstFragment: <testLibraryFragment>::@class::I::@field::f |
| type: int |
| getter: <testLibraryFragment>::@class::I::@getter::f#element |
| setter: <testLibraryFragment>::@class::I::@setter::f#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::I::@constructor::new |
| getters |
| synthetic get f |
| firstFragment: <testLibraryFragment>::@class::I::@getter::f |
| returnType: int |
| setters |
| synthetic set f |
| firstFragment: <testLibraryFragment>::@class::I::@setter::f |
| formalParameters |
| requiredPositional _f |
| type: int |
| returnType: void |
| abstract class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| interfaces |
| I |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| topLevelVariables |
| hasInitializer t1 |
| reference: <testLibrary>::@topLevelVariable::t1 |
| firstFragment: <testLibraryFragment>::@topLevelVariable::t1 |
| type: int |
| getter: <testLibraryFragment>::@getter::t1#element |
| setter: <testLibraryFragment>::@setter::t1#element |
| hasInitializer t2 |
| reference: <testLibrary>::@topLevelVariable::t2 |
| firstFragment: <testLibraryFragment>::@topLevelVariable::t2 |
| type: int |
| getter: <testLibraryFragment>::@getter::t2#element |
| setter: <testLibraryFragment>::@setter::t2#element |
| getters |
| synthetic static get t1 |
| firstFragment: <testLibraryFragment>::@getter::t1 |
| returnType: int |
| synthetic static get t2 |
| firstFragment: <testLibraryFragment>::@getter::t2 |
| returnType: int |
| setters |
| synthetic static set t1 |
| firstFragment: <testLibraryFragment>::@setter::t1 |
| formalParameters |
| requiredPositional _t1 |
| type: int |
| returnType: void |
| synthetic static set t2 |
| firstFragment: <testLibraryFragment>::@setter::t2 |
| formalParameters |
| requiredPositional _t2 |
| type: int |
| returnType: void |
| functions |
| getC |
| reference: <testLibrary>::@function::getC |
| firstFragment: <testLibraryFragment>::@function::getC |
| returnType: C |
| '''); |
| } |
| |
| test_initializer_await() async { |
| var library = await _encodeDecodeLibrary(r''' |
| import 'dart:async'; |
| int fValue() => 42; |
| Future<int> fFuture() async => 42; |
| var uValue = () async => await fValue(); |
| var uFuture = () async => await fFuture(); |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| libraryImports |
| dart:async |
| topLevelVariables |
| hasInitializer uValue @80 |
| reference: <testLibraryFragment>::@topLevelVariable::uValue |
| element: <testLibrary>::@topLevelVariable::uValue |
| getter2: <testLibraryFragment>::@getter::uValue |
| setter2: <testLibraryFragment>::@setter::uValue |
| hasInitializer uFuture @121 |
| reference: <testLibraryFragment>::@topLevelVariable::uFuture |
| element: <testLibrary>::@topLevelVariable::uFuture |
| getter2: <testLibraryFragment>::@getter::uFuture |
| setter2: <testLibraryFragment>::@setter::uFuture |
| getters |
| synthetic get uValue |
| reference: <testLibraryFragment>::@getter::uValue |
| element: <testLibraryFragment>::@getter::uValue#element |
| synthetic get uFuture |
| reference: <testLibraryFragment>::@getter::uFuture |
| element: <testLibraryFragment>::@getter::uFuture#element |
| setters |
| synthetic set uValue |
| reference: <testLibraryFragment>::@setter::uValue |
| element: <testLibraryFragment>::@setter::uValue#element |
| formalParameters |
| _uValue |
| element: <testLibraryFragment>::@setter::uValue::@parameter::_uValue#element |
| synthetic set uFuture |
| reference: <testLibraryFragment>::@setter::uFuture |
| element: <testLibraryFragment>::@setter::uFuture#element |
| formalParameters |
| _uFuture |
| element: <testLibraryFragment>::@setter::uFuture::@parameter::_uFuture#element |
| functions |
| fValue @25 |
| reference: <testLibraryFragment>::@function::fValue |
| element: <testLibrary>::@function::fValue |
| fFuture @53 |
| reference: <testLibraryFragment>::@function::fFuture |
| element: <testLibrary>::@function::fFuture |
| topLevelVariables |
| hasInitializer uValue |
| reference: <testLibrary>::@topLevelVariable::uValue |
| firstFragment: <testLibraryFragment>::@topLevelVariable::uValue |
| type: Future<int> Function() |
| getter: <testLibraryFragment>::@getter::uValue#element |
| setter: <testLibraryFragment>::@setter::uValue#element |
| hasInitializer uFuture |
| reference: <testLibrary>::@topLevelVariable::uFuture |
| firstFragment: <testLibraryFragment>::@topLevelVariable::uFuture |
| type: Future<int> Function() |
| getter: <testLibraryFragment>::@getter::uFuture#element |
| setter: <testLibraryFragment>::@setter::uFuture#element |
| getters |
| synthetic static get uValue |
| firstFragment: <testLibraryFragment>::@getter::uValue |
| returnType: Future<int> Function() |
| synthetic static get uFuture |
| firstFragment: <testLibraryFragment>::@getter::uFuture |
| returnType: Future<int> Function() |
| setters |
| synthetic static set uValue |
| firstFragment: <testLibraryFragment>::@setter::uValue |
| formalParameters |
| requiredPositional _uValue |
| type: Future<int> Function() |
| returnType: void |
| synthetic static set uFuture |
| firstFragment: <testLibraryFragment>::@setter::uFuture |
| formalParameters |
| requiredPositional _uFuture |
| type: Future<int> Function() |
| returnType: void |
| functions |
| fValue |
| reference: <testLibrary>::@function::fValue |
| firstFragment: <testLibraryFragment>::@function::fValue |
| returnType: int |
| fFuture |
| reference: <testLibrary>::@function::fFuture |
| firstFragment: <testLibraryFragment>::@function::fFuture |
| returnType: Future<int> |
| '''); |
| } |
| |
| test_initializer_bitwise() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var vBitXor = 1 ^ 2; |
| var vBitAnd = 1 & 2; |
| var vBitOr = 1 | 2; |
| var vBitShiftLeft = 1 << 2; |
| var vBitShiftRight = 1 >> 2; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer vBitXor @4 |
| reference: <testLibraryFragment>::@topLevelVariable::vBitXor |
| element: <testLibrary>::@topLevelVariable::vBitXor |
| getter2: <testLibraryFragment>::@getter::vBitXor |
| setter2: <testLibraryFragment>::@setter::vBitXor |
| hasInitializer vBitAnd @25 |
| reference: <testLibraryFragment>::@topLevelVariable::vBitAnd |
| element: <testLibrary>::@topLevelVariable::vBitAnd |
| getter2: <testLibraryFragment>::@getter::vBitAnd |
| setter2: <testLibraryFragment>::@setter::vBitAnd |
| hasInitializer vBitOr @46 |
| reference: <testLibraryFragment>::@topLevelVariable::vBitOr |
| element: <testLibrary>::@topLevelVariable::vBitOr |
| getter2: <testLibraryFragment>::@getter::vBitOr |
| setter2: <testLibraryFragment>::@setter::vBitOr |
| hasInitializer vBitShiftLeft @66 |
| reference: <testLibraryFragment>::@topLevelVariable::vBitShiftLeft |
| element: <testLibrary>::@topLevelVariable::vBitShiftLeft |
| getter2: <testLibraryFragment>::@getter::vBitShiftLeft |
| setter2: <testLibraryFragment>::@setter::vBitShiftLeft |
| hasInitializer vBitShiftRight @94 |
| reference: <testLibraryFragment>::@topLevelVariable::vBitShiftRight |
| element: <testLibrary>::@topLevelVariable::vBitShiftRight |
| getter2: <testLibraryFragment>::@getter::vBitShiftRight |
| setter2: <testLibraryFragment>::@setter::vBitShiftRight |
| getters |
| synthetic get vBitXor |
| reference: <testLibraryFragment>::@getter::vBitXor |
| element: <testLibraryFragment>::@getter::vBitXor#element |
| synthetic get vBitAnd |
| reference: <testLibraryFragment>::@getter::vBitAnd |
| element: <testLibraryFragment>::@getter::vBitAnd#element |
| synthetic get vBitOr |
| reference: <testLibraryFragment>::@getter::vBitOr |
| element: <testLibraryFragment>::@getter::vBitOr#element |
| synthetic get vBitShiftLeft |
| reference: <testLibraryFragment>::@getter::vBitShiftLeft |
| element: <testLibraryFragment>::@getter::vBitShiftLeft#element |
| synthetic get vBitShiftRight |
| reference: <testLibraryFragment>::@getter::vBitShiftRight |
| element: <testLibraryFragment>::@getter::vBitShiftRight#element |
| setters |
| synthetic set vBitXor |
| reference: <testLibraryFragment>::@setter::vBitXor |
| element: <testLibraryFragment>::@setter::vBitXor#element |
| formalParameters |
| _vBitXor |
| element: <testLibraryFragment>::@setter::vBitXor::@parameter::_vBitXor#element |
| synthetic set vBitAnd |
| reference: <testLibraryFragment>::@setter::vBitAnd |
| element: <testLibraryFragment>::@setter::vBitAnd#element |
| formalParameters |
| _vBitAnd |
| element: <testLibraryFragment>::@setter::vBitAnd::@parameter::_vBitAnd#element |
| synthetic set vBitOr |
| reference: <testLibraryFragment>::@setter::vBitOr |
| element: <testLibraryFragment>::@setter::vBitOr#element |
| formalParameters |
| _vBitOr |
| element: <testLibraryFragment>::@setter::vBitOr::@parameter::_vBitOr#element |
| synthetic set vBitShiftLeft |
| reference: <testLibraryFragment>::@setter::vBitShiftLeft |
| element: <testLibraryFragment>::@setter::vBitShiftLeft#element |
| formalParameters |
| _vBitShiftLeft |
| element: <testLibraryFragment>::@setter::vBitShiftLeft::@parameter::_vBitShiftLeft#element |
| synthetic set vBitShiftRight |
| reference: <testLibraryFragment>::@setter::vBitShiftRight |
| element: <testLibraryFragment>::@setter::vBitShiftRight#element |
| formalParameters |
| _vBitShiftRight |
| element: <testLibraryFragment>::@setter::vBitShiftRight::@parameter::_vBitShiftRight#element |
| topLevelVariables |
| hasInitializer vBitXor |
| reference: <testLibrary>::@topLevelVariable::vBitXor |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vBitXor |
| type: int |
| getter: <testLibraryFragment>::@getter::vBitXor#element |
| setter: <testLibraryFragment>::@setter::vBitXor#element |
| hasInitializer vBitAnd |
| reference: <testLibrary>::@topLevelVariable::vBitAnd |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vBitAnd |
| type: int |
| getter: <testLibraryFragment>::@getter::vBitAnd#element |
| setter: <testLibraryFragment>::@setter::vBitAnd#element |
| hasInitializer vBitOr |
| reference: <testLibrary>::@topLevelVariable::vBitOr |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vBitOr |
| type: int |
| getter: <testLibraryFragment>::@getter::vBitOr#element |
| setter: <testLibraryFragment>::@setter::vBitOr#element |
| hasInitializer vBitShiftLeft |
| reference: <testLibrary>::@topLevelVariable::vBitShiftLeft |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vBitShiftLeft |
| type: int |
| getter: <testLibraryFragment>::@getter::vBitShiftLeft#element |
| setter: <testLibraryFragment>::@setter::vBitShiftLeft#element |
| hasInitializer vBitShiftRight |
| reference: <testLibrary>::@topLevelVariable::vBitShiftRight |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vBitShiftRight |
| type: int |
| getter: <testLibraryFragment>::@getter::vBitShiftRight#element |
| setter: <testLibraryFragment>::@setter::vBitShiftRight#element |
| getters |
| synthetic static get vBitXor |
| firstFragment: <testLibraryFragment>::@getter::vBitXor |
| returnType: int |
| synthetic static get vBitAnd |
| firstFragment: <testLibraryFragment>::@getter::vBitAnd |
| returnType: int |
| synthetic static get vBitOr |
| firstFragment: <testLibraryFragment>::@getter::vBitOr |
| returnType: int |
| synthetic static get vBitShiftLeft |
| firstFragment: <testLibraryFragment>::@getter::vBitShiftLeft |
| returnType: int |
| synthetic static get vBitShiftRight |
| firstFragment: <testLibraryFragment>::@getter::vBitShiftRight |
| returnType: int |
| setters |
| synthetic static set vBitXor |
| firstFragment: <testLibraryFragment>::@setter::vBitXor |
| formalParameters |
| requiredPositional _vBitXor |
| type: int |
| returnType: void |
| synthetic static set vBitAnd |
| firstFragment: <testLibraryFragment>::@setter::vBitAnd |
| formalParameters |
| requiredPositional _vBitAnd |
| type: int |
| returnType: void |
| synthetic static set vBitOr |
| firstFragment: <testLibraryFragment>::@setter::vBitOr |
| formalParameters |
| requiredPositional _vBitOr |
| type: int |
| returnType: void |
| synthetic static set vBitShiftLeft |
| firstFragment: <testLibraryFragment>::@setter::vBitShiftLeft |
| formalParameters |
| requiredPositional _vBitShiftLeft |
| type: int |
| returnType: void |
| synthetic static set vBitShiftRight |
| firstFragment: <testLibraryFragment>::@setter::vBitShiftRight |
| formalParameters |
| requiredPositional _vBitShiftRight |
| type: int |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_cascade() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A { |
| int a; |
| void m() {} |
| } |
| var vSetField = new A()..a = 1; |
| var vInvokeMethod = new A()..m(); |
| var vBoth = new A()..a = 1..m(); |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| fields |
| a @16 |
| reference: <testLibraryFragment>::@class::A::@field::a |
| element: <testLibraryFragment>::@class::A::@field::a#element |
| getter2: <testLibraryFragment>::@class::A::@getter::a |
| setter2: <testLibraryFragment>::@class::A::@setter::a |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| getters |
| synthetic get a |
| reference: <testLibraryFragment>::@class::A::@getter::a |
| element: <testLibraryFragment>::@class::A::@getter::a#element |
| setters |
| synthetic set a |
| reference: <testLibraryFragment>::@class::A::@setter::a |
| element: <testLibraryFragment>::@class::A::@setter::a#element |
| formalParameters |
| _a |
| element: <testLibraryFragment>::@class::A::@setter::a::@parameter::_a#element |
| methods |
| m @26 |
| reference: <testLibraryFragment>::@class::A::@method::m |
| element: <testLibrary>::@class::A::@method::m |
| topLevelVariables |
| hasInitializer vSetField @39 |
| reference: <testLibraryFragment>::@topLevelVariable::vSetField |
| element: <testLibrary>::@topLevelVariable::vSetField |
| getter2: <testLibraryFragment>::@getter::vSetField |
| setter2: <testLibraryFragment>::@setter::vSetField |
| hasInitializer vInvokeMethod @71 |
| reference: <testLibraryFragment>::@topLevelVariable::vInvokeMethod |
| element: <testLibrary>::@topLevelVariable::vInvokeMethod |
| getter2: <testLibraryFragment>::@getter::vInvokeMethod |
| setter2: <testLibraryFragment>::@setter::vInvokeMethod |
| hasInitializer vBoth @105 |
| reference: <testLibraryFragment>::@topLevelVariable::vBoth |
| element: <testLibrary>::@topLevelVariable::vBoth |
| getter2: <testLibraryFragment>::@getter::vBoth |
| setter2: <testLibraryFragment>::@setter::vBoth |
| getters |
| synthetic get vSetField |
| reference: <testLibraryFragment>::@getter::vSetField |
| element: <testLibraryFragment>::@getter::vSetField#element |
| synthetic get vInvokeMethod |
| reference: <testLibraryFragment>::@getter::vInvokeMethod |
| element: <testLibraryFragment>::@getter::vInvokeMethod#element |
| synthetic get vBoth |
| reference: <testLibraryFragment>::@getter::vBoth |
| element: <testLibraryFragment>::@getter::vBoth#element |
| setters |
| synthetic set vSetField |
| reference: <testLibraryFragment>::@setter::vSetField |
| element: <testLibraryFragment>::@setter::vSetField#element |
| formalParameters |
| _vSetField |
| element: <testLibraryFragment>::@setter::vSetField::@parameter::_vSetField#element |
| synthetic set vInvokeMethod |
| reference: <testLibraryFragment>::@setter::vInvokeMethod |
| element: <testLibraryFragment>::@setter::vInvokeMethod#element |
| formalParameters |
| _vInvokeMethod |
| element: <testLibraryFragment>::@setter::vInvokeMethod::@parameter::_vInvokeMethod#element |
| synthetic set vBoth |
| reference: <testLibraryFragment>::@setter::vBoth |
| element: <testLibraryFragment>::@setter::vBoth#element |
| formalParameters |
| _vBoth |
| element: <testLibraryFragment>::@setter::vBoth::@parameter::_vBoth#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| fields |
| a |
| firstFragment: <testLibraryFragment>::@class::A::@field::a |
| type: int |
| getter: <testLibraryFragment>::@class::A::@getter::a#element |
| setter: <testLibraryFragment>::@class::A::@setter::a#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| getters |
| synthetic get a |
| firstFragment: <testLibraryFragment>::@class::A::@getter::a |
| returnType: int |
| setters |
| synthetic set a |
| firstFragment: <testLibraryFragment>::@class::A::@setter::a |
| formalParameters |
| requiredPositional _a |
| type: int |
| returnType: void |
| methods |
| m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: <testLibraryFragment>::@class::A::@method::m |
| returnType: void |
| topLevelVariables |
| hasInitializer vSetField |
| reference: <testLibrary>::@topLevelVariable::vSetField |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vSetField |
| type: A |
| getter: <testLibraryFragment>::@getter::vSetField#element |
| setter: <testLibraryFragment>::@setter::vSetField#element |
| hasInitializer vInvokeMethod |
| reference: <testLibrary>::@topLevelVariable::vInvokeMethod |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vInvokeMethod |
| type: A |
| getter: <testLibraryFragment>::@getter::vInvokeMethod#element |
| setter: <testLibraryFragment>::@setter::vInvokeMethod#element |
| hasInitializer vBoth |
| reference: <testLibrary>::@topLevelVariable::vBoth |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vBoth |
| type: A |
| getter: <testLibraryFragment>::@getter::vBoth#element |
| setter: <testLibraryFragment>::@setter::vBoth#element |
| getters |
| synthetic static get vSetField |
| firstFragment: <testLibraryFragment>::@getter::vSetField |
| returnType: A |
| synthetic static get vInvokeMethod |
| firstFragment: <testLibraryFragment>::@getter::vInvokeMethod |
| returnType: A |
| synthetic static get vBoth |
| firstFragment: <testLibraryFragment>::@getter::vBoth |
| returnType: A |
| setters |
| synthetic static set vSetField |
| firstFragment: <testLibraryFragment>::@setter::vSetField |
| formalParameters |
| requiredPositional _vSetField |
| type: A |
| returnType: void |
| synthetic static set vInvokeMethod |
| firstFragment: <testLibraryFragment>::@setter::vInvokeMethod |
| formalParameters |
| requiredPositional _vInvokeMethod |
| type: A |
| returnType: void |
| synthetic static set vBoth |
| firstFragment: <testLibraryFragment>::@setter::vBoth |
| formalParameters |
| requiredPositional _vBoth |
| type: A |
| returnType: void |
| '''); |
| } |
| |
| /// A simple or qualified identifier referring to a top level function, static |
| /// variable, field, getter; or a static class variable, static getter or |
| /// method; or an instance method; has the inferred type of the identifier. |
| /// |
| test_initializer_classField_useInstanceGetter() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A { |
| int f = 1; |
| } |
| class B { |
| A a; |
| } |
| class C { |
| B b; |
| } |
| class X { |
| A a = new A(); |
| B b = new B(); |
| C c = new C(); |
| var t01 = a.f; |
| var t02 = b.a.f; |
| var t03 = c.b.a.f; |
| var t11 = new A().f; |
| var t12 = new B().a.f; |
| var t13 = new C().b.a.f; |
| var t21 = newA().f; |
| var t22 = newB().a.f; |
| var t23 = newC().b.a.f; |
| } |
| A newA() => new A(); |
| B newB() => new B(); |
| C newC() => new C(); |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| fields |
| hasInitializer f @16 |
| reference: <testLibraryFragment>::@class::A::@field::f |
| element: <testLibraryFragment>::@class::A::@field::f#element |
| getter2: <testLibraryFragment>::@class::A::@getter::f |
| setter2: <testLibraryFragment>::@class::A::@setter::f |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| getters |
| synthetic get f |
| reference: <testLibraryFragment>::@class::A::@getter::f |
| element: <testLibraryFragment>::@class::A::@getter::f#element |
| setters |
| synthetic set f |
| reference: <testLibraryFragment>::@class::A::@setter::f |
| element: <testLibraryFragment>::@class::A::@setter::f#element |
| formalParameters |
| _f |
| element: <testLibraryFragment>::@class::A::@setter::f::@parameter::_f#element |
| class B @31 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| fields |
| a @39 |
| reference: <testLibraryFragment>::@class::B::@field::a |
| element: <testLibraryFragment>::@class::B::@field::a#element |
| getter2: <testLibraryFragment>::@class::B::@getter::a |
| setter2: <testLibraryFragment>::@class::B::@setter::a |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| getters |
| synthetic get a |
| reference: <testLibraryFragment>::@class::B::@getter::a |
| element: <testLibraryFragment>::@class::B::@getter::a#element |
| setters |
| synthetic set a |
| reference: <testLibraryFragment>::@class::B::@setter::a |
| element: <testLibraryFragment>::@class::B::@setter::a#element |
| formalParameters |
| _a |
| element: <testLibraryFragment>::@class::B::@setter::a::@parameter::_a#element |
| class C @50 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| fields |
| b @58 |
| reference: <testLibraryFragment>::@class::C::@field::b |
| element: <testLibraryFragment>::@class::C::@field::b#element |
| getter2: <testLibraryFragment>::@class::C::@getter::b |
| setter2: <testLibraryFragment>::@class::C::@setter::b |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| getters |
| synthetic get b |
| reference: <testLibraryFragment>::@class::C::@getter::b |
| element: <testLibraryFragment>::@class::C::@getter::b#element |
| setters |
| synthetic set b |
| reference: <testLibraryFragment>::@class::C::@setter::b |
| element: <testLibraryFragment>::@class::C::@setter::b#element |
| formalParameters |
| _b |
| element: <testLibraryFragment>::@class::C::@setter::b::@parameter::_b#element |
| class X @69 |
| reference: <testLibraryFragment>::@class::X |
| element: <testLibrary>::@class::X |
| fields |
| hasInitializer a @77 |
| reference: <testLibraryFragment>::@class::X::@field::a |
| element: <testLibraryFragment>::@class::X::@field::a#element |
| getter2: <testLibraryFragment>::@class::X::@getter::a |
| setter2: <testLibraryFragment>::@class::X::@setter::a |
| hasInitializer b @94 |
| reference: <testLibraryFragment>::@class::X::@field::b |
| element: <testLibraryFragment>::@class::X::@field::b#element |
| getter2: <testLibraryFragment>::@class::X::@getter::b |
| setter2: <testLibraryFragment>::@class::X::@setter::b |
| hasInitializer c @111 |
| reference: <testLibraryFragment>::@class::X::@field::c |
| element: <testLibraryFragment>::@class::X::@field::c#element |
| getter2: <testLibraryFragment>::@class::X::@getter::c |
| setter2: <testLibraryFragment>::@class::X::@setter::c |
| hasInitializer t01 @130 |
| reference: <testLibraryFragment>::@class::X::@field::t01 |
| element: <testLibraryFragment>::@class::X::@field::t01#element |
| getter2: <testLibraryFragment>::@class::X::@getter::t01 |
| setter2: <testLibraryFragment>::@class::X::@setter::t01 |
| hasInitializer t02 @147 |
| reference: <testLibraryFragment>::@class::X::@field::t02 |
| element: <testLibraryFragment>::@class::X::@field::t02#element |
| getter2: <testLibraryFragment>::@class::X::@getter::t02 |
| setter2: <testLibraryFragment>::@class::X::@setter::t02 |
| hasInitializer t03 @166 |
| reference: <testLibraryFragment>::@class::X::@field::t03 |
| element: <testLibraryFragment>::@class::X::@field::t03#element |
| getter2: <testLibraryFragment>::@class::X::@getter::t03 |
| setter2: <testLibraryFragment>::@class::X::@setter::t03 |
| hasInitializer t11 @187 |
| reference: <testLibraryFragment>::@class::X::@field::t11 |
| element: <testLibraryFragment>::@class::X::@field::t11#element |
| getter2: <testLibraryFragment>::@class::X::@getter::t11 |
| setter2: <testLibraryFragment>::@class::X::@setter::t11 |
| hasInitializer t12 @210 |
| reference: <testLibraryFragment>::@class::X::@field::t12 |
| element: <testLibraryFragment>::@class::X::@field::t12#element |
| getter2: <testLibraryFragment>::@class::X::@getter::t12 |
| setter2: <testLibraryFragment>::@class::X::@setter::t12 |
| hasInitializer t13 @235 |
| reference: <testLibraryFragment>::@class::X::@field::t13 |
| element: <testLibraryFragment>::@class::X::@field::t13#element |
| getter2: <testLibraryFragment>::@class::X::@getter::t13 |
| setter2: <testLibraryFragment>::@class::X::@setter::t13 |
| hasInitializer t21 @262 |
| reference: <testLibraryFragment>::@class::X::@field::t21 |
| element: <testLibraryFragment>::@class::X::@field::t21#element |
| getter2: <testLibraryFragment>::@class::X::@getter::t21 |
| setter2: <testLibraryFragment>::@class::X::@setter::t21 |
| hasInitializer t22 @284 |
| reference: <testLibraryFragment>::@class::X::@field::t22 |
| element: <testLibraryFragment>::@class::X::@field::t22#element |
| getter2: <testLibraryFragment>::@class::X::@getter::t22 |
| setter2: <testLibraryFragment>::@class::X::@setter::t22 |
| hasInitializer t23 @308 |
| reference: <testLibraryFragment>::@class::X::@field::t23 |
| element: <testLibraryFragment>::@class::X::@field::t23#element |
| getter2: <testLibraryFragment>::@class::X::@getter::t23 |
| setter2: <testLibraryFragment>::@class::X::@setter::t23 |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::X::@constructor::new |
| element: <testLibraryFragment>::@class::X::@constructor::new#element |
| typeName: X |
| getters |
| synthetic get a |
| reference: <testLibraryFragment>::@class::X::@getter::a |
| element: <testLibraryFragment>::@class::X::@getter::a#element |
| synthetic get b |
| reference: <testLibraryFragment>::@class::X::@getter::b |
| element: <testLibraryFragment>::@class::X::@getter::b#element |
| synthetic get c |
| reference: <testLibraryFragment>::@class::X::@getter::c |
| element: <testLibraryFragment>::@class::X::@getter::c#element |
| synthetic get t01 |
| reference: <testLibraryFragment>::@class::X::@getter::t01 |
| element: <testLibraryFragment>::@class::X::@getter::t01#element |
| synthetic get t02 |
| reference: <testLibraryFragment>::@class::X::@getter::t02 |
| element: <testLibraryFragment>::@class::X::@getter::t02#element |
| synthetic get t03 |
| reference: <testLibraryFragment>::@class::X::@getter::t03 |
| element: <testLibraryFragment>::@class::X::@getter::t03#element |
| synthetic get t11 |
| reference: <testLibraryFragment>::@class::X::@getter::t11 |
| element: <testLibraryFragment>::@class::X::@getter::t11#element |
| synthetic get t12 |
| reference: <testLibraryFragment>::@class::X::@getter::t12 |
| element: <testLibraryFragment>::@class::X::@getter::t12#element |
| synthetic get t13 |
| reference: <testLibraryFragment>::@class::X::@getter::t13 |
| element: <testLibraryFragment>::@class::X::@getter::t13#element |
| synthetic get t21 |
| reference: <testLibraryFragment>::@class::X::@getter::t21 |
| element: <testLibraryFragment>::@class::X::@getter::t21#element |
| synthetic get t22 |
| reference: <testLibraryFragment>::@class::X::@getter::t22 |
| element: <testLibraryFragment>::@class::X::@getter::t22#element |
| synthetic get t23 |
| reference: <testLibraryFragment>::@class::X::@getter::t23 |
| element: <testLibraryFragment>::@class::X::@getter::t23#element |
| setters |
| synthetic set a |
| reference: <testLibraryFragment>::@class::X::@setter::a |
| element: <testLibraryFragment>::@class::X::@setter::a#element |
| formalParameters |
| _a |
| element: <testLibraryFragment>::@class::X::@setter::a::@parameter::_a#element |
| synthetic set b |
| reference: <testLibraryFragment>::@class::X::@setter::b |
| element: <testLibraryFragment>::@class::X::@setter::b#element |
| formalParameters |
| _b |
| element: <testLibraryFragment>::@class::X::@setter::b::@parameter::_b#element |
| synthetic set c |
| reference: <testLibraryFragment>::@class::X::@setter::c |
| element: <testLibraryFragment>::@class::X::@setter::c#element |
| formalParameters |
| _c |
| element: <testLibraryFragment>::@class::X::@setter::c::@parameter::_c#element |
| synthetic set t01 |
| reference: <testLibraryFragment>::@class::X::@setter::t01 |
| element: <testLibraryFragment>::@class::X::@setter::t01#element |
| formalParameters |
| _t01 |
| element: <testLibraryFragment>::@class::X::@setter::t01::@parameter::_t01#element |
| synthetic set t02 |
| reference: <testLibraryFragment>::@class::X::@setter::t02 |
| element: <testLibraryFragment>::@class::X::@setter::t02#element |
| formalParameters |
| _t02 |
| element: <testLibraryFragment>::@class::X::@setter::t02::@parameter::_t02#element |
| synthetic set t03 |
| reference: <testLibraryFragment>::@class::X::@setter::t03 |
| element: <testLibraryFragment>::@class::X::@setter::t03#element |
| formalParameters |
| _t03 |
| element: <testLibraryFragment>::@class::X::@setter::t03::@parameter::_t03#element |
| synthetic set t11 |
| reference: <testLibraryFragment>::@class::X::@setter::t11 |
| element: <testLibraryFragment>::@class::X::@setter::t11#element |
| formalParameters |
| _t11 |
| element: <testLibraryFragment>::@class::X::@setter::t11::@parameter::_t11#element |
| synthetic set t12 |
| reference: <testLibraryFragment>::@class::X::@setter::t12 |
| element: <testLibraryFragment>::@class::X::@setter::t12#element |
| formalParameters |
| _t12 |
| element: <testLibraryFragment>::@class::X::@setter::t12::@parameter::_t12#element |
| synthetic set t13 |
| reference: <testLibraryFragment>::@class::X::@setter::t13 |
| element: <testLibraryFragment>::@class::X::@setter::t13#element |
| formalParameters |
| _t13 |
| element: <testLibraryFragment>::@class::X::@setter::t13::@parameter::_t13#element |
| synthetic set t21 |
| reference: <testLibraryFragment>::@class::X::@setter::t21 |
| element: <testLibraryFragment>::@class::X::@setter::t21#element |
| formalParameters |
| _t21 |
| element: <testLibraryFragment>::@class::X::@setter::t21::@parameter::_t21#element |
| synthetic set t22 |
| reference: <testLibraryFragment>::@class::X::@setter::t22 |
| element: <testLibraryFragment>::@class::X::@setter::t22#element |
| formalParameters |
| _t22 |
| element: <testLibraryFragment>::@class::X::@setter::t22::@parameter::_t22#element |
| synthetic set t23 |
| reference: <testLibraryFragment>::@class::X::@setter::t23 |
| element: <testLibraryFragment>::@class::X::@setter::t23#element |
| formalParameters |
| _t23 |
| element: <testLibraryFragment>::@class::X::@setter::t23::@parameter::_t23#element |
| functions |
| newA @332 |
| reference: <testLibraryFragment>::@function::newA |
| element: <testLibrary>::@function::newA |
| newB @353 |
| reference: <testLibraryFragment>::@function::newB |
| element: <testLibrary>::@function::newB |
| newC @374 |
| reference: <testLibraryFragment>::@function::newC |
| element: <testLibrary>::@function::newC |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| fields |
| hasInitializer f |
| firstFragment: <testLibraryFragment>::@class::A::@field::f |
| type: int |
| getter: <testLibraryFragment>::@class::A::@getter::f#element |
| setter: <testLibraryFragment>::@class::A::@setter::f#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| getters |
| synthetic get f |
| firstFragment: <testLibraryFragment>::@class::A::@getter::f |
| returnType: int |
| setters |
| synthetic set f |
| firstFragment: <testLibraryFragment>::@class::A::@setter::f |
| formalParameters |
| requiredPositional _f |
| type: int |
| returnType: void |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| fields |
| a |
| firstFragment: <testLibraryFragment>::@class::B::@field::a |
| type: A |
| getter: <testLibraryFragment>::@class::B::@getter::a#element |
| setter: <testLibraryFragment>::@class::B::@setter::a#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| getters |
| synthetic get a |
| firstFragment: <testLibraryFragment>::@class::B::@getter::a |
| returnType: A |
| setters |
| synthetic set a |
| firstFragment: <testLibraryFragment>::@class::B::@setter::a |
| formalParameters |
| requiredPositional _a |
| type: A |
| returnType: void |
| class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| fields |
| b |
| firstFragment: <testLibraryFragment>::@class::C::@field::b |
| type: B |
| getter: <testLibraryFragment>::@class::C::@getter::b#element |
| setter: <testLibraryFragment>::@class::C::@setter::b#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| getters |
| synthetic get b |
| firstFragment: <testLibraryFragment>::@class::C::@getter::b |
| returnType: B |
| setters |
| synthetic set b |
| firstFragment: <testLibraryFragment>::@class::C::@setter::b |
| formalParameters |
| requiredPositional _b |
| type: B |
| returnType: void |
| class X |
| reference: <testLibrary>::@class::X |
| firstFragment: <testLibraryFragment>::@class::X |
| fields |
| hasInitializer a |
| firstFragment: <testLibraryFragment>::@class::X::@field::a |
| type: A |
| getter: <testLibraryFragment>::@class::X::@getter::a#element |
| setter: <testLibraryFragment>::@class::X::@setter::a#element |
| hasInitializer b |
| firstFragment: <testLibraryFragment>::@class::X::@field::b |
| type: B |
| getter: <testLibraryFragment>::@class::X::@getter::b#element |
| setter: <testLibraryFragment>::@class::X::@setter::b#element |
| hasInitializer c |
| firstFragment: <testLibraryFragment>::@class::X::@field::c |
| type: C |
| getter: <testLibraryFragment>::@class::X::@getter::c#element |
| setter: <testLibraryFragment>::@class::X::@setter::c#element |
| hasInitializer t01 |
| firstFragment: <testLibraryFragment>::@class::X::@field::t01 |
| type: int |
| getter: <testLibraryFragment>::@class::X::@getter::t01#element |
| setter: <testLibraryFragment>::@class::X::@setter::t01#element |
| hasInitializer t02 |
| firstFragment: <testLibraryFragment>::@class::X::@field::t02 |
| type: int |
| getter: <testLibraryFragment>::@class::X::@getter::t02#element |
| setter: <testLibraryFragment>::@class::X::@setter::t02#element |
| hasInitializer t03 |
| firstFragment: <testLibraryFragment>::@class::X::@field::t03 |
| type: int |
| getter: <testLibraryFragment>::@class::X::@getter::t03#element |
| setter: <testLibraryFragment>::@class::X::@setter::t03#element |
| hasInitializer t11 |
| firstFragment: <testLibraryFragment>::@class::X::@field::t11 |
| type: int |
| getter: <testLibraryFragment>::@class::X::@getter::t11#element |
| setter: <testLibraryFragment>::@class::X::@setter::t11#element |
| hasInitializer t12 |
| firstFragment: <testLibraryFragment>::@class::X::@field::t12 |
| type: int |
| getter: <testLibraryFragment>::@class::X::@getter::t12#element |
| setter: <testLibraryFragment>::@class::X::@setter::t12#element |
| hasInitializer t13 |
| firstFragment: <testLibraryFragment>::@class::X::@field::t13 |
| type: int |
| getter: <testLibraryFragment>::@class::X::@getter::t13#element |
| setter: <testLibraryFragment>::@class::X::@setter::t13#element |
| hasInitializer t21 |
| firstFragment: <testLibraryFragment>::@class::X::@field::t21 |
| type: int |
| getter: <testLibraryFragment>::@class::X::@getter::t21#element |
| setter: <testLibraryFragment>::@class::X::@setter::t21#element |
| hasInitializer t22 |
| firstFragment: <testLibraryFragment>::@class::X::@field::t22 |
| type: int |
| getter: <testLibraryFragment>::@class::X::@getter::t22#element |
| setter: <testLibraryFragment>::@class::X::@setter::t22#element |
| hasInitializer t23 |
| firstFragment: <testLibraryFragment>::@class::X::@field::t23 |
| type: int |
| getter: <testLibraryFragment>::@class::X::@getter::t23#element |
| setter: <testLibraryFragment>::@class::X::@setter::t23#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::X::@constructor::new |
| getters |
| synthetic get a |
| firstFragment: <testLibraryFragment>::@class::X::@getter::a |
| returnType: A |
| synthetic get b |
| firstFragment: <testLibraryFragment>::@class::X::@getter::b |
| returnType: B |
| synthetic get c |
| firstFragment: <testLibraryFragment>::@class::X::@getter::c |
| returnType: C |
| synthetic get t01 |
| firstFragment: <testLibraryFragment>::@class::X::@getter::t01 |
| returnType: int |
| synthetic get t02 |
| firstFragment: <testLibraryFragment>::@class::X::@getter::t02 |
| returnType: int |
| synthetic get t03 |
| firstFragment: <testLibraryFragment>::@class::X::@getter::t03 |
| returnType: int |
| synthetic get t11 |
| firstFragment: <testLibraryFragment>::@class::X::@getter::t11 |
| returnType: int |
| synthetic get t12 |
| firstFragment: <testLibraryFragment>::@class::X::@getter::t12 |
| returnType: int |
| synthetic get t13 |
| firstFragment: <testLibraryFragment>::@class::X::@getter::t13 |
| returnType: int |
| synthetic get t21 |
| firstFragment: <testLibraryFragment>::@class::X::@getter::t21 |
| returnType: int |
| synthetic get t22 |
| firstFragment: <testLibraryFragment>::@class::X::@getter::t22 |
| returnType: int |
| synthetic get t23 |
| firstFragment: <testLibraryFragment>::@class::X::@getter::t23 |
| returnType: int |
| setters |
| synthetic set a |
| firstFragment: <testLibraryFragment>::@class::X::@setter::a |
| formalParameters |
| requiredPositional _a |
| type: A |
| returnType: void |
| synthetic set b |
| firstFragment: <testLibraryFragment>::@class::X::@setter::b |
| formalParameters |
| requiredPositional _b |
| type: B |
| returnType: void |
| synthetic set c |
| firstFragment: <testLibraryFragment>::@class::X::@setter::c |
| formalParameters |
| requiredPositional _c |
| type: C |
| returnType: void |
| synthetic set t01 |
| firstFragment: <testLibraryFragment>::@class::X::@setter::t01 |
| formalParameters |
| requiredPositional _t01 |
| type: int |
| returnType: void |
| synthetic set t02 |
| firstFragment: <testLibraryFragment>::@class::X::@setter::t02 |
| formalParameters |
| requiredPositional _t02 |
| type: int |
| returnType: void |
| synthetic set t03 |
| firstFragment: <testLibraryFragment>::@class::X::@setter::t03 |
| formalParameters |
| requiredPositional _t03 |
| type: int |
| returnType: void |
| synthetic set t11 |
| firstFragment: <testLibraryFragment>::@class::X::@setter::t11 |
| formalParameters |
| requiredPositional _t11 |
| type: int |
| returnType: void |
| synthetic set t12 |
| firstFragment: <testLibraryFragment>::@class::X::@setter::t12 |
| formalParameters |
| requiredPositional _t12 |
| type: int |
| returnType: void |
| synthetic set t13 |
| firstFragment: <testLibraryFragment>::@class::X::@setter::t13 |
| formalParameters |
| requiredPositional _t13 |
| type: int |
| returnType: void |
| synthetic set t21 |
| firstFragment: <testLibraryFragment>::@class::X::@setter::t21 |
| formalParameters |
| requiredPositional _t21 |
| type: int |
| returnType: void |
| synthetic set t22 |
| firstFragment: <testLibraryFragment>::@class::X::@setter::t22 |
| formalParameters |
| requiredPositional _t22 |
| type: int |
| returnType: void |
| synthetic set t23 |
| firstFragment: <testLibraryFragment>::@class::X::@setter::t23 |
| formalParameters |
| requiredPositional _t23 |
| type: int |
| returnType: void |
| functions |
| newA |
| reference: <testLibrary>::@function::newA |
| firstFragment: <testLibraryFragment>::@function::newA |
| returnType: A |
| newB |
| reference: <testLibrary>::@function::newB |
| firstFragment: <testLibraryFragment>::@function::newB |
| returnType: B |
| newC |
| reference: <testLibrary>::@function::newC |
| firstFragment: <testLibraryFragment>::@function::newC |
| returnType: C |
| '''); |
| } |
| |
| test_initializer_conditional() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var V = true ? 1 : 2.3; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer V @4 |
| reference: <testLibraryFragment>::@topLevelVariable::V |
| element: <testLibrary>::@topLevelVariable::V |
| getter2: <testLibraryFragment>::@getter::V |
| setter2: <testLibraryFragment>::@setter::V |
| getters |
| synthetic get V |
| reference: <testLibraryFragment>::@getter::V |
| element: <testLibraryFragment>::@getter::V#element |
| setters |
| synthetic set V |
| reference: <testLibraryFragment>::@setter::V |
| element: <testLibraryFragment>::@setter::V#element |
| formalParameters |
| _V |
| element: <testLibraryFragment>::@setter::V::@parameter::_V#element |
| topLevelVariables |
| hasInitializer V |
| reference: <testLibrary>::@topLevelVariable::V |
| firstFragment: <testLibraryFragment>::@topLevelVariable::V |
| type: num |
| getter: <testLibraryFragment>::@getter::V#element |
| setter: <testLibraryFragment>::@setter::V#element |
| getters |
| synthetic static get V |
| firstFragment: <testLibraryFragment>::@getter::V |
| returnType: num |
| setters |
| synthetic static set V |
| firstFragment: <testLibraryFragment>::@setter::V |
| formalParameters |
| requiredPositional _V |
| type: num |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_equality() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var vEq = 1 == 2; |
| var vNotEq = 1 != 2; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer vEq @4 |
| reference: <testLibraryFragment>::@topLevelVariable::vEq |
| element: <testLibrary>::@topLevelVariable::vEq |
| getter2: <testLibraryFragment>::@getter::vEq |
| setter2: <testLibraryFragment>::@setter::vEq |
| hasInitializer vNotEq @22 |
| reference: <testLibraryFragment>::@topLevelVariable::vNotEq |
| element: <testLibrary>::@topLevelVariable::vNotEq |
| getter2: <testLibraryFragment>::@getter::vNotEq |
| setter2: <testLibraryFragment>::@setter::vNotEq |
| getters |
| synthetic get vEq |
| reference: <testLibraryFragment>::@getter::vEq |
| element: <testLibraryFragment>::@getter::vEq#element |
| synthetic get vNotEq |
| reference: <testLibraryFragment>::@getter::vNotEq |
| element: <testLibraryFragment>::@getter::vNotEq#element |
| setters |
| synthetic set vEq |
| reference: <testLibraryFragment>::@setter::vEq |
| element: <testLibraryFragment>::@setter::vEq#element |
| formalParameters |
| _vEq |
| element: <testLibraryFragment>::@setter::vEq::@parameter::_vEq#element |
| synthetic set vNotEq |
| reference: <testLibraryFragment>::@setter::vNotEq |
| element: <testLibraryFragment>::@setter::vNotEq#element |
| formalParameters |
| _vNotEq |
| element: <testLibraryFragment>::@setter::vNotEq::@parameter::_vNotEq#element |
| topLevelVariables |
| hasInitializer vEq |
| reference: <testLibrary>::@topLevelVariable::vEq |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vEq |
| type: bool |
| getter: <testLibraryFragment>::@getter::vEq#element |
| setter: <testLibraryFragment>::@setter::vEq#element |
| hasInitializer vNotEq |
| reference: <testLibrary>::@topLevelVariable::vNotEq |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vNotEq |
| type: bool |
| getter: <testLibraryFragment>::@getter::vNotEq#element |
| setter: <testLibraryFragment>::@setter::vNotEq#element |
| getters |
| synthetic static get vEq |
| firstFragment: <testLibraryFragment>::@getter::vEq |
| returnType: bool |
| synthetic static get vNotEq |
| firstFragment: <testLibraryFragment>::@getter::vNotEq |
| returnType: bool |
| setters |
| synthetic static set vEq |
| firstFragment: <testLibraryFragment>::@setter::vEq |
| formalParameters |
| requiredPositional _vEq |
| type: bool |
| returnType: void |
| synthetic static set vNotEq |
| firstFragment: <testLibraryFragment>::@setter::vNotEq |
| formalParameters |
| requiredPositional _vNotEq |
| type: bool |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_error_methodInvocation_cycle_topLevel() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var a = b.foo(); |
| var b = a.foo(); |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer a @4 |
| reference: <testLibraryFragment>::@topLevelVariable::a |
| element: <testLibrary>::@topLevelVariable::a |
| getter2: <testLibraryFragment>::@getter::a |
| setter2: <testLibraryFragment>::@setter::a |
| hasInitializer b @21 |
| reference: <testLibraryFragment>::@topLevelVariable::b |
| element: <testLibrary>::@topLevelVariable::b |
| getter2: <testLibraryFragment>::@getter::b |
| setter2: <testLibraryFragment>::@setter::b |
| getters |
| synthetic get a |
| reference: <testLibraryFragment>::@getter::a |
| element: <testLibraryFragment>::@getter::a#element |
| synthetic get b |
| reference: <testLibraryFragment>::@getter::b |
| element: <testLibraryFragment>::@getter::b#element |
| setters |
| synthetic set a |
| reference: <testLibraryFragment>::@setter::a |
| element: <testLibraryFragment>::@setter::a#element |
| formalParameters |
| _a |
| element: <testLibraryFragment>::@setter::a::@parameter::_a#element |
| synthetic set b |
| reference: <testLibraryFragment>::@setter::b |
| element: <testLibraryFragment>::@setter::b#element |
| formalParameters |
| _b |
| element: <testLibraryFragment>::@setter::b::@parameter::_b#element |
| topLevelVariables |
| hasInitializer a |
| reference: <testLibrary>::@topLevelVariable::a |
| firstFragment: <testLibraryFragment>::@topLevelVariable::a |
| type: dynamic |
| getter: <testLibraryFragment>::@getter::a#element |
| setter: <testLibraryFragment>::@setter::a#element |
| hasInitializer b |
| reference: <testLibrary>::@topLevelVariable::b |
| firstFragment: <testLibraryFragment>::@topLevelVariable::b |
| type: dynamic |
| getter: <testLibraryFragment>::@getter::b#element |
| setter: <testLibraryFragment>::@setter::b#element |
| getters |
| synthetic static get a |
| firstFragment: <testLibraryFragment>::@getter::a |
| returnType: dynamic |
| synthetic static get b |
| firstFragment: <testLibraryFragment>::@getter::b |
| returnType: dynamic |
| setters |
| synthetic static set a |
| firstFragment: <testLibraryFragment>::@setter::a |
| formalParameters |
| requiredPositional _a |
| type: dynamic |
| returnType: void |
| synthetic static set b |
| firstFragment: <testLibraryFragment>::@setter::b |
| formalParameters |
| requiredPositional _b |
| type: dynamic |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_error_methodInvocation_cycle_topLevel_self() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var a = a.foo(); |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer a @4 |
| reference: <testLibraryFragment>::@topLevelVariable::a |
| element: <testLibrary>::@topLevelVariable::a |
| getter2: <testLibraryFragment>::@getter::a |
| setter2: <testLibraryFragment>::@setter::a |
| getters |
| synthetic get a |
| reference: <testLibraryFragment>::@getter::a |
| element: <testLibraryFragment>::@getter::a#element |
| setters |
| synthetic set a |
| reference: <testLibraryFragment>::@setter::a |
| element: <testLibraryFragment>::@setter::a#element |
| formalParameters |
| _a |
| element: <testLibraryFragment>::@setter::a::@parameter::_a#element |
| topLevelVariables |
| hasInitializer a |
| reference: <testLibrary>::@topLevelVariable::a |
| firstFragment: <testLibraryFragment>::@topLevelVariable::a |
| type: dynamic |
| getter: <testLibraryFragment>::@getter::a#element |
| setter: <testLibraryFragment>::@setter::a#element |
| getters |
| synthetic static get a |
| firstFragment: <testLibraryFragment>::@getter::a |
| returnType: dynamic |
| setters |
| synthetic static set a |
| firstFragment: <testLibraryFragment>::@setter::a |
| formalParameters |
| requiredPositional _a |
| type: dynamic |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_extractIndex() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var a = [0, 1.2]; |
| var b0 = a[0]; |
| var b1 = a[1]; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer a @4 |
| reference: <testLibraryFragment>::@topLevelVariable::a |
| element: <testLibrary>::@topLevelVariable::a |
| getter2: <testLibraryFragment>::@getter::a |
| setter2: <testLibraryFragment>::@setter::a |
| hasInitializer b0 @22 |
| reference: <testLibraryFragment>::@topLevelVariable::b0 |
| element: <testLibrary>::@topLevelVariable::b0 |
| getter2: <testLibraryFragment>::@getter::b0 |
| setter2: <testLibraryFragment>::@setter::b0 |
| hasInitializer b1 @37 |
| reference: <testLibraryFragment>::@topLevelVariable::b1 |
| element: <testLibrary>::@topLevelVariable::b1 |
| getter2: <testLibraryFragment>::@getter::b1 |
| setter2: <testLibraryFragment>::@setter::b1 |
| getters |
| synthetic get a |
| reference: <testLibraryFragment>::@getter::a |
| element: <testLibraryFragment>::@getter::a#element |
| synthetic get b0 |
| reference: <testLibraryFragment>::@getter::b0 |
| element: <testLibraryFragment>::@getter::b0#element |
| synthetic get b1 |
| reference: <testLibraryFragment>::@getter::b1 |
| element: <testLibraryFragment>::@getter::b1#element |
| setters |
| synthetic set a |
| reference: <testLibraryFragment>::@setter::a |
| element: <testLibraryFragment>::@setter::a#element |
| formalParameters |
| _a |
| element: <testLibraryFragment>::@setter::a::@parameter::_a#element |
| synthetic set b0 |
| reference: <testLibraryFragment>::@setter::b0 |
| element: <testLibraryFragment>::@setter::b0#element |
| formalParameters |
| _b0 |
| element: <testLibraryFragment>::@setter::b0::@parameter::_b0#element |
| synthetic set b1 |
| reference: <testLibraryFragment>::@setter::b1 |
| element: <testLibraryFragment>::@setter::b1#element |
| formalParameters |
| _b1 |
| element: <testLibraryFragment>::@setter::b1::@parameter::_b1#element |
| topLevelVariables |
| hasInitializer a |
| reference: <testLibrary>::@topLevelVariable::a |
| firstFragment: <testLibraryFragment>::@topLevelVariable::a |
| type: List<num> |
| getter: <testLibraryFragment>::@getter::a#element |
| setter: <testLibraryFragment>::@setter::a#element |
| hasInitializer b0 |
| reference: <testLibrary>::@topLevelVariable::b0 |
| firstFragment: <testLibraryFragment>::@topLevelVariable::b0 |
| type: num |
| getter: <testLibraryFragment>::@getter::b0#element |
| setter: <testLibraryFragment>::@setter::b0#element |
| hasInitializer b1 |
| reference: <testLibrary>::@topLevelVariable::b1 |
| firstFragment: <testLibraryFragment>::@topLevelVariable::b1 |
| type: num |
| getter: <testLibraryFragment>::@getter::b1#element |
| setter: <testLibraryFragment>::@setter::b1#element |
| getters |
| synthetic static get a |
| firstFragment: <testLibraryFragment>::@getter::a |
| returnType: List<num> |
| synthetic static get b0 |
| firstFragment: <testLibraryFragment>::@getter::b0 |
| returnType: num |
| synthetic static get b1 |
| firstFragment: <testLibraryFragment>::@getter::b1 |
| returnType: num |
| setters |
| synthetic static set a |
| firstFragment: <testLibraryFragment>::@setter::a |
| formalParameters |
| requiredPositional _a |
| type: List<num> |
| returnType: void |
| synthetic static set b0 |
| firstFragment: <testLibraryFragment>::@setter::b0 |
| formalParameters |
| requiredPositional _b0 |
| type: num |
| returnType: void |
| synthetic static set b1 |
| firstFragment: <testLibraryFragment>::@setter::b1 |
| formalParameters |
| requiredPositional _b1 |
| type: num |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_extractProperty_explicitlyTyped_differentLibraryCycle() async { |
| newFile('$testPackageLibPath/a.dart', r''' |
| class C { |
| int f = 0; |
| } |
| '''); |
| var library = await _encodeDecodeLibrary(r''' |
| import 'a.dart'; |
| var x = new C().f; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| libraryImports |
| package:test/a.dart |
| topLevelVariables |
| hasInitializer x @21 |
| reference: <testLibraryFragment>::@topLevelVariable::x |
| element: <testLibrary>::@topLevelVariable::x |
| getter2: <testLibraryFragment>::@getter::x |
| setter2: <testLibraryFragment>::@setter::x |
| getters |
| synthetic get x |
| reference: <testLibraryFragment>::@getter::x |
| element: <testLibraryFragment>::@getter::x#element |
| setters |
| synthetic set x |
| reference: <testLibraryFragment>::@setter::x |
| element: <testLibraryFragment>::@setter::x#element |
| formalParameters |
| _x |
| element: <testLibraryFragment>::@setter::x::@parameter::_x#element |
| topLevelVariables |
| hasInitializer x |
| reference: <testLibrary>::@topLevelVariable::x |
| firstFragment: <testLibraryFragment>::@topLevelVariable::x |
| type: int |
| getter: <testLibraryFragment>::@getter::x#element |
| setter: <testLibraryFragment>::@setter::x#element |
| getters |
| synthetic static get x |
| firstFragment: <testLibraryFragment>::@getter::x |
| returnType: int |
| setters |
| synthetic static set x |
| firstFragment: <testLibraryFragment>::@setter::x |
| formalParameters |
| requiredPositional _x |
| type: int |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_extractProperty_explicitlyTyped_sameLibrary() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class C { |
| int f = 0; |
| } |
| var x = new C().f; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class C @6 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| fields |
| hasInitializer f @16 |
| reference: <testLibraryFragment>::@class::C::@field::f |
| element: <testLibraryFragment>::@class::C::@field::f#element |
| getter2: <testLibraryFragment>::@class::C::@getter::f |
| setter2: <testLibraryFragment>::@class::C::@setter::f |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| getters |
| synthetic get f |
| reference: <testLibraryFragment>::@class::C::@getter::f |
| element: <testLibraryFragment>::@class::C::@getter::f#element |
| setters |
| synthetic set f |
| reference: <testLibraryFragment>::@class::C::@setter::f |
| element: <testLibraryFragment>::@class::C::@setter::f#element |
| formalParameters |
| _f |
| element: <testLibraryFragment>::@class::C::@setter::f::@parameter::_f#element |
| topLevelVariables |
| hasInitializer x @29 |
| reference: <testLibraryFragment>::@topLevelVariable::x |
| element: <testLibrary>::@topLevelVariable::x |
| getter2: <testLibraryFragment>::@getter::x |
| setter2: <testLibraryFragment>::@setter::x |
| getters |
| synthetic get x |
| reference: <testLibraryFragment>::@getter::x |
| element: <testLibraryFragment>::@getter::x#element |
| setters |
| synthetic set x |
| reference: <testLibraryFragment>::@setter::x |
| element: <testLibraryFragment>::@setter::x#element |
| formalParameters |
| _x |
| element: <testLibraryFragment>::@setter::x::@parameter::_x#element |
| classes |
| class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| fields |
| hasInitializer f |
| firstFragment: <testLibraryFragment>::@class::C::@field::f |
| type: int |
| getter: <testLibraryFragment>::@class::C::@getter::f#element |
| setter: <testLibraryFragment>::@class::C::@setter::f#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| getters |
| synthetic get f |
| firstFragment: <testLibraryFragment>::@class::C::@getter::f |
| returnType: int |
| setters |
| synthetic set f |
| firstFragment: <testLibraryFragment>::@class::C::@setter::f |
| formalParameters |
| requiredPositional _f |
| type: int |
| returnType: void |
| topLevelVariables |
| hasInitializer x |
| reference: <testLibrary>::@topLevelVariable::x |
| firstFragment: <testLibraryFragment>::@topLevelVariable::x |
| type: int |
| getter: <testLibraryFragment>::@getter::x#element |
| setter: <testLibraryFragment>::@setter::x#element |
| getters |
| synthetic static get x |
| firstFragment: <testLibraryFragment>::@getter::x |
| returnType: int |
| setters |
| synthetic static set x |
| firstFragment: <testLibraryFragment>::@setter::x |
| formalParameters |
| requiredPositional _x |
| type: int |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_extractProperty_explicitlyTyped_sameLibraryCycle() async { |
| newFile('$testPackageLibPath/a.dart', r''' |
| import 'test.dart'; // just do make it part of the library cycle |
| class C { |
| int f = 0; |
| } |
| '''); |
| var library = await _encodeDecodeLibrary(r''' |
| import 'a.dart'; |
| var x = new C().f; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| libraryImports |
| package:test/a.dart |
| topLevelVariables |
| hasInitializer x @21 |
| reference: <testLibraryFragment>::@topLevelVariable::x |
| element: <testLibrary>::@topLevelVariable::x |
| getter2: <testLibraryFragment>::@getter::x |
| setter2: <testLibraryFragment>::@setter::x |
| getters |
| synthetic get x |
| reference: <testLibraryFragment>::@getter::x |
| element: <testLibraryFragment>::@getter::x#element |
| setters |
| synthetic set x |
| reference: <testLibraryFragment>::@setter::x |
| element: <testLibraryFragment>::@setter::x#element |
| formalParameters |
| _x |
| element: <testLibraryFragment>::@setter::x::@parameter::_x#element |
| topLevelVariables |
| hasInitializer x |
| reference: <testLibrary>::@topLevelVariable::x |
| firstFragment: <testLibraryFragment>::@topLevelVariable::x |
| type: int |
| getter: <testLibraryFragment>::@getter::x#element |
| setter: <testLibraryFragment>::@setter::x#element |
| getters |
| synthetic static get x |
| firstFragment: <testLibraryFragment>::@getter::x |
| returnType: int |
| setters |
| synthetic static set x |
| firstFragment: <testLibraryFragment>::@setter::x |
| formalParameters |
| requiredPositional _x |
| type: int |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_extractProperty_implicitlyTyped_differentLibraryCycle() async { |
| newFile('$testPackageLibPath/a.dart', r''' |
| class C { |
| var f = 0; |
| } |
| '''); |
| var library = await _encodeDecodeLibrary(r''' |
| import 'a.dart'; |
| var x = new C().f; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| libraryImports |
| package:test/a.dart |
| topLevelVariables |
| hasInitializer x @21 |
| reference: <testLibraryFragment>::@topLevelVariable::x |
| element: <testLibrary>::@topLevelVariable::x |
| getter2: <testLibraryFragment>::@getter::x |
| setter2: <testLibraryFragment>::@setter::x |
| getters |
| synthetic get x |
| reference: <testLibraryFragment>::@getter::x |
| element: <testLibraryFragment>::@getter::x#element |
| setters |
| synthetic set x |
| reference: <testLibraryFragment>::@setter::x |
| element: <testLibraryFragment>::@setter::x#element |
| formalParameters |
| _x |
| element: <testLibraryFragment>::@setter::x::@parameter::_x#element |
| topLevelVariables |
| hasInitializer x |
| reference: <testLibrary>::@topLevelVariable::x |
| firstFragment: <testLibraryFragment>::@topLevelVariable::x |
| type: int |
| getter: <testLibraryFragment>::@getter::x#element |
| setter: <testLibraryFragment>::@setter::x#element |
| getters |
| synthetic static get x |
| firstFragment: <testLibraryFragment>::@getter::x |
| returnType: int |
| setters |
| synthetic static set x |
| firstFragment: <testLibraryFragment>::@setter::x |
| formalParameters |
| requiredPositional _x |
| type: int |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_extractProperty_implicitlyTyped_sameLibrary() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class C { |
| var f = 0; |
| } |
| var x = new C().f; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class C @6 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| fields |
| hasInitializer f @16 |
| reference: <testLibraryFragment>::@class::C::@field::f |
| element: <testLibraryFragment>::@class::C::@field::f#element |
| getter2: <testLibraryFragment>::@class::C::@getter::f |
| setter2: <testLibraryFragment>::@class::C::@setter::f |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| getters |
| synthetic get f |
| reference: <testLibraryFragment>::@class::C::@getter::f |
| element: <testLibraryFragment>::@class::C::@getter::f#element |
| setters |
| synthetic set f |
| reference: <testLibraryFragment>::@class::C::@setter::f |
| element: <testLibraryFragment>::@class::C::@setter::f#element |
| formalParameters |
| _f |
| element: <testLibraryFragment>::@class::C::@setter::f::@parameter::_f#element |
| topLevelVariables |
| hasInitializer x @29 |
| reference: <testLibraryFragment>::@topLevelVariable::x |
| element: <testLibrary>::@topLevelVariable::x |
| getter2: <testLibraryFragment>::@getter::x |
| setter2: <testLibraryFragment>::@setter::x |
| getters |
| synthetic get x |
| reference: <testLibraryFragment>::@getter::x |
| element: <testLibraryFragment>::@getter::x#element |
| setters |
| synthetic set x |
| reference: <testLibraryFragment>::@setter::x |
| element: <testLibraryFragment>::@setter::x#element |
| formalParameters |
| _x |
| element: <testLibraryFragment>::@setter::x::@parameter::_x#element |
| classes |
| class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| fields |
| hasInitializer f |
| firstFragment: <testLibraryFragment>::@class::C::@field::f |
| type: int |
| getter: <testLibraryFragment>::@class::C::@getter::f#element |
| setter: <testLibraryFragment>::@class::C::@setter::f#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| getters |
| synthetic get f |
| firstFragment: <testLibraryFragment>::@class::C::@getter::f |
| returnType: int |
| setters |
| synthetic set f |
| firstFragment: <testLibraryFragment>::@class::C::@setter::f |
| formalParameters |
| requiredPositional _f |
| type: int |
| returnType: void |
| topLevelVariables |
| hasInitializer x |
| reference: <testLibrary>::@topLevelVariable::x |
| firstFragment: <testLibraryFragment>::@topLevelVariable::x |
| type: int |
| getter: <testLibraryFragment>::@getter::x#element |
| setter: <testLibraryFragment>::@setter::x#element |
| getters |
| synthetic static get x |
| firstFragment: <testLibraryFragment>::@getter::x |
| returnType: int |
| setters |
| synthetic static set x |
| firstFragment: <testLibraryFragment>::@setter::x |
| formalParameters |
| requiredPositional _x |
| type: int |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_extractProperty_implicitlyTyped_sameLibraryCycle() async { |
| newFile('$testPackageLibPath/a.dart', r''' |
| import 'test.dart'; // just do make it part of the library cycle |
| class C { |
| var f = 0; |
| } |
| '''); |
| var library = await _encodeDecodeLibrary(r''' |
| import 'a.dart'; |
| var x = new C().f; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| libraryImports |
| package:test/a.dart |
| topLevelVariables |
| hasInitializer x @21 |
| reference: <testLibraryFragment>::@topLevelVariable::x |
| element: <testLibrary>::@topLevelVariable::x |
| getter2: <testLibraryFragment>::@getter::x |
| setter2: <testLibraryFragment>::@setter::x |
| getters |
| synthetic get x |
| reference: <testLibraryFragment>::@getter::x |
| element: <testLibraryFragment>::@getter::x#element |
| setters |
| synthetic set x |
| reference: <testLibraryFragment>::@setter::x |
| element: <testLibraryFragment>::@setter::x#element |
| formalParameters |
| _x |
| element: <testLibraryFragment>::@setter::x::@parameter::_x#element |
| topLevelVariables |
| hasInitializer x |
| reference: <testLibrary>::@topLevelVariable::x |
| firstFragment: <testLibraryFragment>::@topLevelVariable::x |
| type: int |
| getter: <testLibraryFragment>::@getter::x#element |
| setter: <testLibraryFragment>::@setter::x#element |
| getters |
| synthetic static get x |
| firstFragment: <testLibraryFragment>::@getter::x |
| returnType: int |
| setters |
| synthetic static set x |
| firstFragment: <testLibraryFragment>::@setter::x |
| formalParameters |
| requiredPositional _x |
| type: int |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_extractProperty_inStaticField() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A { |
| int f; |
| } |
| class B { |
| static var t = new A().f; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| fields |
| f @16 |
| reference: <testLibraryFragment>::@class::A::@field::f |
| element: <testLibraryFragment>::@class::A::@field::f#element |
| getter2: <testLibraryFragment>::@class::A::@getter::f |
| setter2: <testLibraryFragment>::@class::A::@setter::f |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| getters |
| synthetic get f |
| reference: <testLibraryFragment>::@class::A::@getter::f |
| element: <testLibraryFragment>::@class::A::@getter::f#element |
| setters |
| synthetic set f |
| reference: <testLibraryFragment>::@class::A::@setter::f |
| element: <testLibraryFragment>::@class::A::@setter::f#element |
| formalParameters |
| _f |
| element: <testLibraryFragment>::@class::A::@setter::f::@parameter::_f#element |
| class B @27 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| fields |
| hasInitializer t @44 |
| reference: <testLibraryFragment>::@class::B::@field::t |
| element: <testLibraryFragment>::@class::B::@field::t#element |
| getter2: <testLibraryFragment>::@class::B::@getter::t |
| setter2: <testLibraryFragment>::@class::B::@setter::t |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| getters |
| synthetic get t |
| reference: <testLibraryFragment>::@class::B::@getter::t |
| element: <testLibraryFragment>::@class::B::@getter::t#element |
| setters |
| synthetic set t |
| reference: <testLibraryFragment>::@class::B::@setter::t |
| element: <testLibraryFragment>::@class::B::@setter::t#element |
| formalParameters |
| _t |
| element: <testLibraryFragment>::@class::B::@setter::t::@parameter::_t#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| fields |
| f |
| firstFragment: <testLibraryFragment>::@class::A::@field::f |
| type: int |
| getter: <testLibraryFragment>::@class::A::@getter::f#element |
| setter: <testLibraryFragment>::@class::A::@setter::f#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| getters |
| synthetic get f |
| firstFragment: <testLibraryFragment>::@class::A::@getter::f |
| returnType: int |
| setters |
| synthetic set f |
| firstFragment: <testLibraryFragment>::@class::A::@setter::f |
| formalParameters |
| requiredPositional _f |
| type: int |
| returnType: void |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| fields |
| static hasInitializer t |
| firstFragment: <testLibraryFragment>::@class::B::@field::t |
| type: int |
| getter: <testLibraryFragment>::@class::B::@getter::t#element |
| setter: <testLibraryFragment>::@class::B::@setter::t#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| getters |
| synthetic static get t |
| firstFragment: <testLibraryFragment>::@class::B::@getter::t |
| returnType: int |
| setters |
| synthetic static set t |
| firstFragment: <testLibraryFragment>::@class::B::@setter::t |
| formalParameters |
| requiredPositional _t |
| type: int |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_extractProperty_prefixedIdentifier() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class C { |
| bool b; |
| } |
| C c; |
| var x = c.b; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class C @6 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| fields |
| b @17 |
| reference: <testLibraryFragment>::@class::C::@field::b |
| element: <testLibraryFragment>::@class::C::@field::b#element |
| getter2: <testLibraryFragment>::@class::C::@getter::b |
| setter2: <testLibraryFragment>::@class::C::@setter::b |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| getters |
| synthetic get b |
| reference: <testLibraryFragment>::@class::C::@getter::b |
| element: <testLibraryFragment>::@class::C::@getter::b#element |
| setters |
| synthetic set b |
| reference: <testLibraryFragment>::@class::C::@setter::b |
| element: <testLibraryFragment>::@class::C::@setter::b#element |
| formalParameters |
| _b |
| element: <testLibraryFragment>::@class::C::@setter::b::@parameter::_b#element |
| topLevelVariables |
| c @24 |
| reference: <testLibraryFragment>::@topLevelVariable::c |
| element: <testLibrary>::@topLevelVariable::c |
| getter2: <testLibraryFragment>::@getter::c |
| setter2: <testLibraryFragment>::@setter::c |
| hasInitializer x @31 |
| reference: <testLibraryFragment>::@topLevelVariable::x |
| element: <testLibrary>::@topLevelVariable::x |
| getter2: <testLibraryFragment>::@getter::x |
| setter2: <testLibraryFragment>::@setter::x |
| getters |
| synthetic get c |
| reference: <testLibraryFragment>::@getter::c |
| element: <testLibraryFragment>::@getter::c#element |
| synthetic get x |
| reference: <testLibraryFragment>::@getter::x |
| element: <testLibraryFragment>::@getter::x#element |
| setters |
| synthetic set c |
| reference: <testLibraryFragment>::@setter::c |
| element: <testLibraryFragment>::@setter::c#element |
| formalParameters |
| _c |
| element: <testLibraryFragment>::@setter::c::@parameter::_c#element |
| synthetic set x |
| reference: <testLibraryFragment>::@setter::x |
| element: <testLibraryFragment>::@setter::x#element |
| formalParameters |
| _x |
| element: <testLibraryFragment>::@setter::x::@parameter::_x#element |
| classes |
| class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| fields |
| b |
| firstFragment: <testLibraryFragment>::@class::C::@field::b |
| type: bool |
| getter: <testLibraryFragment>::@class::C::@getter::b#element |
| setter: <testLibraryFragment>::@class::C::@setter::b#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| getters |
| synthetic get b |
| firstFragment: <testLibraryFragment>::@class::C::@getter::b |
| returnType: bool |
| setters |
| synthetic set b |
| firstFragment: <testLibraryFragment>::@class::C::@setter::b |
| formalParameters |
| requiredPositional _b |
| type: bool |
| returnType: void |
| topLevelVariables |
| c |
| reference: <testLibrary>::@topLevelVariable::c |
| firstFragment: <testLibraryFragment>::@topLevelVariable::c |
| type: C |
| getter: <testLibraryFragment>::@getter::c#element |
| setter: <testLibraryFragment>::@setter::c#element |
| hasInitializer x |
| reference: <testLibrary>::@topLevelVariable::x |
| firstFragment: <testLibraryFragment>::@topLevelVariable::x |
| type: bool |
| getter: <testLibraryFragment>::@getter::x#element |
| setter: <testLibraryFragment>::@setter::x#element |
| getters |
| synthetic static get c |
| firstFragment: <testLibraryFragment>::@getter::c |
| returnType: C |
| synthetic static get x |
| firstFragment: <testLibraryFragment>::@getter::x |
| returnType: bool |
| setters |
| synthetic static set c |
| firstFragment: <testLibraryFragment>::@setter::c |
| formalParameters |
| requiredPositional _c |
| type: C |
| returnType: void |
| synthetic static set x |
| firstFragment: <testLibraryFragment>::@setter::x |
| formalParameters |
| requiredPositional _x |
| type: bool |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_extractProperty_prefixedIdentifier_viaInterface() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class I { |
| bool b; |
| } |
| abstract class C implements I {} |
| C c; |
| var x = c.b; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class I @6 |
| reference: <testLibraryFragment>::@class::I |
| element: <testLibrary>::@class::I |
| fields |
| b @17 |
| reference: <testLibraryFragment>::@class::I::@field::b |
| element: <testLibraryFragment>::@class::I::@field::b#element |
| getter2: <testLibraryFragment>::@class::I::@getter::b |
| setter2: <testLibraryFragment>::@class::I::@setter::b |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::I::@constructor::new |
| element: <testLibraryFragment>::@class::I::@constructor::new#element |
| typeName: I |
| getters |
| synthetic get b |
| reference: <testLibraryFragment>::@class::I::@getter::b |
| element: <testLibraryFragment>::@class::I::@getter::b#element |
| setters |
| synthetic set b |
| reference: <testLibraryFragment>::@class::I::@setter::b |
| element: <testLibraryFragment>::@class::I::@setter::b#element |
| formalParameters |
| _b |
| element: <testLibraryFragment>::@class::I::@setter::b::@parameter::_b#element |
| class C @37 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| topLevelVariables |
| c @57 |
| reference: <testLibraryFragment>::@topLevelVariable::c |
| element: <testLibrary>::@topLevelVariable::c |
| getter2: <testLibraryFragment>::@getter::c |
| setter2: <testLibraryFragment>::@setter::c |
| hasInitializer x @64 |
| reference: <testLibraryFragment>::@topLevelVariable::x |
| element: <testLibrary>::@topLevelVariable::x |
| getter2: <testLibraryFragment>::@getter::x |
| setter2: <testLibraryFragment>::@setter::x |
| getters |
| synthetic get c |
| reference: <testLibraryFragment>::@getter::c |
| element: <testLibraryFragment>::@getter::c#element |
| synthetic get x |
| reference: <testLibraryFragment>::@getter::x |
| element: <testLibraryFragment>::@getter::x#element |
| setters |
| synthetic set c |
| reference: <testLibraryFragment>::@setter::c |
| element: <testLibraryFragment>::@setter::c#element |
| formalParameters |
| _c |
| element: <testLibraryFragment>::@setter::c::@parameter::_c#element |
| synthetic set x |
| reference: <testLibraryFragment>::@setter::x |
| element: <testLibraryFragment>::@setter::x#element |
| formalParameters |
| _x |
| element: <testLibraryFragment>::@setter::x::@parameter::_x#element |
| classes |
| class I |
| reference: <testLibrary>::@class::I |
| firstFragment: <testLibraryFragment>::@class::I |
| fields |
| b |
| firstFragment: <testLibraryFragment>::@class::I::@field::b |
| type: bool |
| getter: <testLibraryFragment>::@class::I::@getter::b#element |
| setter: <testLibraryFragment>::@class::I::@setter::b#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::I::@constructor::new |
| getters |
| synthetic get b |
| firstFragment: <testLibraryFragment>::@class::I::@getter::b |
| returnType: bool |
| setters |
| synthetic set b |
| firstFragment: <testLibraryFragment>::@class::I::@setter::b |
| formalParameters |
| requiredPositional _b |
| type: bool |
| returnType: void |
| abstract class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| interfaces |
| I |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| topLevelVariables |
| c |
| reference: <testLibrary>::@topLevelVariable::c |
| firstFragment: <testLibraryFragment>::@topLevelVariable::c |
| type: C |
| getter: <testLibraryFragment>::@getter::c#element |
| setter: <testLibraryFragment>::@setter::c#element |
| hasInitializer x |
| reference: <testLibrary>::@topLevelVariable::x |
| firstFragment: <testLibraryFragment>::@topLevelVariable::x |
| type: bool |
| getter: <testLibraryFragment>::@getter::x#element |
| setter: <testLibraryFragment>::@setter::x#element |
| getters |
| synthetic static get c |
| firstFragment: <testLibraryFragment>::@getter::c |
| returnType: C |
| synthetic static get x |
| firstFragment: <testLibraryFragment>::@getter::x |
| returnType: bool |
| setters |
| synthetic static set c |
| firstFragment: <testLibraryFragment>::@setter::c |
| formalParameters |
| requiredPositional _c |
| type: C |
| returnType: void |
| synthetic static set x |
| firstFragment: <testLibraryFragment>::@setter::x |
| formalParameters |
| requiredPositional _x |
| type: bool |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_extractProperty_viaInterface() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class I { |
| bool b; |
| } |
| abstract class C implements I {} |
| C f() => null; |
| var x = f().b; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class I @6 |
| reference: <testLibraryFragment>::@class::I |
| element: <testLibrary>::@class::I |
| fields |
| b @17 |
| reference: <testLibraryFragment>::@class::I::@field::b |
| element: <testLibraryFragment>::@class::I::@field::b#element |
| getter2: <testLibraryFragment>::@class::I::@getter::b |
| setter2: <testLibraryFragment>::@class::I::@setter::b |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::I::@constructor::new |
| element: <testLibraryFragment>::@class::I::@constructor::new#element |
| typeName: I |
| getters |
| synthetic get b |
| reference: <testLibraryFragment>::@class::I::@getter::b |
| element: <testLibraryFragment>::@class::I::@getter::b#element |
| setters |
| synthetic set b |
| reference: <testLibraryFragment>::@class::I::@setter::b |
| element: <testLibraryFragment>::@class::I::@setter::b#element |
| formalParameters |
| _b |
| element: <testLibraryFragment>::@class::I::@setter::b::@parameter::_b#element |
| class C @37 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| topLevelVariables |
| hasInitializer x @74 |
| reference: <testLibraryFragment>::@topLevelVariable::x |
| element: <testLibrary>::@topLevelVariable::x |
| getter2: <testLibraryFragment>::@getter::x |
| setter2: <testLibraryFragment>::@setter::x |
| getters |
| synthetic get x |
| reference: <testLibraryFragment>::@getter::x |
| element: <testLibraryFragment>::@getter::x#element |
| setters |
| synthetic set x |
| reference: <testLibraryFragment>::@setter::x |
| element: <testLibraryFragment>::@setter::x#element |
| formalParameters |
| _x |
| element: <testLibraryFragment>::@setter::x::@parameter::_x#element |
| functions |
| f @57 |
| reference: <testLibraryFragment>::@function::f |
| element: <testLibrary>::@function::f |
| classes |
| class I |
| reference: <testLibrary>::@class::I |
| firstFragment: <testLibraryFragment>::@class::I |
| fields |
| b |
| firstFragment: <testLibraryFragment>::@class::I::@field::b |
| type: bool |
| getter: <testLibraryFragment>::@class::I::@getter::b#element |
| setter: <testLibraryFragment>::@class::I::@setter::b#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::I::@constructor::new |
| getters |
| synthetic get b |
| firstFragment: <testLibraryFragment>::@class::I::@getter::b |
| returnType: bool |
| setters |
| synthetic set b |
| firstFragment: <testLibraryFragment>::@class::I::@setter::b |
| formalParameters |
| requiredPositional _b |
| type: bool |
| returnType: void |
| abstract class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| interfaces |
| I |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| topLevelVariables |
| hasInitializer x |
| reference: <testLibrary>::@topLevelVariable::x |
| firstFragment: <testLibraryFragment>::@topLevelVariable::x |
| type: bool |
| getter: <testLibraryFragment>::@getter::x#element |
| setter: <testLibraryFragment>::@setter::x#element |
| getters |
| synthetic static get x |
| firstFragment: <testLibraryFragment>::@getter::x |
| returnType: bool |
| setters |
| synthetic static set x |
| firstFragment: <testLibraryFragment>::@setter::x |
| formalParameters |
| requiredPositional _x |
| type: bool |
| returnType: void |
| functions |
| f |
| reference: <testLibrary>::@function::f |
| firstFragment: <testLibraryFragment>::@function::f |
| returnType: C |
| '''); |
| } |
| |
| test_initializer_fromInstanceMethod() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A { |
| int foo() => 0; |
| } |
| class B extends A { |
| foo() => 1; |
| } |
| var x = A().foo(); |
| var y = B().foo(); |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| methods |
| foo @16 |
| reference: <testLibraryFragment>::@class::A::@method::foo |
| element: <testLibrary>::@class::A::@method::foo |
| class B @36 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| methods |
| foo @52 |
| reference: <testLibraryFragment>::@class::B::@method::foo |
| element: <testLibrary>::@class::B::@method::foo |
| topLevelVariables |
| hasInitializer x @70 |
| reference: <testLibraryFragment>::@topLevelVariable::x |
| element: <testLibrary>::@topLevelVariable::x |
| getter2: <testLibraryFragment>::@getter::x |
| setter2: <testLibraryFragment>::@setter::x |
| hasInitializer y @89 |
| reference: <testLibraryFragment>::@topLevelVariable::y |
| element: <testLibrary>::@topLevelVariable::y |
| getter2: <testLibraryFragment>::@getter::y |
| setter2: <testLibraryFragment>::@setter::y |
| getters |
| synthetic get x |
| reference: <testLibraryFragment>::@getter::x |
| element: <testLibraryFragment>::@getter::x#element |
| synthetic get y |
| reference: <testLibraryFragment>::@getter::y |
| element: <testLibraryFragment>::@getter::y#element |
| setters |
| synthetic set x |
| reference: <testLibraryFragment>::@setter::x |
| element: <testLibraryFragment>::@setter::x#element |
| formalParameters |
| _x |
| element: <testLibraryFragment>::@setter::x::@parameter::_x#element |
| synthetic set y |
| reference: <testLibraryFragment>::@setter::y |
| element: <testLibraryFragment>::@setter::y#element |
| formalParameters |
| _y |
| element: <testLibraryFragment>::@setter::y::@parameter::_y#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| methods |
| foo |
| reference: <testLibrary>::@class::A::@method::foo |
| firstFragment: <testLibraryFragment>::@class::A::@method::foo |
| returnType: int |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| supertype: A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| superConstructor: <testLibraryFragment>::@class::A::@constructor::new#element |
| methods |
| foo |
| reference: <testLibrary>::@class::B::@method::foo |
| firstFragment: <testLibraryFragment>::@class::B::@method::foo |
| returnType: int |
| topLevelVariables |
| hasInitializer x |
| reference: <testLibrary>::@topLevelVariable::x |
| firstFragment: <testLibraryFragment>::@topLevelVariable::x |
| type: int |
| getter: <testLibraryFragment>::@getter::x#element |
| setter: <testLibraryFragment>::@setter::x#element |
| hasInitializer y |
| reference: <testLibrary>::@topLevelVariable::y |
| firstFragment: <testLibraryFragment>::@topLevelVariable::y |
| type: int |
| getter: <testLibraryFragment>::@getter::y#element |
| setter: <testLibraryFragment>::@setter::y#element |
| getters |
| synthetic static get x |
| firstFragment: <testLibraryFragment>::@getter::x |
| returnType: int |
| synthetic static get y |
| firstFragment: <testLibraryFragment>::@getter::y |
| returnType: int |
| setters |
| synthetic static set x |
| firstFragment: <testLibraryFragment>::@setter::x |
| formalParameters |
| requiredPositional _x |
| type: int |
| returnType: void |
| synthetic static set y |
| firstFragment: <testLibraryFragment>::@setter::y |
| formalParameters |
| requiredPositional _y |
| type: int |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_functionExpression() async { |
| var library = await _encodeDecodeLibrary(r''' |
| import 'dart:async'; |
| var vFuture = new Future<int>(42); |
| var v_noParameters_inferredReturnType = () => 42; |
| var v_hasParameter_withType_inferredReturnType = (String a) => 42; |
| var v_hasParameter_withType_returnParameter = (String a) => a; |
| var v_async_returnValue = () async => 42; |
| var v_async_returnFuture = () async => vFuture; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| libraryImports |
| dart:async |
| topLevelVariables |
| hasInitializer vFuture @25 |
| reference: <testLibraryFragment>::@topLevelVariable::vFuture |
| element: <testLibrary>::@topLevelVariable::vFuture |
| getter2: <testLibraryFragment>::@getter::vFuture |
| setter2: <testLibraryFragment>::@setter::vFuture |
| hasInitializer v_noParameters_inferredReturnType @60 |
| reference: <testLibraryFragment>::@topLevelVariable::v_noParameters_inferredReturnType |
| element: <testLibrary>::@topLevelVariable::v_noParameters_inferredReturnType |
| getter2: <testLibraryFragment>::@getter::v_noParameters_inferredReturnType |
| setter2: <testLibraryFragment>::@setter::v_noParameters_inferredReturnType |
| hasInitializer v_hasParameter_withType_inferredReturnType @110 |
| reference: <testLibraryFragment>::@topLevelVariable::v_hasParameter_withType_inferredReturnType |
| element: <testLibrary>::@topLevelVariable::v_hasParameter_withType_inferredReturnType |
| getter2: <testLibraryFragment>::@getter::v_hasParameter_withType_inferredReturnType |
| setter2: <testLibraryFragment>::@setter::v_hasParameter_withType_inferredReturnType |
| hasInitializer v_hasParameter_withType_returnParameter @177 |
| reference: <testLibraryFragment>::@topLevelVariable::v_hasParameter_withType_returnParameter |
| element: <testLibrary>::@topLevelVariable::v_hasParameter_withType_returnParameter |
| getter2: <testLibraryFragment>::@getter::v_hasParameter_withType_returnParameter |
| setter2: <testLibraryFragment>::@setter::v_hasParameter_withType_returnParameter |
| hasInitializer v_async_returnValue @240 |
| reference: <testLibraryFragment>::@topLevelVariable::v_async_returnValue |
| element: <testLibrary>::@topLevelVariable::v_async_returnValue |
| getter2: <testLibraryFragment>::@getter::v_async_returnValue |
| setter2: <testLibraryFragment>::@setter::v_async_returnValue |
| hasInitializer v_async_returnFuture @282 |
| reference: <testLibraryFragment>::@topLevelVariable::v_async_returnFuture |
| element: <testLibrary>::@topLevelVariable::v_async_returnFuture |
| getter2: <testLibraryFragment>::@getter::v_async_returnFuture |
| setter2: <testLibraryFragment>::@setter::v_async_returnFuture |
| getters |
| synthetic get vFuture |
| reference: <testLibraryFragment>::@getter::vFuture |
| element: <testLibraryFragment>::@getter::vFuture#element |
| synthetic get v_noParameters_inferredReturnType |
| reference: <testLibraryFragment>::@getter::v_noParameters_inferredReturnType |
| element: <testLibraryFragment>::@getter::v_noParameters_inferredReturnType#element |
| synthetic get v_hasParameter_withType_inferredReturnType |
| reference: <testLibraryFragment>::@getter::v_hasParameter_withType_inferredReturnType |
| element: <testLibraryFragment>::@getter::v_hasParameter_withType_inferredReturnType#element |
| synthetic get v_hasParameter_withType_returnParameter |
| reference: <testLibraryFragment>::@getter::v_hasParameter_withType_returnParameter |
| element: <testLibraryFragment>::@getter::v_hasParameter_withType_returnParameter#element |
| synthetic get v_async_returnValue |
| reference: <testLibraryFragment>::@getter::v_async_returnValue |
| element: <testLibraryFragment>::@getter::v_async_returnValue#element |
| synthetic get v_async_returnFuture |
| reference: <testLibraryFragment>::@getter::v_async_returnFuture |
| element: <testLibraryFragment>::@getter::v_async_returnFuture#element |
| setters |
| synthetic set vFuture |
| reference: <testLibraryFragment>::@setter::vFuture |
| element: <testLibraryFragment>::@setter::vFuture#element |
| formalParameters |
| _vFuture |
| element: <testLibraryFragment>::@setter::vFuture::@parameter::_vFuture#element |
| synthetic set v_noParameters_inferredReturnType |
| reference: <testLibraryFragment>::@setter::v_noParameters_inferredReturnType |
| element: <testLibraryFragment>::@setter::v_noParameters_inferredReturnType#element |
| formalParameters |
| _v_noParameters_inferredReturnType |
| element: <testLibraryFragment>::@setter::v_noParameters_inferredReturnType::@parameter::_v_noParameters_inferredReturnType#element |
| synthetic set v_hasParameter_withType_inferredReturnType |
| reference: <testLibraryFragment>::@setter::v_hasParameter_withType_inferredReturnType |
| element: <testLibraryFragment>::@setter::v_hasParameter_withType_inferredReturnType#element |
| formalParameters |
| _v_hasParameter_withType_inferredReturnType |
| element: <testLibraryFragment>::@setter::v_hasParameter_withType_inferredReturnType::@parameter::_v_hasParameter_withType_inferredReturnType#element |
| synthetic set v_hasParameter_withType_returnParameter |
| reference: <testLibraryFragment>::@setter::v_hasParameter_withType_returnParameter |
| element: <testLibraryFragment>::@setter::v_hasParameter_withType_returnParameter#element |
| formalParameters |
| _v_hasParameter_withType_returnParameter |
| element: <testLibraryFragment>::@setter::v_hasParameter_withType_returnParameter::@parameter::_v_hasParameter_withType_returnParameter#element |
| synthetic set v_async_returnValue |
| reference: <testLibraryFragment>::@setter::v_async_returnValue |
| element: <testLibraryFragment>::@setter::v_async_returnValue#element |
| formalParameters |
| _v_async_returnValue |
| element: <testLibraryFragment>::@setter::v_async_returnValue::@parameter::_v_async_returnValue#element |
| synthetic set v_async_returnFuture |
| reference: <testLibraryFragment>::@setter::v_async_returnFuture |
| element: <testLibraryFragment>::@setter::v_async_returnFuture#element |
| formalParameters |
| _v_async_returnFuture |
| element: <testLibraryFragment>::@setter::v_async_returnFuture::@parameter::_v_async_returnFuture#element |
| topLevelVariables |
| hasInitializer vFuture |
| reference: <testLibrary>::@topLevelVariable::vFuture |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vFuture |
| type: Future<int> |
| getter: <testLibraryFragment>::@getter::vFuture#element |
| setter: <testLibraryFragment>::@setter::vFuture#element |
| hasInitializer v_noParameters_inferredReturnType |
| reference: <testLibrary>::@topLevelVariable::v_noParameters_inferredReturnType |
| firstFragment: <testLibraryFragment>::@topLevelVariable::v_noParameters_inferredReturnType |
| type: int Function() |
| getter: <testLibraryFragment>::@getter::v_noParameters_inferredReturnType#element |
| setter: <testLibraryFragment>::@setter::v_noParameters_inferredReturnType#element |
| hasInitializer v_hasParameter_withType_inferredReturnType |
| reference: <testLibrary>::@topLevelVariable::v_hasParameter_withType_inferredReturnType |
| firstFragment: <testLibraryFragment>::@topLevelVariable::v_hasParameter_withType_inferredReturnType |
| type: int Function(String) |
| getter: <testLibraryFragment>::@getter::v_hasParameter_withType_inferredReturnType#element |
| setter: <testLibraryFragment>::@setter::v_hasParameter_withType_inferredReturnType#element |
| hasInitializer v_hasParameter_withType_returnParameter |
| reference: <testLibrary>::@topLevelVariable::v_hasParameter_withType_returnParameter |
| firstFragment: <testLibraryFragment>::@topLevelVariable::v_hasParameter_withType_returnParameter |
| type: String Function(String) |
| getter: <testLibraryFragment>::@getter::v_hasParameter_withType_returnParameter#element |
| setter: <testLibraryFragment>::@setter::v_hasParameter_withType_returnParameter#element |
| hasInitializer v_async_returnValue |
| reference: <testLibrary>::@topLevelVariable::v_async_returnValue |
| firstFragment: <testLibraryFragment>::@topLevelVariable::v_async_returnValue |
| type: Future<int> Function() |
| getter: <testLibraryFragment>::@getter::v_async_returnValue#element |
| setter: <testLibraryFragment>::@setter::v_async_returnValue#element |
| hasInitializer v_async_returnFuture |
| reference: <testLibrary>::@topLevelVariable::v_async_returnFuture |
| firstFragment: <testLibraryFragment>::@topLevelVariable::v_async_returnFuture |
| type: Future<int> Function() |
| getter: <testLibraryFragment>::@getter::v_async_returnFuture#element |
| setter: <testLibraryFragment>::@setter::v_async_returnFuture#element |
| getters |
| synthetic static get vFuture |
| firstFragment: <testLibraryFragment>::@getter::vFuture |
| returnType: Future<int> |
| synthetic static get v_noParameters_inferredReturnType |
| firstFragment: <testLibraryFragment>::@getter::v_noParameters_inferredReturnType |
| returnType: int Function() |
| synthetic static get v_hasParameter_withType_inferredReturnType |
| firstFragment: <testLibraryFragment>::@getter::v_hasParameter_withType_inferredReturnType |
| returnType: int Function(String) |
| synthetic static get v_hasParameter_withType_returnParameter |
| firstFragment: <testLibraryFragment>::@getter::v_hasParameter_withType_returnParameter |
| returnType: String Function(String) |
| synthetic static get v_async_returnValue |
| firstFragment: <testLibraryFragment>::@getter::v_async_returnValue |
| returnType: Future<int> Function() |
| synthetic static get v_async_returnFuture |
| firstFragment: <testLibraryFragment>::@getter::v_async_returnFuture |
| returnType: Future<int> Function() |
| setters |
| synthetic static set vFuture |
| firstFragment: <testLibraryFragment>::@setter::vFuture |
| formalParameters |
| requiredPositional _vFuture |
| type: Future<int> |
| returnType: void |
| synthetic static set v_noParameters_inferredReturnType |
| firstFragment: <testLibraryFragment>::@setter::v_noParameters_inferredReturnType |
| formalParameters |
| requiredPositional _v_noParameters_inferredReturnType |
| type: int Function() |
| returnType: void |
| synthetic static set v_hasParameter_withType_inferredReturnType |
| firstFragment: <testLibraryFragment>::@setter::v_hasParameter_withType_inferredReturnType |
| formalParameters |
| requiredPositional _v_hasParameter_withType_inferredReturnType |
| type: int Function(String) |
| returnType: void |
| synthetic static set v_hasParameter_withType_returnParameter |
| firstFragment: <testLibraryFragment>::@setter::v_hasParameter_withType_returnParameter |
| formalParameters |
| requiredPositional _v_hasParameter_withType_returnParameter |
| type: String Function(String) |
| returnType: void |
| synthetic static set v_async_returnValue |
| firstFragment: <testLibraryFragment>::@setter::v_async_returnValue |
| formalParameters |
| requiredPositional _v_async_returnValue |
| type: Future<int> Function() |
| returnType: void |
| synthetic static set v_async_returnFuture |
| firstFragment: <testLibraryFragment>::@setter::v_async_returnFuture |
| formalParameters |
| requiredPositional _v_async_returnFuture |
| type: Future<int> Function() |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_functionExpressionInvocation_noTypeParameters() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var v = (() => 42)(); |
| '''); |
| // TODO(scheglov): add more function expression tests |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer v @4 |
| reference: <testLibraryFragment>::@topLevelVariable::v |
| element: <testLibrary>::@topLevelVariable::v |
| getter2: <testLibraryFragment>::@getter::v |
| setter2: <testLibraryFragment>::@setter::v |
| getters |
| synthetic get v |
| reference: <testLibraryFragment>::@getter::v |
| element: <testLibraryFragment>::@getter::v#element |
| setters |
| synthetic set v |
| reference: <testLibraryFragment>::@setter::v |
| element: <testLibraryFragment>::@setter::v#element |
| formalParameters |
| _v |
| element: <testLibraryFragment>::@setter::v::@parameter::_v#element |
| topLevelVariables |
| hasInitializer v |
| reference: <testLibrary>::@topLevelVariable::v |
| firstFragment: <testLibraryFragment>::@topLevelVariable::v |
| type: int |
| getter: <testLibraryFragment>::@getter::v#element |
| setter: <testLibraryFragment>::@setter::v#element |
| getters |
| synthetic static get v |
| firstFragment: <testLibraryFragment>::@getter::v |
| returnType: int |
| setters |
| synthetic static set v |
| firstFragment: <testLibraryFragment>::@setter::v |
| formalParameters |
| requiredPositional _v |
| type: int |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_functionInvocation_hasTypeParameters() async { |
| var library = await _encodeDecodeLibrary(r''' |
| T f<T>() => null; |
| var vHasTypeArgument = f<int>(); |
| var vNoTypeArgument = f(); |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer vHasTypeArgument @22 |
| reference: <testLibraryFragment>::@topLevelVariable::vHasTypeArgument |
| element: <testLibrary>::@topLevelVariable::vHasTypeArgument |
| getter2: <testLibraryFragment>::@getter::vHasTypeArgument |
| setter2: <testLibraryFragment>::@setter::vHasTypeArgument |
| hasInitializer vNoTypeArgument @55 |
| reference: <testLibraryFragment>::@topLevelVariable::vNoTypeArgument |
| element: <testLibrary>::@topLevelVariable::vNoTypeArgument |
| getter2: <testLibraryFragment>::@getter::vNoTypeArgument |
| setter2: <testLibraryFragment>::@setter::vNoTypeArgument |
| getters |
| synthetic get vHasTypeArgument |
| reference: <testLibraryFragment>::@getter::vHasTypeArgument |
| element: <testLibraryFragment>::@getter::vHasTypeArgument#element |
| synthetic get vNoTypeArgument |
| reference: <testLibraryFragment>::@getter::vNoTypeArgument |
| element: <testLibraryFragment>::@getter::vNoTypeArgument#element |
| setters |
| synthetic set vHasTypeArgument |
| reference: <testLibraryFragment>::@setter::vHasTypeArgument |
| element: <testLibraryFragment>::@setter::vHasTypeArgument#element |
| formalParameters |
| _vHasTypeArgument |
| element: <testLibraryFragment>::@setter::vHasTypeArgument::@parameter::_vHasTypeArgument#element |
| synthetic set vNoTypeArgument |
| reference: <testLibraryFragment>::@setter::vNoTypeArgument |
| element: <testLibraryFragment>::@setter::vNoTypeArgument#element |
| formalParameters |
| _vNoTypeArgument |
| element: <testLibraryFragment>::@setter::vNoTypeArgument::@parameter::_vNoTypeArgument#element |
| functions |
| f @2 |
| reference: <testLibraryFragment>::@function::f |
| element: <testLibrary>::@function::f |
| typeParameters |
| T @4 |
| element: T@4 |
| topLevelVariables |
| hasInitializer vHasTypeArgument |
| reference: <testLibrary>::@topLevelVariable::vHasTypeArgument |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vHasTypeArgument |
| type: int |
| getter: <testLibraryFragment>::@getter::vHasTypeArgument#element |
| setter: <testLibraryFragment>::@setter::vHasTypeArgument#element |
| hasInitializer vNoTypeArgument |
| reference: <testLibrary>::@topLevelVariable::vNoTypeArgument |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vNoTypeArgument |
| type: dynamic |
| getter: <testLibraryFragment>::@getter::vNoTypeArgument#element |
| setter: <testLibraryFragment>::@setter::vNoTypeArgument#element |
| getters |
| synthetic static get vHasTypeArgument |
| firstFragment: <testLibraryFragment>::@getter::vHasTypeArgument |
| returnType: int |
| synthetic static get vNoTypeArgument |
| firstFragment: <testLibraryFragment>::@getter::vNoTypeArgument |
| returnType: dynamic |
| setters |
| synthetic static set vHasTypeArgument |
| firstFragment: <testLibraryFragment>::@setter::vHasTypeArgument |
| formalParameters |
| requiredPositional _vHasTypeArgument |
| type: int |
| returnType: void |
| synthetic static set vNoTypeArgument |
| firstFragment: <testLibraryFragment>::@setter::vNoTypeArgument |
| formalParameters |
| requiredPositional _vNoTypeArgument |
| type: dynamic |
| returnType: void |
| functions |
| f |
| reference: <testLibrary>::@function::f |
| firstFragment: <testLibraryFragment>::@function::f |
| typeParameters |
| T |
| returnType: T |
| '''); |
| } |
| |
| test_initializer_functionInvocation_noTypeParameters() async { |
| var library = await _encodeDecodeLibrary(r''' |
| String f(int p) => null; |
| var vOkArgumentType = f(1); |
| var vWrongArgumentType = f(2.0); |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer vOkArgumentType @29 |
| reference: <testLibraryFragment>::@topLevelVariable::vOkArgumentType |
| element: <testLibrary>::@topLevelVariable::vOkArgumentType |
| getter2: <testLibraryFragment>::@getter::vOkArgumentType |
| setter2: <testLibraryFragment>::@setter::vOkArgumentType |
| hasInitializer vWrongArgumentType @57 |
| reference: <testLibraryFragment>::@topLevelVariable::vWrongArgumentType |
| element: <testLibrary>::@topLevelVariable::vWrongArgumentType |
| getter2: <testLibraryFragment>::@getter::vWrongArgumentType |
| setter2: <testLibraryFragment>::@setter::vWrongArgumentType |
| getters |
| synthetic get vOkArgumentType |
| reference: <testLibraryFragment>::@getter::vOkArgumentType |
| element: <testLibraryFragment>::@getter::vOkArgumentType#element |
| synthetic get vWrongArgumentType |
| reference: <testLibraryFragment>::@getter::vWrongArgumentType |
| element: <testLibraryFragment>::@getter::vWrongArgumentType#element |
| setters |
| synthetic set vOkArgumentType |
| reference: <testLibraryFragment>::@setter::vOkArgumentType |
| element: <testLibraryFragment>::@setter::vOkArgumentType#element |
| formalParameters |
| _vOkArgumentType |
| element: <testLibraryFragment>::@setter::vOkArgumentType::@parameter::_vOkArgumentType#element |
| synthetic set vWrongArgumentType |
| reference: <testLibraryFragment>::@setter::vWrongArgumentType |
| element: <testLibraryFragment>::@setter::vWrongArgumentType#element |
| formalParameters |
| _vWrongArgumentType |
| element: <testLibraryFragment>::@setter::vWrongArgumentType::@parameter::_vWrongArgumentType#element |
| functions |
| f @7 |
| reference: <testLibraryFragment>::@function::f |
| element: <testLibrary>::@function::f |
| formalParameters |
| p @13 |
| element: <testLibraryFragment>::@function::f::@parameter::p#element |
| topLevelVariables |
| hasInitializer vOkArgumentType |
| reference: <testLibrary>::@topLevelVariable::vOkArgumentType |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vOkArgumentType |
| type: String |
| getter: <testLibraryFragment>::@getter::vOkArgumentType#element |
| setter: <testLibraryFragment>::@setter::vOkArgumentType#element |
| hasInitializer vWrongArgumentType |
| reference: <testLibrary>::@topLevelVariable::vWrongArgumentType |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vWrongArgumentType |
| type: String |
| getter: <testLibraryFragment>::@getter::vWrongArgumentType#element |
| setter: <testLibraryFragment>::@setter::vWrongArgumentType#element |
| getters |
| synthetic static get vOkArgumentType |
| firstFragment: <testLibraryFragment>::@getter::vOkArgumentType |
| returnType: String |
| synthetic static get vWrongArgumentType |
| firstFragment: <testLibraryFragment>::@getter::vWrongArgumentType |
| returnType: String |
| setters |
| synthetic static set vOkArgumentType |
| firstFragment: <testLibraryFragment>::@setter::vOkArgumentType |
| formalParameters |
| requiredPositional _vOkArgumentType |
| type: String |
| returnType: void |
| synthetic static set vWrongArgumentType |
| firstFragment: <testLibraryFragment>::@setter::vWrongArgumentType |
| formalParameters |
| requiredPositional _vWrongArgumentType |
| type: String |
| returnType: void |
| functions |
| f |
| reference: <testLibrary>::@function::f |
| firstFragment: <testLibraryFragment>::@function::f |
| formalParameters |
| requiredPositional p |
| type: int |
| returnType: String |
| '''); |
| } |
| |
| test_initializer_identifier() async { |
| var library = await _encodeDecodeLibrary(r''' |
| String topLevelFunction(int p) => null; |
| var topLevelVariable = 0; |
| int get topLevelGetter => 0; |
| class A { |
| static var staticClassVariable = 0; |
| static int get staticGetter => 0; |
| static String staticClassMethod(int p) => null; |
| String instanceClassMethod(int p) => null; |
| } |
| var r_topLevelFunction = topLevelFunction; |
| var r_topLevelVariable = topLevelVariable; |
| var r_topLevelGetter = topLevelGetter; |
| var r_staticClassVariable = A.staticClassVariable; |
| var r_staticGetter = A.staticGetter; |
| var r_staticClassMethod = A.staticClassMethod; |
| var instanceOfA = new A(); |
| var r_instanceClassMethod = instanceOfA.instanceClassMethod; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @101 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| fields |
| hasInitializer staticClassVariable @118 |
| reference: <testLibraryFragment>::@class::A::@field::staticClassVariable |
| element: <testLibraryFragment>::@class::A::@field::staticClassVariable#element |
| getter2: <testLibraryFragment>::@class::A::@getter::staticClassVariable |
| setter2: <testLibraryFragment>::@class::A::@setter::staticClassVariable |
| synthetic staticGetter |
| reference: <testLibraryFragment>::@class::A::@field::staticGetter |
| element: <testLibraryFragment>::@class::A::@field::staticGetter#element |
| getter2: <testLibraryFragment>::@class::A::@getter::staticGetter |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| getters |
| synthetic get staticClassVariable |
| reference: <testLibraryFragment>::@class::A::@getter::staticClassVariable |
| element: <testLibraryFragment>::@class::A::@getter::staticClassVariable#element |
| get staticGetter @160 |
| reference: <testLibraryFragment>::@class::A::@getter::staticGetter |
| element: <testLibraryFragment>::@class::A::@getter::staticGetter#element |
| setters |
| synthetic set staticClassVariable |
| reference: <testLibraryFragment>::@class::A::@setter::staticClassVariable |
| element: <testLibraryFragment>::@class::A::@setter::staticClassVariable#element |
| formalParameters |
| _staticClassVariable |
| element: <testLibraryFragment>::@class::A::@setter::staticClassVariable::@parameter::_staticClassVariable#element |
| methods |
| staticClassMethod @195 |
| reference: <testLibraryFragment>::@class::A::@method::staticClassMethod |
| element: <testLibrary>::@class::A::@method::staticClassMethod |
| formalParameters |
| p @217 |
| element: <testLibraryFragment>::@class::A::@method::staticClassMethod::@parameter::p#element |
| instanceClassMethod @238 |
| reference: <testLibraryFragment>::@class::A::@method::instanceClassMethod |
| element: <testLibrary>::@class::A::@method::instanceClassMethod |
| formalParameters |
| p @262 |
| element: <testLibraryFragment>::@class::A::@method::instanceClassMethod::@parameter::p#element |
| topLevelVariables |
| hasInitializer topLevelVariable @44 |
| reference: <testLibraryFragment>::@topLevelVariable::topLevelVariable |
| element: <testLibrary>::@topLevelVariable::topLevelVariable |
| getter2: <testLibraryFragment>::@getter::topLevelVariable |
| setter2: <testLibraryFragment>::@setter::topLevelVariable |
| hasInitializer r_topLevelFunction @280 |
| reference: <testLibraryFragment>::@topLevelVariable::r_topLevelFunction |
| element: <testLibrary>::@topLevelVariable::r_topLevelFunction |
| getter2: <testLibraryFragment>::@getter::r_topLevelFunction |
| setter2: <testLibraryFragment>::@setter::r_topLevelFunction |
| hasInitializer r_topLevelVariable @323 |
| reference: <testLibraryFragment>::@topLevelVariable::r_topLevelVariable |
| element: <testLibrary>::@topLevelVariable::r_topLevelVariable |
| getter2: <testLibraryFragment>::@getter::r_topLevelVariable |
| setter2: <testLibraryFragment>::@setter::r_topLevelVariable |
| hasInitializer r_topLevelGetter @366 |
| reference: <testLibraryFragment>::@topLevelVariable::r_topLevelGetter |
| element: <testLibrary>::@topLevelVariable::r_topLevelGetter |
| getter2: <testLibraryFragment>::@getter::r_topLevelGetter |
| setter2: <testLibraryFragment>::@setter::r_topLevelGetter |
| hasInitializer r_staticClassVariable @405 |
| reference: <testLibraryFragment>::@topLevelVariable::r_staticClassVariable |
| element: <testLibrary>::@topLevelVariable::r_staticClassVariable |
| getter2: <testLibraryFragment>::@getter::r_staticClassVariable |
| setter2: <testLibraryFragment>::@setter::r_staticClassVariable |
| hasInitializer r_staticGetter @456 |
| reference: <testLibraryFragment>::@topLevelVariable::r_staticGetter |
| element: <testLibrary>::@topLevelVariable::r_staticGetter |
| getter2: <testLibraryFragment>::@getter::r_staticGetter |
| setter2: <testLibraryFragment>::@setter::r_staticGetter |
| hasInitializer r_staticClassMethod @493 |
| reference: <testLibraryFragment>::@topLevelVariable::r_staticClassMethod |
| element: <testLibrary>::@topLevelVariable::r_staticClassMethod |
| getter2: <testLibraryFragment>::@getter::r_staticClassMethod |
| setter2: <testLibraryFragment>::@setter::r_staticClassMethod |
| hasInitializer instanceOfA @540 |
| reference: <testLibraryFragment>::@topLevelVariable::instanceOfA |
| element: <testLibrary>::@topLevelVariable::instanceOfA |
| getter2: <testLibraryFragment>::@getter::instanceOfA |
| setter2: <testLibraryFragment>::@setter::instanceOfA |
| hasInitializer r_instanceClassMethod @567 |
| reference: <testLibraryFragment>::@topLevelVariable::r_instanceClassMethod |
| element: <testLibrary>::@topLevelVariable::r_instanceClassMethod |
| getter2: <testLibraryFragment>::@getter::r_instanceClassMethod |
| setter2: <testLibraryFragment>::@setter::r_instanceClassMethod |
| synthetic topLevelGetter (offset=-1) |
| reference: <testLibraryFragment>::@topLevelVariable::topLevelGetter |
| element: <testLibrary>::@topLevelVariable::topLevelGetter |
| getter2: <testLibraryFragment>::@getter::topLevelGetter |
| getters |
| synthetic get topLevelVariable |
| reference: <testLibraryFragment>::@getter::topLevelVariable |
| element: <testLibraryFragment>::@getter::topLevelVariable#element |
| synthetic get r_topLevelFunction |
| reference: <testLibraryFragment>::@getter::r_topLevelFunction |
| element: <testLibraryFragment>::@getter::r_topLevelFunction#element |
| synthetic get r_topLevelVariable |
| reference: <testLibraryFragment>::@getter::r_topLevelVariable |
| element: <testLibraryFragment>::@getter::r_topLevelVariable#element |
| synthetic get r_topLevelGetter |
| reference: <testLibraryFragment>::@getter::r_topLevelGetter |
| element: <testLibraryFragment>::@getter::r_topLevelGetter#element |
| synthetic get r_staticClassVariable |
| reference: <testLibraryFragment>::@getter::r_staticClassVariable |
| element: <testLibraryFragment>::@getter::r_staticClassVariable#element |
| synthetic get r_staticGetter |
| reference: <testLibraryFragment>::@getter::r_staticGetter |
| element: <testLibraryFragment>::@getter::r_staticGetter#element |
| synthetic get r_staticClassMethod |
| reference: <testLibraryFragment>::@getter::r_staticClassMethod |
| element: <testLibraryFragment>::@getter::r_staticClassMethod#element |
| synthetic get instanceOfA |
| reference: <testLibraryFragment>::@getter::instanceOfA |
| element: <testLibraryFragment>::@getter::instanceOfA#element |
| synthetic get r_instanceClassMethod |
| reference: <testLibraryFragment>::@getter::r_instanceClassMethod |
| element: <testLibraryFragment>::@getter::r_instanceClassMethod#element |
| get topLevelGetter @74 |
| reference: <testLibraryFragment>::@getter::topLevelGetter |
| element: <testLibraryFragment>::@getter::topLevelGetter#element |
| setters |
| synthetic set topLevelVariable |
| reference: <testLibraryFragment>::@setter::topLevelVariable |
| element: <testLibraryFragment>::@setter::topLevelVariable#element |
| formalParameters |
| _topLevelVariable |
| element: <testLibraryFragment>::@setter::topLevelVariable::@parameter::_topLevelVariable#element |
| synthetic set r_topLevelFunction |
| reference: <testLibraryFragment>::@setter::r_topLevelFunction |
| element: <testLibraryFragment>::@setter::r_topLevelFunction#element |
| formalParameters |
| _r_topLevelFunction |
| element: <testLibraryFragment>::@setter::r_topLevelFunction::@parameter::_r_topLevelFunction#element |
| synthetic set r_topLevelVariable |
| reference: <testLibraryFragment>::@setter::r_topLevelVariable |
| element: <testLibraryFragment>::@setter::r_topLevelVariable#element |
| formalParameters |
| _r_topLevelVariable |
| element: <testLibraryFragment>::@setter::r_topLevelVariable::@parameter::_r_topLevelVariable#element |
| synthetic set r_topLevelGetter |
| reference: <testLibraryFragment>::@setter::r_topLevelGetter |
| element: <testLibraryFragment>::@setter::r_topLevelGetter#element |
| formalParameters |
| _r_topLevelGetter |
| element: <testLibraryFragment>::@setter::r_topLevelGetter::@parameter::_r_topLevelGetter#element |
| synthetic set r_staticClassVariable |
| reference: <testLibraryFragment>::@setter::r_staticClassVariable |
| element: <testLibraryFragment>::@setter::r_staticClassVariable#element |
| formalParameters |
| _r_staticClassVariable |
| element: <testLibraryFragment>::@setter::r_staticClassVariable::@parameter::_r_staticClassVariable#element |
| synthetic set r_staticGetter |
| reference: <testLibraryFragment>::@setter::r_staticGetter |
| element: <testLibraryFragment>::@setter::r_staticGetter#element |
| formalParameters |
| _r_staticGetter |
| element: <testLibraryFragment>::@setter::r_staticGetter::@parameter::_r_staticGetter#element |
| synthetic set r_staticClassMethod |
| reference: <testLibraryFragment>::@setter::r_staticClassMethod |
| element: <testLibraryFragment>::@setter::r_staticClassMethod#element |
| formalParameters |
| _r_staticClassMethod |
| element: <testLibraryFragment>::@setter::r_staticClassMethod::@parameter::_r_staticClassMethod#element |
| synthetic set instanceOfA |
| reference: <testLibraryFragment>::@setter::instanceOfA |
| element: <testLibraryFragment>::@setter::instanceOfA#element |
| formalParameters |
| _instanceOfA |
| element: <testLibraryFragment>::@setter::instanceOfA::@parameter::_instanceOfA#element |
| synthetic set r_instanceClassMethod |
| reference: <testLibraryFragment>::@setter::r_instanceClassMethod |
| element: <testLibraryFragment>::@setter::r_instanceClassMethod#element |
| formalParameters |
| _r_instanceClassMethod |
| element: <testLibraryFragment>::@setter::r_instanceClassMethod::@parameter::_r_instanceClassMethod#element |
| functions |
| topLevelFunction @7 |
| reference: <testLibraryFragment>::@function::topLevelFunction |
| element: <testLibrary>::@function::topLevelFunction |
| formalParameters |
| p @28 |
| element: <testLibraryFragment>::@function::topLevelFunction::@parameter::p#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| fields |
| static hasInitializer staticClassVariable |
| firstFragment: <testLibraryFragment>::@class::A::@field::staticClassVariable |
| type: int |
| getter: <testLibraryFragment>::@class::A::@getter::staticClassVariable#element |
| setter: <testLibraryFragment>::@class::A::@setter::staticClassVariable#element |
| synthetic static staticGetter |
| firstFragment: <testLibraryFragment>::@class::A::@field::staticGetter |
| type: int |
| getter: <testLibraryFragment>::@class::A::@getter::staticGetter#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| getters |
| synthetic static get staticClassVariable |
| firstFragment: <testLibraryFragment>::@class::A::@getter::staticClassVariable |
| returnType: int |
| static get staticGetter |
| firstFragment: <testLibraryFragment>::@class::A::@getter::staticGetter |
| returnType: int |
| setters |
| synthetic static set staticClassVariable |
| firstFragment: <testLibraryFragment>::@class::A::@setter::staticClassVariable |
| formalParameters |
| requiredPositional _staticClassVariable |
| type: int |
| returnType: void |
| methods |
| static staticClassMethod |
| reference: <testLibrary>::@class::A::@method::staticClassMethod |
| firstFragment: <testLibraryFragment>::@class::A::@method::staticClassMethod |
| formalParameters |
| requiredPositional p |
| type: int |
| returnType: String |
| instanceClassMethod |
| reference: <testLibrary>::@class::A::@method::instanceClassMethod |
| firstFragment: <testLibraryFragment>::@class::A::@method::instanceClassMethod |
| formalParameters |
| requiredPositional p |
| type: int |
| returnType: String |
| topLevelVariables |
| hasInitializer topLevelVariable |
| reference: <testLibrary>::@topLevelVariable::topLevelVariable |
| firstFragment: <testLibraryFragment>::@topLevelVariable::topLevelVariable |
| type: int |
| getter: <testLibraryFragment>::@getter::topLevelVariable#element |
| setter: <testLibraryFragment>::@setter::topLevelVariable#element |
| hasInitializer r_topLevelFunction |
| reference: <testLibrary>::@topLevelVariable::r_topLevelFunction |
| firstFragment: <testLibraryFragment>::@topLevelVariable::r_topLevelFunction |
| type: String Function(int) |
| getter: <testLibraryFragment>::@getter::r_topLevelFunction#element |
| setter: <testLibraryFragment>::@setter::r_topLevelFunction#element |
| hasInitializer r_topLevelVariable |
| reference: <testLibrary>::@topLevelVariable::r_topLevelVariable |
| firstFragment: <testLibraryFragment>::@topLevelVariable::r_topLevelVariable |
| type: int |
| getter: <testLibraryFragment>::@getter::r_topLevelVariable#element |
| setter: <testLibraryFragment>::@setter::r_topLevelVariable#element |
| hasInitializer r_topLevelGetter |
| reference: <testLibrary>::@topLevelVariable::r_topLevelGetter |
| firstFragment: <testLibraryFragment>::@topLevelVariable::r_topLevelGetter |
| type: int |
| getter: <testLibraryFragment>::@getter::r_topLevelGetter#element |
| setter: <testLibraryFragment>::@setter::r_topLevelGetter#element |
| hasInitializer r_staticClassVariable |
| reference: <testLibrary>::@topLevelVariable::r_staticClassVariable |
| firstFragment: <testLibraryFragment>::@topLevelVariable::r_staticClassVariable |
| type: int |
| getter: <testLibraryFragment>::@getter::r_staticClassVariable#element |
| setter: <testLibraryFragment>::@setter::r_staticClassVariable#element |
| hasInitializer r_staticGetter |
| reference: <testLibrary>::@topLevelVariable::r_staticGetter |
| firstFragment: <testLibraryFragment>::@topLevelVariable::r_staticGetter |
| type: int |
| getter: <testLibraryFragment>::@getter::r_staticGetter#element |
| setter: <testLibraryFragment>::@setter::r_staticGetter#element |
| hasInitializer r_staticClassMethod |
| reference: <testLibrary>::@topLevelVariable::r_staticClassMethod |
| firstFragment: <testLibraryFragment>::@topLevelVariable::r_staticClassMethod |
| type: String Function(int) |
| getter: <testLibraryFragment>::@getter::r_staticClassMethod#element |
| setter: <testLibraryFragment>::@setter::r_staticClassMethod#element |
| hasInitializer instanceOfA |
| reference: <testLibrary>::@topLevelVariable::instanceOfA |
| firstFragment: <testLibraryFragment>::@topLevelVariable::instanceOfA |
| type: A |
| getter: <testLibraryFragment>::@getter::instanceOfA#element |
| setter: <testLibraryFragment>::@setter::instanceOfA#element |
| hasInitializer r_instanceClassMethod |
| reference: <testLibrary>::@topLevelVariable::r_instanceClassMethod |
| firstFragment: <testLibraryFragment>::@topLevelVariable::r_instanceClassMethod |
| type: String Function(int) |
| getter: <testLibraryFragment>::@getter::r_instanceClassMethod#element |
| setter: <testLibraryFragment>::@setter::r_instanceClassMethod#element |
| synthetic topLevelGetter |
| reference: <testLibrary>::@topLevelVariable::topLevelGetter |
| firstFragment: <testLibraryFragment>::@topLevelVariable::topLevelGetter |
| type: int |
| getter: <testLibraryFragment>::@getter::topLevelGetter#element |
| getters |
| synthetic static get topLevelVariable |
| firstFragment: <testLibraryFragment>::@getter::topLevelVariable |
| returnType: int |
| synthetic static get r_topLevelFunction |
| firstFragment: <testLibraryFragment>::@getter::r_topLevelFunction |
| returnType: String Function(int) |
| synthetic static get r_topLevelVariable |
| firstFragment: <testLibraryFragment>::@getter::r_topLevelVariable |
| returnType: int |
| synthetic static get r_topLevelGetter |
| firstFragment: <testLibraryFragment>::@getter::r_topLevelGetter |
| returnType: int |
| synthetic static get r_staticClassVariable |
| firstFragment: <testLibraryFragment>::@getter::r_staticClassVariable |
| returnType: int |
| synthetic static get r_staticGetter |
| firstFragment: <testLibraryFragment>::@getter::r_staticGetter |
| returnType: int |
| synthetic static get r_staticClassMethod |
| firstFragment: <testLibraryFragment>::@getter::r_staticClassMethod |
| returnType: String Function(int) |
| synthetic static get instanceOfA |
| firstFragment: <testLibraryFragment>::@getter::instanceOfA |
| returnType: A |
| synthetic static get r_instanceClassMethod |
| firstFragment: <testLibraryFragment>::@getter::r_instanceClassMethod |
| returnType: String Function(int) |
| static get topLevelGetter |
| firstFragment: <testLibraryFragment>::@getter::topLevelGetter |
| returnType: int |
| setters |
| synthetic static set topLevelVariable |
| firstFragment: <testLibraryFragment>::@setter::topLevelVariable |
| formalParameters |
| requiredPositional _topLevelVariable |
| type: int |
| returnType: void |
| synthetic static set r_topLevelFunction |
| firstFragment: <testLibraryFragment>::@setter::r_topLevelFunction |
| formalParameters |
| requiredPositional _r_topLevelFunction |
| type: String Function(int) |
| returnType: void |
| synthetic static set r_topLevelVariable |
| firstFragment: <testLibraryFragment>::@setter::r_topLevelVariable |
| formalParameters |
| requiredPositional _r_topLevelVariable |
| type: int |
| returnType: void |
| synthetic static set r_topLevelGetter |
| firstFragment: <testLibraryFragment>::@setter::r_topLevelGetter |
| formalParameters |
| requiredPositional _r_topLevelGetter |
| type: int |
| returnType: void |
| synthetic static set r_staticClassVariable |
| firstFragment: <testLibraryFragment>::@setter::r_staticClassVariable |
| formalParameters |
| requiredPositional _r_staticClassVariable |
| type: int |
| returnType: void |
| synthetic static set r_staticGetter |
| firstFragment: <testLibraryFragment>::@setter::r_staticGetter |
| formalParameters |
| requiredPositional _r_staticGetter |
| type: int |
| returnType: void |
| synthetic static set r_staticClassMethod |
| firstFragment: <testLibraryFragment>::@setter::r_staticClassMethod |
| formalParameters |
| requiredPositional _r_staticClassMethod |
| type: String Function(int) |
| returnType: void |
| synthetic static set instanceOfA |
| firstFragment: <testLibraryFragment>::@setter::instanceOfA |
| formalParameters |
| requiredPositional _instanceOfA |
| type: A |
| returnType: void |
| synthetic static set r_instanceClassMethod |
| firstFragment: <testLibraryFragment>::@setter::r_instanceClassMethod |
| formalParameters |
| requiredPositional _r_instanceClassMethod |
| type: String Function(int) |
| returnType: void |
| functions |
| topLevelFunction |
| reference: <testLibrary>::@function::topLevelFunction |
| firstFragment: <testLibraryFragment>::@function::topLevelFunction |
| formalParameters |
| requiredPositional p |
| type: int |
| returnType: String |
| '''); |
| } |
| |
| test_initializer_identifier_error_cycle_classField() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A { |
| static var a = B.b; |
| } |
| class B { |
| static var b = A.a; |
| } |
| var c = A.a; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| fields |
| hasInitializer a @23 |
| reference: <testLibraryFragment>::@class::A::@field::a |
| element: <testLibraryFragment>::@class::A::@field::a#element |
| getter2: <testLibraryFragment>::@class::A::@getter::a |
| setter2: <testLibraryFragment>::@class::A::@setter::a |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| getters |
| synthetic get a |
| reference: <testLibraryFragment>::@class::A::@getter::a |
| element: <testLibraryFragment>::@class::A::@getter::a#element |
| setters |
| synthetic set a |
| reference: <testLibraryFragment>::@class::A::@setter::a |
| element: <testLibraryFragment>::@class::A::@setter::a#element |
| formalParameters |
| _a |
| element: <testLibraryFragment>::@class::A::@setter::a::@parameter::_a#element |
| class B @40 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| fields |
| hasInitializer b @57 |
| reference: <testLibraryFragment>::@class::B::@field::b |
| element: <testLibraryFragment>::@class::B::@field::b#element |
| getter2: <testLibraryFragment>::@class::B::@getter::b |
| setter2: <testLibraryFragment>::@class::B::@setter::b |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| getters |
| synthetic get b |
| reference: <testLibraryFragment>::@class::B::@getter::b |
| element: <testLibraryFragment>::@class::B::@getter::b#element |
| setters |
| synthetic set b |
| reference: <testLibraryFragment>::@class::B::@setter::b |
| element: <testLibraryFragment>::@class::B::@setter::b#element |
| formalParameters |
| _b |
| element: <testLibraryFragment>::@class::B::@setter::b::@parameter::_b#element |
| topLevelVariables |
| hasInitializer c @72 |
| reference: <testLibraryFragment>::@topLevelVariable::c |
| element: <testLibrary>::@topLevelVariable::c |
| getter2: <testLibraryFragment>::@getter::c |
| setter2: <testLibraryFragment>::@setter::c |
| getters |
| synthetic get c |
| reference: <testLibraryFragment>::@getter::c |
| element: <testLibraryFragment>::@getter::c#element |
| setters |
| synthetic set c |
| reference: <testLibraryFragment>::@setter::c |
| element: <testLibraryFragment>::@setter::c#element |
| formalParameters |
| _c |
| element: <testLibraryFragment>::@setter::c::@parameter::_c#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| fields |
| static hasInitializer a |
| firstFragment: <testLibraryFragment>::@class::A::@field::a |
| type: dynamic |
| getter: <testLibraryFragment>::@class::A::@getter::a#element |
| setter: <testLibraryFragment>::@class::A::@setter::a#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| getters |
| synthetic static get a |
| firstFragment: <testLibraryFragment>::@class::A::@getter::a |
| returnType: dynamic |
| setters |
| synthetic static set a |
| firstFragment: <testLibraryFragment>::@class::A::@setter::a |
| formalParameters |
| requiredPositional _a |
| type: dynamic |
| returnType: void |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| fields |
| static hasInitializer b |
| firstFragment: <testLibraryFragment>::@class::B::@field::b |
| type: dynamic |
| getter: <testLibraryFragment>::@class::B::@getter::b#element |
| setter: <testLibraryFragment>::@class::B::@setter::b#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| getters |
| synthetic static get b |
| firstFragment: <testLibraryFragment>::@class::B::@getter::b |
| returnType: dynamic |
| setters |
| synthetic static set b |
| firstFragment: <testLibraryFragment>::@class::B::@setter::b |
| formalParameters |
| requiredPositional _b |
| type: dynamic |
| returnType: void |
| topLevelVariables |
| hasInitializer c |
| reference: <testLibrary>::@topLevelVariable::c |
| firstFragment: <testLibraryFragment>::@topLevelVariable::c |
| type: dynamic |
| getter: <testLibraryFragment>::@getter::c#element |
| setter: <testLibraryFragment>::@setter::c#element |
| getters |
| synthetic static get c |
| firstFragment: <testLibraryFragment>::@getter::c |
| returnType: dynamic |
| setters |
| synthetic static set c |
| firstFragment: <testLibraryFragment>::@setter::c |
| formalParameters |
| requiredPositional _c |
| type: dynamic |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_identifier_error_cycle_mix() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A { |
| static var a = b; |
| } |
| var b = A.a; |
| var c = b; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| fields |
| hasInitializer a @23 |
| reference: <testLibraryFragment>::@class::A::@field::a |
| element: <testLibraryFragment>::@class::A::@field::a#element |
| getter2: <testLibraryFragment>::@class::A::@getter::a |
| setter2: <testLibraryFragment>::@class::A::@setter::a |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| getters |
| synthetic get a |
| reference: <testLibraryFragment>::@class::A::@getter::a |
| element: <testLibraryFragment>::@class::A::@getter::a#element |
| setters |
| synthetic set a |
| reference: <testLibraryFragment>::@class::A::@setter::a |
| element: <testLibraryFragment>::@class::A::@setter::a#element |
| formalParameters |
| _a |
| element: <testLibraryFragment>::@class::A::@setter::a::@parameter::_a#element |
| topLevelVariables |
| hasInitializer b @36 |
| reference: <testLibraryFragment>::@topLevelVariable::b |
| element: <testLibrary>::@topLevelVariable::b |
| getter2: <testLibraryFragment>::@getter::b |
| setter2: <testLibraryFragment>::@setter::b |
| hasInitializer c @49 |
| reference: <testLibraryFragment>::@topLevelVariable::c |
| element: <testLibrary>::@topLevelVariable::c |
| getter2: <testLibraryFragment>::@getter::c |
| setter2: <testLibraryFragment>::@setter::c |
| getters |
| synthetic get b |
| reference: <testLibraryFragment>::@getter::b |
| element: <testLibraryFragment>::@getter::b#element |
| synthetic get c |
| reference: <testLibraryFragment>::@getter::c |
| element: <testLibraryFragment>::@getter::c#element |
| setters |
| synthetic set b |
| reference: <testLibraryFragment>::@setter::b |
| element: <testLibraryFragment>::@setter::b#element |
| formalParameters |
| _b |
| element: <testLibraryFragment>::@setter::b::@parameter::_b#element |
| synthetic set c |
| reference: <testLibraryFragment>::@setter::c |
| element: <testLibraryFragment>::@setter::c#element |
| formalParameters |
| _c |
| element: <testLibraryFragment>::@setter::c::@parameter::_c#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| fields |
| static hasInitializer a |
| firstFragment: <testLibraryFragment>::@class::A::@field::a |
| type: dynamic |
| getter: <testLibraryFragment>::@class::A::@getter::a#element |
| setter: <testLibraryFragment>::@class::A::@setter::a#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| getters |
| synthetic static get a |
| firstFragment: <testLibraryFragment>::@class::A::@getter::a |
| returnType: dynamic |
| setters |
| synthetic static set a |
| firstFragment: <testLibraryFragment>::@class::A::@setter::a |
| formalParameters |
| requiredPositional _a |
| type: dynamic |
| returnType: void |
| topLevelVariables |
| hasInitializer b |
| reference: <testLibrary>::@topLevelVariable::b |
| firstFragment: <testLibraryFragment>::@topLevelVariable::b |
| type: dynamic |
| getter: <testLibraryFragment>::@getter::b#element |
| setter: <testLibraryFragment>::@setter::b#element |
| hasInitializer c |
| reference: <testLibrary>::@topLevelVariable::c |
| firstFragment: <testLibraryFragment>::@topLevelVariable::c |
| type: dynamic |
| getter: <testLibraryFragment>::@getter::c#element |
| setter: <testLibraryFragment>::@setter::c#element |
| getters |
| synthetic static get b |
| firstFragment: <testLibraryFragment>::@getter::b |
| returnType: dynamic |
| synthetic static get c |
| firstFragment: <testLibraryFragment>::@getter::c |
| returnType: dynamic |
| setters |
| synthetic static set b |
| firstFragment: <testLibraryFragment>::@setter::b |
| formalParameters |
| requiredPositional _b |
| type: dynamic |
| returnType: void |
| synthetic static set c |
| firstFragment: <testLibraryFragment>::@setter::c |
| formalParameters |
| requiredPositional _c |
| type: dynamic |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_identifier_error_cycle_topLevel() async { |
| var library = await _encodeDecodeLibrary(r''' |
| final a = b; |
| final b = c; |
| final c = a; |
| final d = a; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer a @6 |
| reference: <testLibraryFragment>::@topLevelVariable::a |
| element: <testLibrary>::@topLevelVariable::a |
| getter2: <testLibraryFragment>::@getter::a |
| hasInitializer b @19 |
| reference: <testLibraryFragment>::@topLevelVariable::b |
| element: <testLibrary>::@topLevelVariable::b |
| getter2: <testLibraryFragment>::@getter::b |
| hasInitializer c @32 |
| reference: <testLibraryFragment>::@topLevelVariable::c |
| element: <testLibrary>::@topLevelVariable::c |
| getter2: <testLibraryFragment>::@getter::c |
| hasInitializer d @45 |
| reference: <testLibraryFragment>::@topLevelVariable::d |
| element: <testLibrary>::@topLevelVariable::d |
| getter2: <testLibraryFragment>::@getter::d |
| getters |
| synthetic get a |
| reference: <testLibraryFragment>::@getter::a |
| element: <testLibraryFragment>::@getter::a#element |
| synthetic get b |
| reference: <testLibraryFragment>::@getter::b |
| element: <testLibraryFragment>::@getter::b#element |
| synthetic get c |
| reference: <testLibraryFragment>::@getter::c |
| element: <testLibraryFragment>::@getter::c#element |
| synthetic get d |
| reference: <testLibraryFragment>::@getter::d |
| element: <testLibraryFragment>::@getter::d#element |
| topLevelVariables |
| final hasInitializer a |
| reference: <testLibrary>::@topLevelVariable::a |
| firstFragment: <testLibraryFragment>::@topLevelVariable::a |
| type: dynamic |
| getter: <testLibraryFragment>::@getter::a#element |
| final hasInitializer b |
| reference: <testLibrary>::@topLevelVariable::b |
| firstFragment: <testLibraryFragment>::@topLevelVariable::b |
| type: dynamic |
| getter: <testLibraryFragment>::@getter::b#element |
| final hasInitializer c |
| reference: <testLibrary>::@topLevelVariable::c |
| firstFragment: <testLibraryFragment>::@topLevelVariable::c |
| type: dynamic |
| getter: <testLibraryFragment>::@getter::c#element |
| final hasInitializer d |
| reference: <testLibrary>::@topLevelVariable::d |
| firstFragment: <testLibraryFragment>::@topLevelVariable::d |
| type: dynamic |
| getter: <testLibraryFragment>::@getter::d#element |
| getters |
| synthetic static get a |
| firstFragment: <testLibraryFragment>::@getter::a |
| returnType: dynamic |
| synthetic static get b |
| firstFragment: <testLibraryFragment>::@getter::b |
| returnType: dynamic |
| synthetic static get c |
| firstFragment: <testLibraryFragment>::@getter::c |
| returnType: dynamic |
| synthetic static get d |
| firstFragment: <testLibraryFragment>::@getter::d |
| returnType: dynamic |
| '''); |
| } |
| |
| test_initializer_identifier_formalParameter() async { |
| // TODO(scheglov): I don't understand this yet |
| } |
| |
| @skippedTest |
| test_initializer_instanceCreation_hasTypeParameter() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A<T> {} |
| var a = new A<int>(); |
| var b = new A(); |
| '''); |
| // TODO(scheglov): test for inference failure error |
| checkElementText(library, r''' |
| class A<T> { |
| } |
| A<int> a; |
| dynamic b; |
| '''); |
| } |
| |
| test_initializer_instanceCreation_noTypeParameters() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A {} |
| var a = new A(); |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| topLevelVariables |
| hasInitializer a @15 |
| reference: <testLibraryFragment>::@topLevelVariable::a |
| element: <testLibrary>::@topLevelVariable::a |
| getter2: <testLibraryFragment>::@getter::a |
| setter2: <testLibraryFragment>::@setter::a |
| getters |
| synthetic get a |
| reference: <testLibraryFragment>::@getter::a |
| element: <testLibraryFragment>::@getter::a#element |
| setters |
| synthetic set a |
| reference: <testLibraryFragment>::@setter::a |
| element: <testLibraryFragment>::@setter::a#element |
| formalParameters |
| _a |
| element: <testLibraryFragment>::@setter::a::@parameter::_a#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| topLevelVariables |
| hasInitializer a |
| reference: <testLibrary>::@topLevelVariable::a |
| firstFragment: <testLibraryFragment>::@topLevelVariable::a |
| type: A |
| getter: <testLibraryFragment>::@getter::a#element |
| setter: <testLibraryFragment>::@setter::a#element |
| getters |
| synthetic static get a |
| firstFragment: <testLibraryFragment>::@getter::a |
| returnType: A |
| setters |
| synthetic static set a |
| firstFragment: <testLibraryFragment>::@setter::a |
| formalParameters |
| requiredPositional _a |
| type: A |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_instanceGetterOfObject() async { |
| var library = await _encodeDecodeLibrary(r''' |
| dynamic f() => null; |
| var s = f().toString(); |
| var h = f().hashCode; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer s @25 |
| reference: <testLibraryFragment>::@topLevelVariable::s |
| element: <testLibrary>::@topLevelVariable::s |
| getter2: <testLibraryFragment>::@getter::s |
| setter2: <testLibraryFragment>::@setter::s |
| hasInitializer h @49 |
| reference: <testLibraryFragment>::@topLevelVariable::h |
| element: <testLibrary>::@topLevelVariable::h |
| getter2: <testLibraryFragment>::@getter::h |
| setter2: <testLibraryFragment>::@setter::h |
| getters |
| synthetic get s |
| reference: <testLibraryFragment>::@getter::s |
| element: <testLibraryFragment>::@getter::s#element |
| synthetic get h |
| reference: <testLibraryFragment>::@getter::h |
| element: <testLibraryFragment>::@getter::h#element |
| setters |
| synthetic set s |
| reference: <testLibraryFragment>::@setter::s |
| element: <testLibraryFragment>::@setter::s#element |
| formalParameters |
| _s |
| element: <testLibraryFragment>::@setter::s::@parameter::_s#element |
| synthetic set h |
| reference: <testLibraryFragment>::@setter::h |
| element: <testLibraryFragment>::@setter::h#element |
| formalParameters |
| _h |
| element: <testLibraryFragment>::@setter::h::@parameter::_h#element |
| functions |
| f @8 |
| reference: <testLibraryFragment>::@function::f |
| element: <testLibrary>::@function::f |
| topLevelVariables |
| hasInitializer s |
| reference: <testLibrary>::@topLevelVariable::s |
| firstFragment: <testLibraryFragment>::@topLevelVariable::s |
| type: String |
| getter: <testLibraryFragment>::@getter::s#element |
| setter: <testLibraryFragment>::@setter::s#element |
| hasInitializer h |
| reference: <testLibrary>::@topLevelVariable::h |
| firstFragment: <testLibraryFragment>::@topLevelVariable::h |
| type: int |
| getter: <testLibraryFragment>::@getter::h#element |
| setter: <testLibraryFragment>::@setter::h#element |
| getters |
| synthetic static get s |
| firstFragment: <testLibraryFragment>::@getter::s |
| returnType: String |
| synthetic static get h |
| firstFragment: <testLibraryFragment>::@getter::h |
| returnType: int |
| setters |
| synthetic static set s |
| firstFragment: <testLibraryFragment>::@setter::s |
| formalParameters |
| requiredPositional _s |
| type: String |
| returnType: void |
| synthetic static set h |
| firstFragment: <testLibraryFragment>::@setter::h |
| formalParameters |
| requiredPositional _h |
| type: int |
| returnType: void |
| functions |
| f |
| reference: <testLibrary>::@function::f |
| firstFragment: <testLibraryFragment>::@function::f |
| returnType: dynamic |
| '''); |
| } |
| |
| test_initializer_instanceGetterOfObject_prefixed() async { |
| var library = await _encodeDecodeLibrary(r''' |
| dynamic d; |
| var s = d.toString(); |
| var h = d.hashCode; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| d @8 |
| reference: <testLibraryFragment>::@topLevelVariable::d |
| element: <testLibrary>::@topLevelVariable::d |
| getter2: <testLibraryFragment>::@getter::d |
| setter2: <testLibraryFragment>::@setter::d |
| hasInitializer s @15 |
| reference: <testLibraryFragment>::@topLevelVariable::s |
| element: <testLibrary>::@topLevelVariable::s |
| getter2: <testLibraryFragment>::@getter::s |
| setter2: <testLibraryFragment>::@setter::s |
| hasInitializer h @37 |
| reference: <testLibraryFragment>::@topLevelVariable::h |
| element: <testLibrary>::@topLevelVariable::h |
| getter2: <testLibraryFragment>::@getter::h |
| setter2: <testLibraryFragment>::@setter::h |
| getters |
| synthetic get d |
| reference: <testLibraryFragment>::@getter::d |
| element: <testLibraryFragment>::@getter::d#element |
| synthetic get s |
| reference: <testLibraryFragment>::@getter::s |
| element: <testLibraryFragment>::@getter::s#element |
| synthetic get h |
| reference: <testLibraryFragment>::@getter::h |
| element: <testLibraryFragment>::@getter::h#element |
| setters |
| synthetic set d |
| reference: <testLibraryFragment>::@setter::d |
| element: <testLibraryFragment>::@setter::d#element |
| formalParameters |
| _d |
| element: <testLibraryFragment>::@setter::d::@parameter::_d#element |
| synthetic set s |
| reference: <testLibraryFragment>::@setter::s |
| element: <testLibraryFragment>::@setter::s#element |
| formalParameters |
| _s |
| element: <testLibraryFragment>::@setter::s::@parameter::_s#element |
| synthetic set h |
| reference: <testLibraryFragment>::@setter::h |
| element: <testLibraryFragment>::@setter::h#element |
| formalParameters |
| _h |
| element: <testLibraryFragment>::@setter::h::@parameter::_h#element |
| topLevelVariables |
| d |
| reference: <testLibrary>::@topLevelVariable::d |
| firstFragment: <testLibraryFragment>::@topLevelVariable::d |
| type: dynamic |
| getter: <testLibraryFragment>::@getter::d#element |
| setter: <testLibraryFragment>::@setter::d#element |
| hasInitializer s |
| reference: <testLibrary>::@topLevelVariable::s |
| firstFragment: <testLibraryFragment>::@topLevelVariable::s |
| type: String |
| getter: <testLibraryFragment>::@getter::s#element |
| setter: <testLibraryFragment>::@setter::s#element |
| hasInitializer h |
| reference: <testLibrary>::@topLevelVariable::h |
| firstFragment: <testLibraryFragment>::@topLevelVariable::h |
| type: int |
| getter: <testLibraryFragment>::@getter::h#element |
| setter: <testLibraryFragment>::@setter::h#element |
| getters |
| synthetic static get d |
| firstFragment: <testLibraryFragment>::@getter::d |
| returnType: dynamic |
| synthetic static get s |
| firstFragment: <testLibraryFragment>::@getter::s |
| returnType: String |
| synthetic static get h |
| firstFragment: <testLibraryFragment>::@getter::h |
| returnType: int |
| setters |
| synthetic static set d |
| firstFragment: <testLibraryFragment>::@setter::d |
| formalParameters |
| requiredPositional _d |
| type: dynamic |
| returnType: void |
| synthetic static set s |
| firstFragment: <testLibraryFragment>::@setter::s |
| formalParameters |
| requiredPositional _s |
| type: String |
| returnType: void |
| synthetic static set h |
| firstFragment: <testLibraryFragment>::@setter::h |
| formalParameters |
| requiredPositional _h |
| type: int |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_is() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var a = 1.2; |
| var b = a is int; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer a @4 |
| reference: <testLibraryFragment>::@topLevelVariable::a |
| element: <testLibrary>::@topLevelVariable::a |
| getter2: <testLibraryFragment>::@getter::a |
| setter2: <testLibraryFragment>::@setter::a |
| hasInitializer b @17 |
| reference: <testLibraryFragment>::@topLevelVariable::b |
| element: <testLibrary>::@topLevelVariable::b |
| getter2: <testLibraryFragment>::@getter::b |
| setter2: <testLibraryFragment>::@setter::b |
| getters |
| synthetic get a |
| reference: <testLibraryFragment>::@getter::a |
| element: <testLibraryFragment>::@getter::a#element |
| synthetic get b |
| reference: <testLibraryFragment>::@getter::b |
| element: <testLibraryFragment>::@getter::b#element |
| setters |
| synthetic set a |
| reference: <testLibraryFragment>::@setter::a |
| element: <testLibraryFragment>::@setter::a#element |
| formalParameters |
| _a |
| element: <testLibraryFragment>::@setter::a::@parameter::_a#element |
| synthetic set b |
| reference: <testLibraryFragment>::@setter::b |
| element: <testLibraryFragment>::@setter::b#element |
| formalParameters |
| _b |
| element: <testLibraryFragment>::@setter::b::@parameter::_b#element |
| topLevelVariables |
| hasInitializer a |
| reference: <testLibrary>::@topLevelVariable::a |
| firstFragment: <testLibraryFragment>::@topLevelVariable::a |
| type: double |
| getter: <testLibraryFragment>::@getter::a#element |
| setter: <testLibraryFragment>::@setter::a#element |
| hasInitializer b |
| reference: <testLibrary>::@topLevelVariable::b |
| firstFragment: <testLibraryFragment>::@topLevelVariable::b |
| type: bool |
| getter: <testLibraryFragment>::@getter::b#element |
| setter: <testLibraryFragment>::@setter::b#element |
| getters |
| synthetic static get a |
| firstFragment: <testLibraryFragment>::@getter::a |
| returnType: double |
| synthetic static get b |
| firstFragment: <testLibraryFragment>::@getter::b |
| returnType: bool |
| setters |
| synthetic static set a |
| firstFragment: <testLibraryFragment>::@setter::a |
| formalParameters |
| requiredPositional _a |
| type: double |
| returnType: void |
| synthetic static set b |
| firstFragment: <testLibraryFragment>::@setter::b |
| formalParameters |
| requiredPositional _b |
| type: bool |
| returnType: void |
| '''); |
| } |
| |
| @skippedTest |
| test_initializer_literal() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var vNull = null; |
| var vBoolFalse = false; |
| var vBoolTrue = true; |
| var vInt = 1; |
| var vIntLong = 0x9876543210987654321; |
| var vDouble = 2.3; |
| var vString = 'abc'; |
| var vStringConcat = 'aaa' 'bbb'; |
| var vStringInterpolation = 'aaa ${true} ${42} bbb'; |
| var vSymbol = #aaa.bbb.ccc; |
| '''); |
| checkElementText(library, r''' |
| Null vNull; |
| bool vBoolFalse; |
| bool vBoolTrue; |
| int vInt; |
| int vIntLong; |
| double vDouble; |
| String vString; |
| String vStringConcat; |
| String vStringInterpolation; |
| Symbol vSymbol; |
| '''); |
| } |
| |
| test_initializer_literal_list_typed() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var vObject = <Object>[1, 2, 3]; |
| var vNum = <num>[1, 2, 3]; |
| var vNumEmpty = <num>[]; |
| var vInt = <int>[1, 2, 3]; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer vObject @4 |
| reference: <testLibraryFragment>::@topLevelVariable::vObject |
| element: <testLibrary>::@topLevelVariable::vObject |
| getter2: <testLibraryFragment>::@getter::vObject |
| setter2: <testLibraryFragment>::@setter::vObject |
| hasInitializer vNum @37 |
| reference: <testLibraryFragment>::@topLevelVariable::vNum |
| element: <testLibrary>::@topLevelVariable::vNum |
| getter2: <testLibraryFragment>::@getter::vNum |
| setter2: <testLibraryFragment>::@setter::vNum |
| hasInitializer vNumEmpty @64 |
| reference: <testLibraryFragment>::@topLevelVariable::vNumEmpty |
| element: <testLibrary>::@topLevelVariable::vNumEmpty |
| getter2: <testLibraryFragment>::@getter::vNumEmpty |
| setter2: <testLibraryFragment>::@setter::vNumEmpty |
| hasInitializer vInt @89 |
| reference: <testLibraryFragment>::@topLevelVariable::vInt |
| element: <testLibrary>::@topLevelVariable::vInt |
| getter2: <testLibraryFragment>::@getter::vInt |
| setter2: <testLibraryFragment>::@setter::vInt |
| getters |
| synthetic get vObject |
| reference: <testLibraryFragment>::@getter::vObject |
| element: <testLibraryFragment>::@getter::vObject#element |
| synthetic get vNum |
| reference: <testLibraryFragment>::@getter::vNum |
| element: <testLibraryFragment>::@getter::vNum#element |
| synthetic get vNumEmpty |
| reference: <testLibraryFragment>::@getter::vNumEmpty |
| element: <testLibraryFragment>::@getter::vNumEmpty#element |
| synthetic get vInt |
| reference: <testLibraryFragment>::@getter::vInt |
| element: <testLibraryFragment>::@getter::vInt#element |
| setters |
| synthetic set vObject |
| reference: <testLibraryFragment>::@setter::vObject |
| element: <testLibraryFragment>::@setter::vObject#element |
| formalParameters |
| _vObject |
| element: <testLibraryFragment>::@setter::vObject::@parameter::_vObject#element |
| synthetic set vNum |
| reference: <testLibraryFragment>::@setter::vNum |
| element: <testLibraryFragment>::@setter::vNum#element |
| formalParameters |
| _vNum |
| element: <testLibraryFragment>::@setter::vNum::@parameter::_vNum#element |
| synthetic set vNumEmpty |
| reference: <testLibraryFragment>::@setter::vNumEmpty |
| element: <testLibraryFragment>::@setter::vNumEmpty#element |
| formalParameters |
| _vNumEmpty |
| element: <testLibraryFragment>::@setter::vNumEmpty::@parameter::_vNumEmpty#element |
| synthetic set vInt |
| reference: <testLibraryFragment>::@setter::vInt |
| element: <testLibraryFragment>::@setter::vInt#element |
| formalParameters |
| _vInt |
| element: <testLibraryFragment>::@setter::vInt::@parameter::_vInt#element |
| topLevelVariables |
| hasInitializer vObject |
| reference: <testLibrary>::@topLevelVariable::vObject |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vObject |
| type: List<Object> |
| getter: <testLibraryFragment>::@getter::vObject#element |
| setter: <testLibraryFragment>::@setter::vObject#element |
| hasInitializer vNum |
| reference: <testLibrary>::@topLevelVariable::vNum |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vNum |
| type: List<num> |
| getter: <testLibraryFragment>::@getter::vNum#element |
| setter: <testLibraryFragment>::@setter::vNum#element |
| hasInitializer vNumEmpty |
| reference: <testLibrary>::@topLevelVariable::vNumEmpty |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vNumEmpty |
| type: List<num> |
| getter: <testLibraryFragment>::@getter::vNumEmpty#element |
| setter: <testLibraryFragment>::@setter::vNumEmpty#element |
| hasInitializer vInt |
| reference: <testLibrary>::@topLevelVariable::vInt |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vInt |
| type: List<int> |
| getter: <testLibraryFragment>::@getter::vInt#element |
| setter: <testLibraryFragment>::@setter::vInt#element |
| getters |
| synthetic static get vObject |
| firstFragment: <testLibraryFragment>::@getter::vObject |
| returnType: List<Object> |
| synthetic static get vNum |
| firstFragment: <testLibraryFragment>::@getter::vNum |
| returnType: List<num> |
| synthetic static get vNumEmpty |
| firstFragment: <testLibraryFragment>::@getter::vNumEmpty |
| returnType: List<num> |
| synthetic static get vInt |
| firstFragment: <testLibraryFragment>::@getter::vInt |
| returnType: List<int> |
| setters |
| synthetic static set vObject |
| firstFragment: <testLibraryFragment>::@setter::vObject |
| formalParameters |
| requiredPositional _vObject |
| type: List<Object> |
| returnType: void |
| synthetic static set vNum |
| firstFragment: <testLibraryFragment>::@setter::vNum |
| formalParameters |
| requiredPositional _vNum |
| type: List<num> |
| returnType: void |
| synthetic static set vNumEmpty |
| firstFragment: <testLibraryFragment>::@setter::vNumEmpty |
| formalParameters |
| requiredPositional _vNumEmpty |
| type: List<num> |
| returnType: void |
| synthetic static set vInt |
| firstFragment: <testLibraryFragment>::@setter::vInt |
| formalParameters |
| requiredPositional _vInt |
| type: List<int> |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_literal_list_untyped() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var vInt = [1, 2, 3]; |
| var vNum = [1, 2.0]; |
| var vObject = [1, 2.0, '333']; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer vInt @4 |
| reference: <testLibraryFragment>::@topLevelVariable::vInt |
| element: <testLibrary>::@topLevelVariable::vInt |
| getter2: <testLibraryFragment>::@getter::vInt |
| setter2: <testLibraryFragment>::@setter::vInt |
| hasInitializer vNum @26 |
| reference: <testLibraryFragment>::@topLevelVariable::vNum |
| element: <testLibrary>::@topLevelVariable::vNum |
| getter2: <testLibraryFragment>::@getter::vNum |
| setter2: <testLibraryFragment>::@setter::vNum |
| hasInitializer vObject @47 |
| reference: <testLibraryFragment>::@topLevelVariable::vObject |
| element: <testLibrary>::@topLevelVariable::vObject |
| getter2: <testLibraryFragment>::@getter::vObject |
| setter2: <testLibraryFragment>::@setter::vObject |
| getters |
| synthetic get vInt |
| reference: <testLibraryFragment>::@getter::vInt |
| element: <testLibraryFragment>::@getter::vInt#element |
| synthetic get vNum |
| reference: <testLibraryFragment>::@getter::vNum |
| element: <testLibraryFragment>::@getter::vNum#element |
| synthetic get vObject |
| reference: <testLibraryFragment>::@getter::vObject |
| element: <testLibraryFragment>::@getter::vObject#element |
| setters |
| synthetic set vInt |
| reference: <testLibraryFragment>::@setter::vInt |
| element: <testLibraryFragment>::@setter::vInt#element |
| formalParameters |
| _vInt |
| element: <testLibraryFragment>::@setter::vInt::@parameter::_vInt#element |
| synthetic set vNum |
| reference: <testLibraryFragment>::@setter::vNum |
| element: <testLibraryFragment>::@setter::vNum#element |
| formalParameters |
| _vNum |
| element: <testLibraryFragment>::@setter::vNum::@parameter::_vNum#element |
| synthetic set vObject |
| reference: <testLibraryFragment>::@setter::vObject |
| element: <testLibraryFragment>::@setter::vObject#element |
| formalParameters |
| _vObject |
| element: <testLibraryFragment>::@setter::vObject::@parameter::_vObject#element |
| topLevelVariables |
| hasInitializer vInt |
| reference: <testLibrary>::@topLevelVariable::vInt |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vInt |
| type: List<int> |
| getter: <testLibraryFragment>::@getter::vInt#element |
| setter: <testLibraryFragment>::@setter::vInt#element |
| hasInitializer vNum |
| reference: <testLibrary>::@topLevelVariable::vNum |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vNum |
| type: List<num> |
| getter: <testLibraryFragment>::@getter::vNum#element |
| setter: <testLibraryFragment>::@setter::vNum#element |
| hasInitializer vObject |
| reference: <testLibrary>::@topLevelVariable::vObject |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vObject |
| type: List<Object> |
| getter: <testLibraryFragment>::@getter::vObject#element |
| setter: <testLibraryFragment>::@setter::vObject#element |
| getters |
| synthetic static get vInt |
| firstFragment: <testLibraryFragment>::@getter::vInt |
| returnType: List<int> |
| synthetic static get vNum |
| firstFragment: <testLibraryFragment>::@getter::vNum |
| returnType: List<num> |
| synthetic static get vObject |
| firstFragment: <testLibraryFragment>::@getter::vObject |
| returnType: List<Object> |
| setters |
| synthetic static set vInt |
| firstFragment: <testLibraryFragment>::@setter::vInt |
| formalParameters |
| requiredPositional _vInt |
| type: List<int> |
| returnType: void |
| synthetic static set vNum |
| firstFragment: <testLibraryFragment>::@setter::vNum |
| formalParameters |
| requiredPositional _vNum |
| type: List<num> |
| returnType: void |
| synthetic static set vObject |
| firstFragment: <testLibraryFragment>::@setter::vObject |
| formalParameters |
| requiredPositional _vObject |
| type: List<Object> |
| returnType: void |
| '''); |
| } |
| |
| @skippedTest |
| test_initializer_literal_list_untyped_empty() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var vNonConst = []; |
| var vConst = const []; |
| '''); |
| checkElementText(library, r''' |
| List<dynamic> vNonConst; |
| List<Null> vConst; |
| '''); |
| } |
| |
| test_initializer_literal_map_typed() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var vObjectObject = <Object, Object>{1: 'a'}; |
| var vComparableObject = <Comparable<int>, Object>{1: 'a'}; |
| var vNumString = <num, String>{1: 'a'}; |
| var vNumStringEmpty = <num, String>{}; |
| var vIntString = <int, String>{}; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer vObjectObject @4 |
| reference: <testLibraryFragment>::@topLevelVariable::vObjectObject |
| element: <testLibrary>::@topLevelVariable::vObjectObject |
| getter2: <testLibraryFragment>::@getter::vObjectObject |
| setter2: <testLibraryFragment>::@setter::vObjectObject |
| hasInitializer vComparableObject @50 |
| reference: <testLibraryFragment>::@topLevelVariable::vComparableObject |
| element: <testLibrary>::@topLevelVariable::vComparableObject |
| getter2: <testLibraryFragment>::@getter::vComparableObject |
| setter2: <testLibraryFragment>::@setter::vComparableObject |
| hasInitializer vNumString @109 |
| reference: <testLibraryFragment>::@topLevelVariable::vNumString |
| element: <testLibrary>::@topLevelVariable::vNumString |
| getter2: <testLibraryFragment>::@getter::vNumString |
| setter2: <testLibraryFragment>::@setter::vNumString |
| hasInitializer vNumStringEmpty @149 |
| reference: <testLibraryFragment>::@topLevelVariable::vNumStringEmpty |
| element: <testLibrary>::@topLevelVariable::vNumStringEmpty |
| getter2: <testLibraryFragment>::@getter::vNumStringEmpty |
| setter2: <testLibraryFragment>::@setter::vNumStringEmpty |
| hasInitializer vIntString @188 |
| reference: <testLibraryFragment>::@topLevelVariable::vIntString |
| element: <testLibrary>::@topLevelVariable::vIntString |
| getter2: <testLibraryFragment>::@getter::vIntString |
| setter2: <testLibraryFragment>::@setter::vIntString |
| getters |
| synthetic get vObjectObject |
| reference: <testLibraryFragment>::@getter::vObjectObject |
| element: <testLibraryFragment>::@getter::vObjectObject#element |
| synthetic get vComparableObject |
| reference: <testLibraryFragment>::@getter::vComparableObject |
| element: <testLibraryFragment>::@getter::vComparableObject#element |
| synthetic get vNumString |
| reference: <testLibraryFragment>::@getter::vNumString |
| element: <testLibraryFragment>::@getter::vNumString#element |
| synthetic get vNumStringEmpty |
| reference: <testLibraryFragment>::@getter::vNumStringEmpty |
| element: <testLibraryFragment>::@getter::vNumStringEmpty#element |
| synthetic get vIntString |
| reference: <testLibraryFragment>::@getter::vIntString |
| element: <testLibraryFragment>::@getter::vIntString#element |
| setters |
| synthetic set vObjectObject |
| reference: <testLibraryFragment>::@setter::vObjectObject |
| element: <testLibraryFragment>::@setter::vObjectObject#element |
| formalParameters |
| _vObjectObject |
| element: <testLibraryFragment>::@setter::vObjectObject::@parameter::_vObjectObject#element |
| synthetic set vComparableObject |
| reference: <testLibraryFragment>::@setter::vComparableObject |
| element: <testLibraryFragment>::@setter::vComparableObject#element |
| formalParameters |
| _vComparableObject |
| element: <testLibraryFragment>::@setter::vComparableObject::@parameter::_vComparableObject#element |
| synthetic set vNumString |
| reference: <testLibraryFragment>::@setter::vNumString |
| element: <testLibraryFragment>::@setter::vNumString#element |
| formalParameters |
| _vNumString |
| element: <testLibraryFragment>::@setter::vNumString::@parameter::_vNumString#element |
| synthetic set vNumStringEmpty |
| reference: <testLibraryFragment>::@setter::vNumStringEmpty |
| element: <testLibraryFragment>::@setter::vNumStringEmpty#element |
| formalParameters |
| _vNumStringEmpty |
| element: <testLibraryFragment>::@setter::vNumStringEmpty::@parameter::_vNumStringEmpty#element |
| synthetic set vIntString |
| reference: <testLibraryFragment>::@setter::vIntString |
| element: <testLibraryFragment>::@setter::vIntString#element |
| formalParameters |
| _vIntString |
| element: <testLibraryFragment>::@setter::vIntString::@parameter::_vIntString#element |
| topLevelVariables |
| hasInitializer vObjectObject |
| reference: <testLibrary>::@topLevelVariable::vObjectObject |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vObjectObject |
| type: Map<Object, Object> |
| getter: <testLibraryFragment>::@getter::vObjectObject#element |
| setter: <testLibraryFragment>::@setter::vObjectObject#element |
| hasInitializer vComparableObject |
| reference: <testLibrary>::@topLevelVariable::vComparableObject |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vComparableObject |
| type: Map<Comparable<int>, Object> |
| getter: <testLibraryFragment>::@getter::vComparableObject#element |
| setter: <testLibraryFragment>::@setter::vComparableObject#element |
| hasInitializer vNumString |
| reference: <testLibrary>::@topLevelVariable::vNumString |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vNumString |
| type: Map<num, String> |
| getter: <testLibraryFragment>::@getter::vNumString#element |
| setter: <testLibraryFragment>::@setter::vNumString#element |
| hasInitializer vNumStringEmpty |
| reference: <testLibrary>::@topLevelVariable::vNumStringEmpty |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vNumStringEmpty |
| type: Map<num, String> |
| getter: <testLibraryFragment>::@getter::vNumStringEmpty#element |
| setter: <testLibraryFragment>::@setter::vNumStringEmpty#element |
| hasInitializer vIntString |
| reference: <testLibrary>::@topLevelVariable::vIntString |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vIntString |
| type: Map<int, String> |
| getter: <testLibraryFragment>::@getter::vIntString#element |
| setter: <testLibraryFragment>::@setter::vIntString#element |
| getters |
| synthetic static get vObjectObject |
| firstFragment: <testLibraryFragment>::@getter::vObjectObject |
| returnType: Map<Object, Object> |
| synthetic static get vComparableObject |
| firstFragment: <testLibraryFragment>::@getter::vComparableObject |
| returnType: Map<Comparable<int>, Object> |
| synthetic static get vNumString |
| firstFragment: <testLibraryFragment>::@getter::vNumString |
| returnType: Map<num, String> |
| synthetic static get vNumStringEmpty |
| firstFragment: <testLibraryFragment>::@getter::vNumStringEmpty |
| returnType: Map<num, String> |
| synthetic static get vIntString |
| firstFragment: <testLibraryFragment>::@getter::vIntString |
| returnType: Map<int, String> |
| setters |
| synthetic static set vObjectObject |
| firstFragment: <testLibraryFragment>::@setter::vObjectObject |
| formalParameters |
| requiredPositional _vObjectObject |
| type: Map<Object, Object> |
| returnType: void |
| synthetic static set vComparableObject |
| firstFragment: <testLibraryFragment>::@setter::vComparableObject |
| formalParameters |
| requiredPositional _vComparableObject |
| type: Map<Comparable<int>, Object> |
| returnType: void |
| synthetic static set vNumString |
| firstFragment: <testLibraryFragment>::@setter::vNumString |
| formalParameters |
| requiredPositional _vNumString |
| type: Map<num, String> |
| returnType: void |
| synthetic static set vNumStringEmpty |
| firstFragment: <testLibraryFragment>::@setter::vNumStringEmpty |
| formalParameters |
| requiredPositional _vNumStringEmpty |
| type: Map<num, String> |
| returnType: void |
| synthetic static set vIntString |
| firstFragment: <testLibraryFragment>::@setter::vIntString |
| formalParameters |
| requiredPositional _vIntString |
| type: Map<int, String> |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_literal_map_untyped() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var vIntString = {1: 'a', 2: 'b'}; |
| var vNumString = {1: 'a', 2.0: 'b'}; |
| var vIntObject = {1: 'a', 2: 3.0}; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer vIntString @4 |
| reference: <testLibraryFragment>::@topLevelVariable::vIntString |
| element: <testLibrary>::@topLevelVariable::vIntString |
| getter2: <testLibraryFragment>::@getter::vIntString |
| setter2: <testLibraryFragment>::@setter::vIntString |
| hasInitializer vNumString @39 |
| reference: <testLibraryFragment>::@topLevelVariable::vNumString |
| element: <testLibrary>::@topLevelVariable::vNumString |
| getter2: <testLibraryFragment>::@getter::vNumString |
| setter2: <testLibraryFragment>::@setter::vNumString |
| hasInitializer vIntObject @76 |
| reference: <testLibraryFragment>::@topLevelVariable::vIntObject |
| element: <testLibrary>::@topLevelVariable::vIntObject |
| getter2: <testLibraryFragment>::@getter::vIntObject |
| setter2: <testLibraryFragment>::@setter::vIntObject |
| getters |
| synthetic get vIntString |
| reference: <testLibraryFragment>::@getter::vIntString |
| element: <testLibraryFragment>::@getter::vIntString#element |
| synthetic get vNumString |
| reference: <testLibraryFragment>::@getter::vNumString |
| element: <testLibraryFragment>::@getter::vNumString#element |
| synthetic get vIntObject |
| reference: <testLibraryFragment>::@getter::vIntObject |
| element: <testLibraryFragment>::@getter::vIntObject#element |
| setters |
| synthetic set vIntString |
| reference: <testLibraryFragment>::@setter::vIntString |
| element: <testLibraryFragment>::@setter::vIntString#element |
| formalParameters |
| _vIntString |
| element: <testLibraryFragment>::@setter::vIntString::@parameter::_vIntString#element |
| synthetic set vNumString |
| reference: <testLibraryFragment>::@setter::vNumString |
| element: <testLibraryFragment>::@setter::vNumString#element |
| formalParameters |
| _vNumString |
| element: <testLibraryFragment>::@setter::vNumString::@parameter::_vNumString#element |
| synthetic set vIntObject |
| reference: <testLibraryFragment>::@setter::vIntObject |
| element: <testLibraryFragment>::@setter::vIntObject#element |
| formalParameters |
| _vIntObject |
| element: <testLibraryFragment>::@setter::vIntObject::@parameter::_vIntObject#element |
| topLevelVariables |
| hasInitializer vIntString |
| reference: <testLibrary>::@topLevelVariable::vIntString |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vIntString |
| type: Map<int, String> |
| getter: <testLibraryFragment>::@getter::vIntString#element |
| setter: <testLibraryFragment>::@setter::vIntString#element |
| hasInitializer vNumString |
| reference: <testLibrary>::@topLevelVariable::vNumString |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vNumString |
| type: Map<num, String> |
| getter: <testLibraryFragment>::@getter::vNumString#element |
| setter: <testLibraryFragment>::@setter::vNumString#element |
| hasInitializer vIntObject |
| reference: <testLibrary>::@topLevelVariable::vIntObject |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vIntObject |
| type: Map<int, Object> |
| getter: <testLibraryFragment>::@getter::vIntObject#element |
| setter: <testLibraryFragment>::@setter::vIntObject#element |
| getters |
| synthetic static get vIntString |
| firstFragment: <testLibraryFragment>::@getter::vIntString |
| returnType: Map<int, String> |
| synthetic static get vNumString |
| firstFragment: <testLibraryFragment>::@getter::vNumString |
| returnType: Map<num, String> |
| synthetic static get vIntObject |
| firstFragment: <testLibraryFragment>::@getter::vIntObject |
| returnType: Map<int, Object> |
| setters |
| synthetic static set vIntString |
| firstFragment: <testLibraryFragment>::@setter::vIntString |
| formalParameters |
| requiredPositional _vIntString |
| type: Map<int, String> |
| returnType: void |
| synthetic static set vNumString |
| firstFragment: <testLibraryFragment>::@setter::vNumString |
| formalParameters |
| requiredPositional _vNumString |
| type: Map<num, String> |
| returnType: void |
| synthetic static set vIntObject |
| firstFragment: <testLibraryFragment>::@setter::vIntObject |
| formalParameters |
| requiredPositional _vIntObject |
| type: Map<int, Object> |
| returnType: void |
| '''); |
| } |
| |
| @skippedTest |
| test_initializer_literal_map_untyped_empty() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var vNonConst = {}; |
| var vConst = const {}; |
| '''); |
| checkElementText(library, r''' |
| Map<dynamic, dynamic> vNonConst; |
| Map<Null, Null> vConst; |
| '''); |
| } |
| |
| test_initializer_logicalBool() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var a = true; |
| var b = true; |
| var vEq = 1 == 2; |
| var vAnd = a && b; |
| var vOr = a || b; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer a @4 |
| reference: <testLibraryFragment>::@topLevelVariable::a |
| element: <testLibrary>::@topLevelVariable::a |
| getter2: <testLibraryFragment>::@getter::a |
| setter2: <testLibraryFragment>::@setter::a |
| hasInitializer b @18 |
| reference: <testLibraryFragment>::@topLevelVariable::b |
| element: <testLibrary>::@topLevelVariable::b |
| getter2: <testLibraryFragment>::@getter::b |
| setter2: <testLibraryFragment>::@setter::b |
| hasInitializer vEq @32 |
| reference: <testLibraryFragment>::@topLevelVariable::vEq |
| element: <testLibrary>::@topLevelVariable::vEq |
| getter2: <testLibraryFragment>::@getter::vEq |
| setter2: <testLibraryFragment>::@setter::vEq |
| hasInitializer vAnd @50 |
| reference: <testLibraryFragment>::@topLevelVariable::vAnd |
| element: <testLibrary>::@topLevelVariable::vAnd |
| getter2: <testLibraryFragment>::@getter::vAnd |
| setter2: <testLibraryFragment>::@setter::vAnd |
| hasInitializer vOr @69 |
| reference: <testLibraryFragment>::@topLevelVariable::vOr |
| element: <testLibrary>::@topLevelVariable::vOr |
| getter2: <testLibraryFragment>::@getter::vOr |
| setter2: <testLibraryFragment>::@setter::vOr |
| getters |
| synthetic get a |
| reference: <testLibraryFragment>::@getter::a |
| element: <testLibraryFragment>::@getter::a#element |
| synthetic get b |
| reference: <testLibraryFragment>::@getter::b |
| element: <testLibraryFragment>::@getter::b#element |
| synthetic get vEq |
| reference: <testLibraryFragment>::@getter::vEq |
| element: <testLibraryFragment>::@getter::vEq#element |
| synthetic get vAnd |
| reference: <testLibraryFragment>::@getter::vAnd |
| element: <testLibraryFragment>::@getter::vAnd#element |
| synthetic get vOr |
| reference: <testLibraryFragment>::@getter::vOr |
| element: <testLibraryFragment>::@getter::vOr#element |
| setters |
| synthetic set a |
| reference: <testLibraryFragment>::@setter::a |
| element: <testLibraryFragment>::@setter::a#element |
| formalParameters |
| _a |
| element: <testLibraryFragment>::@setter::a::@parameter::_a#element |
| synthetic set b |
| reference: <testLibraryFragment>::@setter::b |
| element: <testLibraryFragment>::@setter::b#element |
| formalParameters |
| _b |
| element: <testLibraryFragment>::@setter::b::@parameter::_b#element |
| synthetic set vEq |
| reference: <testLibraryFragment>::@setter::vEq |
| element: <testLibraryFragment>::@setter::vEq#element |
| formalParameters |
| _vEq |
| element: <testLibraryFragment>::@setter::vEq::@parameter::_vEq#element |
| synthetic set vAnd |
| reference: <testLibraryFragment>::@setter::vAnd |
| element: <testLibraryFragment>::@setter::vAnd#element |
| formalParameters |
| _vAnd |
| element: <testLibraryFragment>::@setter::vAnd::@parameter::_vAnd#element |
| synthetic set vOr |
| reference: <testLibraryFragment>::@setter::vOr |
| element: <testLibraryFragment>::@setter::vOr#element |
| formalParameters |
| _vOr |
| element: <testLibraryFragment>::@setter::vOr::@parameter::_vOr#element |
| topLevelVariables |
| hasInitializer a |
| reference: <testLibrary>::@topLevelVariable::a |
| firstFragment: <testLibraryFragment>::@topLevelVariable::a |
| type: bool |
| getter: <testLibraryFragment>::@getter::a#element |
| setter: <testLibraryFragment>::@setter::a#element |
| hasInitializer b |
| reference: <testLibrary>::@topLevelVariable::b |
| firstFragment: <testLibraryFragment>::@topLevelVariable::b |
| type: bool |
| getter: <testLibraryFragment>::@getter::b#element |
| setter: <testLibraryFragment>::@setter::b#element |
| hasInitializer vEq |
| reference: <testLibrary>::@topLevelVariable::vEq |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vEq |
| type: bool |
| getter: <testLibraryFragment>::@getter::vEq#element |
| setter: <testLibraryFragment>::@setter::vEq#element |
| hasInitializer vAnd |
| reference: <testLibrary>::@topLevelVariable::vAnd |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vAnd |
| type: bool |
| getter: <testLibraryFragment>::@getter::vAnd#element |
| setter: <testLibraryFragment>::@setter::vAnd#element |
| hasInitializer vOr |
| reference: <testLibrary>::@topLevelVariable::vOr |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vOr |
| type: bool |
| getter: <testLibraryFragment>::@getter::vOr#element |
| setter: <testLibraryFragment>::@setter::vOr#element |
| getters |
| synthetic static get a |
| firstFragment: <testLibraryFragment>::@getter::a |
| returnType: bool |
| synthetic static get b |
| firstFragment: <testLibraryFragment>::@getter::b |
| returnType: bool |
| synthetic static get vEq |
| firstFragment: <testLibraryFragment>::@getter::vEq |
| returnType: bool |
| synthetic static get vAnd |
| firstFragment: <testLibraryFragment>::@getter::vAnd |
| returnType: bool |
| synthetic static get vOr |
| firstFragment: <testLibraryFragment>::@getter::vOr |
| returnType: bool |
| setters |
| synthetic static set a |
| firstFragment: <testLibraryFragment>::@setter::a |
| formalParameters |
| requiredPositional _a |
| type: bool |
| returnType: void |
| synthetic static set b |
| firstFragment: <testLibraryFragment>::@setter::b |
| formalParameters |
| requiredPositional _b |
| type: bool |
| returnType: void |
| synthetic static set vEq |
| firstFragment: <testLibraryFragment>::@setter::vEq |
| formalParameters |
| requiredPositional _vEq |
| type: bool |
| returnType: void |
| synthetic static set vAnd |
| firstFragment: <testLibraryFragment>::@setter::vAnd |
| formalParameters |
| requiredPositional _vAnd |
| type: bool |
| returnType: void |
| synthetic static set vOr |
| firstFragment: <testLibraryFragment>::@setter::vOr |
| formalParameters |
| requiredPositional _vOr |
| type: bool |
| returnType: void |
| '''); |
| } |
| |
| @skippedTest |
| test_initializer_methodInvocation_hasTypeParameters() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A { |
| List<T> m<T>() => null; |
| } |
| var vWithTypeArgument = new A().m<int>(); |
| var vWithoutTypeArgument = new A().m(); |
| '''); |
| // TODO(scheglov): test for inference failure error |
| checkElementText(library, r''' |
| class A { |
| List<T> m<T>(int p) {} |
| } |
| List<int> vWithTypeArgument; |
| dynamic vWithoutTypeArgument; |
| '''); |
| } |
| |
| test_initializer_methodInvocation_noTypeParameters() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A { |
| String m(int p) => null; |
| } |
| var instanceOfA = new A(); |
| var v1 = instanceOfA.m(); |
| var v2 = new A().m(); |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| methods |
| m @19 |
| reference: <testLibraryFragment>::@class::A::@method::m |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| p @25 |
| element: <testLibraryFragment>::@class::A::@method::m::@parameter::p#element |
| topLevelVariables |
| hasInitializer instanceOfA @43 |
| reference: <testLibraryFragment>::@topLevelVariable::instanceOfA |
| element: <testLibrary>::@topLevelVariable::instanceOfA |
| getter2: <testLibraryFragment>::@getter::instanceOfA |
| setter2: <testLibraryFragment>::@setter::instanceOfA |
| hasInitializer v1 @70 |
| reference: <testLibraryFragment>::@topLevelVariable::v1 |
| element: <testLibrary>::@topLevelVariable::v1 |
| getter2: <testLibraryFragment>::@getter::v1 |
| setter2: <testLibraryFragment>::@setter::v1 |
| hasInitializer v2 @96 |
| reference: <testLibraryFragment>::@topLevelVariable::v2 |
| element: <testLibrary>::@topLevelVariable::v2 |
| getter2: <testLibraryFragment>::@getter::v2 |
| setter2: <testLibraryFragment>::@setter::v2 |
| getters |
| synthetic get instanceOfA |
| reference: <testLibraryFragment>::@getter::instanceOfA |
| element: <testLibraryFragment>::@getter::instanceOfA#element |
| synthetic get v1 |
| reference: <testLibraryFragment>::@getter::v1 |
| element: <testLibraryFragment>::@getter::v1#element |
| synthetic get v2 |
| reference: <testLibraryFragment>::@getter::v2 |
| element: <testLibraryFragment>::@getter::v2#element |
| setters |
| synthetic set instanceOfA |
| reference: <testLibraryFragment>::@setter::instanceOfA |
| element: <testLibraryFragment>::@setter::instanceOfA#element |
| formalParameters |
| _instanceOfA |
| element: <testLibraryFragment>::@setter::instanceOfA::@parameter::_instanceOfA#element |
| synthetic set v1 |
| reference: <testLibraryFragment>::@setter::v1 |
| element: <testLibraryFragment>::@setter::v1#element |
| formalParameters |
| _v1 |
| element: <testLibraryFragment>::@setter::v1::@parameter::_v1#element |
| synthetic set v2 |
| reference: <testLibraryFragment>::@setter::v2 |
| element: <testLibraryFragment>::@setter::v2#element |
| formalParameters |
| _v2 |
| element: <testLibraryFragment>::@setter::v2::@parameter::_v2#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: <testLibraryFragment>::@class::A::@method::m |
| formalParameters |
| requiredPositional p |
| type: int |
| returnType: String |
| topLevelVariables |
| hasInitializer instanceOfA |
| reference: <testLibrary>::@topLevelVariable::instanceOfA |
| firstFragment: <testLibraryFragment>::@topLevelVariable::instanceOfA |
| type: A |
| getter: <testLibraryFragment>::@getter::instanceOfA#element |
| setter: <testLibraryFragment>::@setter::instanceOfA#element |
| hasInitializer v1 |
| reference: <testLibrary>::@topLevelVariable::v1 |
| firstFragment: <testLibraryFragment>::@topLevelVariable::v1 |
| type: String |
| getter: <testLibraryFragment>::@getter::v1#element |
| setter: <testLibraryFragment>::@setter::v1#element |
| hasInitializer v2 |
| reference: <testLibrary>::@topLevelVariable::v2 |
| firstFragment: <testLibraryFragment>::@topLevelVariable::v2 |
| type: String |
| getter: <testLibraryFragment>::@getter::v2#element |
| setter: <testLibraryFragment>::@setter::v2#element |
| getters |
| synthetic static get instanceOfA |
| firstFragment: <testLibraryFragment>::@getter::instanceOfA |
| returnType: A |
| synthetic static get v1 |
| firstFragment: <testLibraryFragment>::@getter::v1 |
| returnType: String |
| synthetic static get v2 |
| firstFragment: <testLibraryFragment>::@getter::v2 |
| returnType: String |
| setters |
| synthetic static set instanceOfA |
| firstFragment: <testLibraryFragment>::@setter::instanceOfA |
| formalParameters |
| requiredPositional _instanceOfA |
| type: A |
| returnType: void |
| synthetic static set v1 |
| firstFragment: <testLibraryFragment>::@setter::v1 |
| formalParameters |
| requiredPositional _v1 |
| type: String |
| returnType: void |
| synthetic static set v2 |
| firstFragment: <testLibraryFragment>::@setter::v2 |
| formalParameters |
| requiredPositional _v2 |
| type: String |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_multiplicative() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var vModuloIntInt = 1 % 2; |
| var vModuloIntDouble = 1 % 2.0; |
| var vMultiplyIntInt = 1 * 2; |
| var vMultiplyIntDouble = 1 * 2.0; |
| var vMultiplyDoubleInt = 1.0 * 2; |
| var vMultiplyDoubleDouble = 1.0 * 2.0; |
| var vDivideIntInt = 1 / 2; |
| var vDivideIntDouble = 1 / 2.0; |
| var vDivideDoubleInt = 1.0 / 2; |
| var vDivideDoubleDouble = 1.0 / 2.0; |
| var vFloorDivide = 1 ~/ 2; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer vModuloIntInt @4 |
| reference: <testLibraryFragment>::@topLevelVariable::vModuloIntInt |
| element: <testLibrary>::@topLevelVariable::vModuloIntInt |
| getter2: <testLibraryFragment>::@getter::vModuloIntInt |
| setter2: <testLibraryFragment>::@setter::vModuloIntInt |
| hasInitializer vModuloIntDouble @31 |
| reference: <testLibraryFragment>::@topLevelVariable::vModuloIntDouble |
| element: <testLibrary>::@topLevelVariable::vModuloIntDouble |
| getter2: <testLibraryFragment>::@getter::vModuloIntDouble |
| setter2: <testLibraryFragment>::@setter::vModuloIntDouble |
| hasInitializer vMultiplyIntInt @63 |
| reference: <testLibraryFragment>::@topLevelVariable::vMultiplyIntInt |
| element: <testLibrary>::@topLevelVariable::vMultiplyIntInt |
| getter2: <testLibraryFragment>::@getter::vMultiplyIntInt |
| setter2: <testLibraryFragment>::@setter::vMultiplyIntInt |
| hasInitializer vMultiplyIntDouble @92 |
| reference: <testLibraryFragment>::@topLevelVariable::vMultiplyIntDouble |
| element: <testLibrary>::@topLevelVariable::vMultiplyIntDouble |
| getter2: <testLibraryFragment>::@getter::vMultiplyIntDouble |
| setter2: <testLibraryFragment>::@setter::vMultiplyIntDouble |
| hasInitializer vMultiplyDoubleInt @126 |
| reference: <testLibraryFragment>::@topLevelVariable::vMultiplyDoubleInt |
| element: <testLibrary>::@topLevelVariable::vMultiplyDoubleInt |
| getter2: <testLibraryFragment>::@getter::vMultiplyDoubleInt |
| setter2: <testLibraryFragment>::@setter::vMultiplyDoubleInt |
| hasInitializer vMultiplyDoubleDouble @160 |
| reference: <testLibraryFragment>::@topLevelVariable::vMultiplyDoubleDouble |
| element: <testLibrary>::@topLevelVariable::vMultiplyDoubleDouble |
| getter2: <testLibraryFragment>::@getter::vMultiplyDoubleDouble |
| setter2: <testLibraryFragment>::@setter::vMultiplyDoubleDouble |
| hasInitializer vDivideIntInt @199 |
| reference: <testLibraryFragment>::@topLevelVariable::vDivideIntInt |
| element: <testLibrary>::@topLevelVariable::vDivideIntInt |
| getter2: <testLibraryFragment>::@getter::vDivideIntInt |
| setter2: <testLibraryFragment>::@setter::vDivideIntInt |
| hasInitializer vDivideIntDouble @226 |
| reference: <testLibraryFragment>::@topLevelVariable::vDivideIntDouble |
| element: <testLibrary>::@topLevelVariable::vDivideIntDouble |
| getter2: <testLibraryFragment>::@getter::vDivideIntDouble |
| setter2: <testLibraryFragment>::@setter::vDivideIntDouble |
| hasInitializer vDivideDoubleInt @258 |
| reference: <testLibraryFragment>::@topLevelVariable::vDivideDoubleInt |
| element: <testLibrary>::@topLevelVariable::vDivideDoubleInt |
| getter2: <testLibraryFragment>::@getter::vDivideDoubleInt |
| setter2: <testLibraryFragment>::@setter::vDivideDoubleInt |
| hasInitializer vDivideDoubleDouble @290 |
| reference: <testLibraryFragment>::@topLevelVariable::vDivideDoubleDouble |
| element: <testLibrary>::@topLevelVariable::vDivideDoubleDouble |
| getter2: <testLibraryFragment>::@getter::vDivideDoubleDouble |
| setter2: <testLibraryFragment>::@setter::vDivideDoubleDouble |
| hasInitializer vFloorDivide @327 |
| reference: <testLibraryFragment>::@topLevelVariable::vFloorDivide |
| element: <testLibrary>::@topLevelVariable::vFloorDivide |
| getter2: <testLibraryFragment>::@getter::vFloorDivide |
| setter2: <testLibraryFragment>::@setter::vFloorDivide |
| getters |
| synthetic get vModuloIntInt |
| reference: <testLibraryFragment>::@getter::vModuloIntInt |
| element: <testLibraryFragment>::@getter::vModuloIntInt#element |
| synthetic get vModuloIntDouble |
| reference: <testLibraryFragment>::@getter::vModuloIntDouble |
| element: <testLibraryFragment>::@getter::vModuloIntDouble#element |
| synthetic get vMultiplyIntInt |
| reference: <testLibraryFragment>::@getter::vMultiplyIntInt |
| element: <testLibraryFragment>::@getter::vMultiplyIntInt#element |
| synthetic get vMultiplyIntDouble |
| reference: <testLibraryFragment>::@getter::vMultiplyIntDouble |
| element: <testLibraryFragment>::@getter::vMultiplyIntDouble#element |
| synthetic get vMultiplyDoubleInt |
| reference: <testLibraryFragment>::@getter::vMultiplyDoubleInt |
| element: <testLibraryFragment>::@getter::vMultiplyDoubleInt#element |
| synthetic get vMultiplyDoubleDouble |
| reference: <testLibraryFragment>::@getter::vMultiplyDoubleDouble |
| element: <testLibraryFragment>::@getter::vMultiplyDoubleDouble#element |
| synthetic get vDivideIntInt |
| reference: <testLibraryFragment>::@getter::vDivideIntInt |
| element: <testLibraryFragment>::@getter::vDivideIntInt#element |
| synthetic get vDivideIntDouble |
| reference: <testLibraryFragment>::@getter::vDivideIntDouble |
| element: <testLibraryFragment>::@getter::vDivideIntDouble#element |
| synthetic get vDivideDoubleInt |
| reference: <testLibraryFragment>::@getter::vDivideDoubleInt |
| element: <testLibraryFragment>::@getter::vDivideDoubleInt#element |
| synthetic get vDivideDoubleDouble |
| reference: <testLibraryFragment>::@getter::vDivideDoubleDouble |
| element: <testLibraryFragment>::@getter::vDivideDoubleDouble#element |
| synthetic get vFloorDivide |
| reference: <testLibraryFragment>::@getter::vFloorDivide |
| element: <testLibraryFragment>::@getter::vFloorDivide#element |
| setters |
| synthetic set vModuloIntInt |
| reference: <testLibraryFragment>::@setter::vModuloIntInt |
| element: <testLibraryFragment>::@setter::vModuloIntInt#element |
| formalParameters |
| _vModuloIntInt |
| element: <testLibraryFragment>::@setter::vModuloIntInt::@parameter::_vModuloIntInt#element |
| synthetic set vModuloIntDouble |
| reference: <testLibraryFragment>::@setter::vModuloIntDouble |
| element: <testLibraryFragment>::@setter::vModuloIntDouble#element |
| formalParameters |
| _vModuloIntDouble |
| element: <testLibraryFragment>::@setter::vModuloIntDouble::@parameter::_vModuloIntDouble#element |
| synthetic set vMultiplyIntInt |
| reference: <testLibraryFragment>::@setter::vMultiplyIntInt |
| element: <testLibraryFragment>::@setter::vMultiplyIntInt#element |
| formalParameters |
| _vMultiplyIntInt |
| element: <testLibraryFragment>::@setter::vMultiplyIntInt::@parameter::_vMultiplyIntInt#element |
| synthetic set vMultiplyIntDouble |
| reference: <testLibraryFragment>::@setter::vMultiplyIntDouble |
| element: <testLibraryFragment>::@setter::vMultiplyIntDouble#element |
| formalParameters |
| _vMultiplyIntDouble |
| element: <testLibraryFragment>::@setter::vMultiplyIntDouble::@parameter::_vMultiplyIntDouble#element |
| synthetic set vMultiplyDoubleInt |
| reference: <testLibraryFragment>::@setter::vMultiplyDoubleInt |
| element: <testLibraryFragment>::@setter::vMultiplyDoubleInt#element |
| formalParameters |
| _vMultiplyDoubleInt |
| element: <testLibraryFragment>::@setter::vMultiplyDoubleInt::@parameter::_vMultiplyDoubleInt#element |
| synthetic set vMultiplyDoubleDouble |
| reference: <testLibraryFragment>::@setter::vMultiplyDoubleDouble |
| element: <testLibraryFragment>::@setter::vMultiplyDoubleDouble#element |
| formalParameters |
| _vMultiplyDoubleDouble |
| element: <testLibraryFragment>::@setter::vMultiplyDoubleDouble::@parameter::_vMultiplyDoubleDouble#element |
| synthetic set vDivideIntInt |
| reference: <testLibraryFragment>::@setter::vDivideIntInt |
| element: <testLibraryFragment>::@setter::vDivideIntInt#element |
| formalParameters |
| _vDivideIntInt |
| element: <testLibraryFragment>::@setter::vDivideIntInt::@parameter::_vDivideIntInt#element |
| synthetic set vDivideIntDouble |
| reference: <testLibraryFragment>::@setter::vDivideIntDouble |
| element: <testLibraryFragment>::@setter::vDivideIntDouble#element |
| formalParameters |
| _vDivideIntDouble |
| element: <testLibraryFragment>::@setter::vDivideIntDouble::@parameter::_vDivideIntDouble#element |
| synthetic set vDivideDoubleInt |
| reference: <testLibraryFragment>::@setter::vDivideDoubleInt |
| element: <testLibraryFragment>::@setter::vDivideDoubleInt#element |
| formalParameters |
| _vDivideDoubleInt |
| element: <testLibraryFragment>::@setter::vDivideDoubleInt::@parameter::_vDivideDoubleInt#element |
| synthetic set vDivideDoubleDouble |
| reference: <testLibraryFragment>::@setter::vDivideDoubleDouble |
| element: <testLibraryFragment>::@setter::vDivideDoubleDouble#element |
| formalParameters |
| _vDivideDoubleDouble |
| element: <testLibraryFragment>::@setter::vDivideDoubleDouble::@parameter::_vDivideDoubleDouble#element |
| synthetic set vFloorDivide |
| reference: <testLibraryFragment>::@setter::vFloorDivide |
| element: <testLibraryFragment>::@setter::vFloorDivide#element |
| formalParameters |
| _vFloorDivide |
| element: <testLibraryFragment>::@setter::vFloorDivide::@parameter::_vFloorDivide#element |
| topLevelVariables |
| hasInitializer vModuloIntInt |
| reference: <testLibrary>::@topLevelVariable::vModuloIntInt |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vModuloIntInt |
| type: int |
| getter: <testLibraryFragment>::@getter::vModuloIntInt#element |
| setter: <testLibraryFragment>::@setter::vModuloIntInt#element |
| hasInitializer vModuloIntDouble |
| reference: <testLibrary>::@topLevelVariable::vModuloIntDouble |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vModuloIntDouble |
| type: double |
| getter: <testLibraryFragment>::@getter::vModuloIntDouble#element |
| setter: <testLibraryFragment>::@setter::vModuloIntDouble#element |
| hasInitializer vMultiplyIntInt |
| reference: <testLibrary>::@topLevelVariable::vMultiplyIntInt |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vMultiplyIntInt |
| type: int |
| getter: <testLibraryFragment>::@getter::vMultiplyIntInt#element |
| setter: <testLibraryFragment>::@setter::vMultiplyIntInt#element |
| hasInitializer vMultiplyIntDouble |
| reference: <testLibrary>::@topLevelVariable::vMultiplyIntDouble |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vMultiplyIntDouble |
| type: double |
| getter: <testLibraryFragment>::@getter::vMultiplyIntDouble#element |
| setter: <testLibraryFragment>::@setter::vMultiplyIntDouble#element |
| hasInitializer vMultiplyDoubleInt |
| reference: <testLibrary>::@topLevelVariable::vMultiplyDoubleInt |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vMultiplyDoubleInt |
| type: double |
| getter: <testLibraryFragment>::@getter::vMultiplyDoubleInt#element |
| setter: <testLibraryFragment>::@setter::vMultiplyDoubleInt#element |
| hasInitializer vMultiplyDoubleDouble |
| reference: <testLibrary>::@topLevelVariable::vMultiplyDoubleDouble |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vMultiplyDoubleDouble |
| type: double |
| getter: <testLibraryFragment>::@getter::vMultiplyDoubleDouble#element |
| setter: <testLibraryFragment>::@setter::vMultiplyDoubleDouble#element |
| hasInitializer vDivideIntInt |
| reference: <testLibrary>::@topLevelVariable::vDivideIntInt |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vDivideIntInt |
| type: double |
| getter: <testLibraryFragment>::@getter::vDivideIntInt#element |
| setter: <testLibraryFragment>::@setter::vDivideIntInt#element |
| hasInitializer vDivideIntDouble |
| reference: <testLibrary>::@topLevelVariable::vDivideIntDouble |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vDivideIntDouble |
| type: double |
| getter: <testLibraryFragment>::@getter::vDivideIntDouble#element |
| setter: <testLibraryFragment>::@setter::vDivideIntDouble#element |
| hasInitializer vDivideDoubleInt |
| reference: <testLibrary>::@topLevelVariable::vDivideDoubleInt |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vDivideDoubleInt |
| type: double |
| getter: <testLibraryFragment>::@getter::vDivideDoubleInt#element |
| setter: <testLibraryFragment>::@setter::vDivideDoubleInt#element |
| hasInitializer vDivideDoubleDouble |
| reference: <testLibrary>::@topLevelVariable::vDivideDoubleDouble |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vDivideDoubleDouble |
| type: double |
| getter: <testLibraryFragment>::@getter::vDivideDoubleDouble#element |
| setter: <testLibraryFragment>::@setter::vDivideDoubleDouble#element |
| hasInitializer vFloorDivide |
| reference: <testLibrary>::@topLevelVariable::vFloorDivide |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vFloorDivide |
| type: int |
| getter: <testLibraryFragment>::@getter::vFloorDivide#element |
| setter: <testLibraryFragment>::@setter::vFloorDivide#element |
| getters |
| synthetic static get vModuloIntInt |
| firstFragment: <testLibraryFragment>::@getter::vModuloIntInt |
| returnType: int |
| synthetic static get vModuloIntDouble |
| firstFragment: <testLibraryFragment>::@getter::vModuloIntDouble |
| returnType: double |
| synthetic static get vMultiplyIntInt |
| firstFragment: <testLibraryFragment>::@getter::vMultiplyIntInt |
| returnType: int |
| synthetic static get vMultiplyIntDouble |
| firstFragment: <testLibraryFragment>::@getter::vMultiplyIntDouble |
| returnType: double |
| synthetic static get vMultiplyDoubleInt |
| firstFragment: <testLibraryFragment>::@getter::vMultiplyDoubleInt |
| returnType: double |
| synthetic static get vMultiplyDoubleDouble |
| firstFragment: <testLibraryFragment>::@getter::vMultiplyDoubleDouble |
| returnType: double |
| synthetic static get vDivideIntInt |
| firstFragment: <testLibraryFragment>::@getter::vDivideIntInt |
| returnType: double |
| synthetic static get vDivideIntDouble |
| firstFragment: <testLibraryFragment>::@getter::vDivideIntDouble |
| returnType: double |
| synthetic static get vDivideDoubleInt |
| firstFragment: <testLibraryFragment>::@getter::vDivideDoubleInt |
| returnType: double |
| synthetic static get vDivideDoubleDouble |
| firstFragment: <testLibraryFragment>::@getter::vDivideDoubleDouble |
| returnType: double |
| synthetic static get vFloorDivide |
| firstFragment: <testLibraryFragment>::@getter::vFloorDivide |
| returnType: int |
| setters |
| synthetic static set vModuloIntInt |
| firstFragment: <testLibraryFragment>::@setter::vModuloIntInt |
| formalParameters |
| requiredPositional _vModuloIntInt |
| type: int |
| returnType: void |
| synthetic static set vModuloIntDouble |
| firstFragment: <testLibraryFragment>::@setter::vModuloIntDouble |
| formalParameters |
| requiredPositional _vModuloIntDouble |
| type: double |
| returnType: void |
| synthetic static set vMultiplyIntInt |
| firstFragment: <testLibraryFragment>::@setter::vMultiplyIntInt |
| formalParameters |
| requiredPositional _vMultiplyIntInt |
| type: int |
| returnType: void |
| synthetic static set vMultiplyIntDouble |
| firstFragment: <testLibraryFragment>::@setter::vMultiplyIntDouble |
| formalParameters |
| requiredPositional _vMultiplyIntDouble |
| type: double |
| returnType: void |
| synthetic static set vMultiplyDoubleInt |
| firstFragment: <testLibraryFragment>::@setter::vMultiplyDoubleInt |
| formalParameters |
| requiredPositional _vMultiplyDoubleInt |
| type: double |
| returnType: void |
| synthetic static set vMultiplyDoubleDouble |
| firstFragment: <testLibraryFragment>::@setter::vMultiplyDoubleDouble |
| formalParameters |
| requiredPositional _vMultiplyDoubleDouble |
| type: double |
| returnType: void |
| synthetic static set vDivideIntInt |
| firstFragment: <testLibraryFragment>::@setter::vDivideIntInt |
| formalParameters |
| requiredPositional _vDivideIntInt |
| type: double |
| returnType: void |
| synthetic static set vDivideIntDouble |
| firstFragment: <testLibraryFragment>::@setter::vDivideIntDouble |
| formalParameters |
| requiredPositional _vDivideIntDouble |
| type: double |
| returnType: void |
| synthetic static set vDivideDoubleInt |
| firstFragment: <testLibraryFragment>::@setter::vDivideDoubleInt |
| formalParameters |
| requiredPositional _vDivideDoubleInt |
| type: double |
| returnType: void |
| synthetic static set vDivideDoubleDouble |
| firstFragment: <testLibraryFragment>::@setter::vDivideDoubleDouble |
| formalParameters |
| requiredPositional _vDivideDoubleDouble |
| type: double |
| returnType: void |
| synthetic static set vFloorDivide |
| firstFragment: <testLibraryFragment>::@setter::vFloorDivide |
| formalParameters |
| requiredPositional _vFloorDivide |
| type: int |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_onlyLeft() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var a = 1; |
| var vEq = a == ((a = 2) == 0); |
| var vNotEq = a != ((a = 2) == 0); |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer a @4 |
| reference: <testLibraryFragment>::@topLevelVariable::a |
| element: <testLibrary>::@topLevelVariable::a |
| getter2: <testLibraryFragment>::@getter::a |
| setter2: <testLibraryFragment>::@setter::a |
| hasInitializer vEq @15 |
| reference: <testLibraryFragment>::@topLevelVariable::vEq |
| element: <testLibrary>::@topLevelVariable::vEq |
| getter2: <testLibraryFragment>::@getter::vEq |
| setter2: <testLibraryFragment>::@setter::vEq |
| hasInitializer vNotEq @46 |
| reference: <testLibraryFragment>::@topLevelVariable::vNotEq |
| element: <testLibrary>::@topLevelVariable::vNotEq |
| getter2: <testLibraryFragment>::@getter::vNotEq |
| setter2: <testLibraryFragment>::@setter::vNotEq |
| getters |
| synthetic get a |
| reference: <testLibraryFragment>::@getter::a |
| element: <testLibraryFragment>::@getter::a#element |
| synthetic get vEq |
| reference: <testLibraryFragment>::@getter::vEq |
| element: <testLibraryFragment>::@getter::vEq#element |
| synthetic get vNotEq |
| reference: <testLibraryFragment>::@getter::vNotEq |
| element: <testLibraryFragment>::@getter::vNotEq#element |
| setters |
| synthetic set a |
| reference: <testLibraryFragment>::@setter::a |
| element: <testLibraryFragment>::@setter::a#element |
| formalParameters |
| _a |
| element: <testLibraryFragment>::@setter::a::@parameter::_a#element |
| synthetic set vEq |
| reference: <testLibraryFragment>::@setter::vEq |
| element: <testLibraryFragment>::@setter::vEq#element |
| formalParameters |
| _vEq |
| element: <testLibraryFragment>::@setter::vEq::@parameter::_vEq#element |
| synthetic set vNotEq |
| reference: <testLibraryFragment>::@setter::vNotEq |
| element: <testLibraryFragment>::@setter::vNotEq#element |
| formalParameters |
| _vNotEq |
| element: <testLibraryFragment>::@setter::vNotEq::@parameter::_vNotEq#element |
| topLevelVariables |
| hasInitializer a |
| reference: <testLibrary>::@topLevelVariable::a |
| firstFragment: <testLibraryFragment>::@topLevelVariable::a |
| type: int |
| getter: <testLibraryFragment>::@getter::a#element |
| setter: <testLibraryFragment>::@setter::a#element |
| hasInitializer vEq |
| reference: <testLibrary>::@topLevelVariable::vEq |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vEq |
| type: bool |
| getter: <testLibraryFragment>::@getter::vEq#element |
| setter: <testLibraryFragment>::@setter::vEq#element |
| hasInitializer vNotEq |
| reference: <testLibrary>::@topLevelVariable::vNotEq |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vNotEq |
| type: bool |
| getter: <testLibraryFragment>::@getter::vNotEq#element |
| setter: <testLibraryFragment>::@setter::vNotEq#element |
| getters |
| synthetic static get a |
| firstFragment: <testLibraryFragment>::@getter::a |
| returnType: int |
| synthetic static get vEq |
| firstFragment: <testLibraryFragment>::@getter::vEq |
| returnType: bool |
| synthetic static get vNotEq |
| firstFragment: <testLibraryFragment>::@getter::vNotEq |
| returnType: bool |
| setters |
| synthetic static set a |
| firstFragment: <testLibraryFragment>::@setter::a |
| formalParameters |
| requiredPositional _a |
| type: int |
| returnType: void |
| synthetic static set vEq |
| firstFragment: <testLibraryFragment>::@setter::vEq |
| formalParameters |
| requiredPositional _vEq |
| type: bool |
| returnType: void |
| synthetic static set vNotEq |
| firstFragment: <testLibraryFragment>::@setter::vNotEq |
| formalParameters |
| requiredPositional _vNotEq |
| type: bool |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_parenthesized() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var V = (42); |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer V @4 |
| reference: <testLibraryFragment>::@topLevelVariable::V |
| element: <testLibrary>::@topLevelVariable::V |
| getter2: <testLibraryFragment>::@getter::V |
| setter2: <testLibraryFragment>::@setter::V |
| getters |
| synthetic get V |
| reference: <testLibraryFragment>::@getter::V |
| element: <testLibraryFragment>::@getter::V#element |
| setters |
| synthetic set V |
| reference: <testLibraryFragment>::@setter::V |
| element: <testLibraryFragment>::@setter::V#element |
| formalParameters |
| _V |
| element: <testLibraryFragment>::@setter::V::@parameter::_V#element |
| topLevelVariables |
| hasInitializer V |
| reference: <testLibrary>::@topLevelVariable::V |
| firstFragment: <testLibraryFragment>::@topLevelVariable::V |
| type: int |
| getter: <testLibraryFragment>::@getter::V#element |
| setter: <testLibraryFragment>::@setter::V#element |
| getters |
| synthetic static get V |
| firstFragment: <testLibraryFragment>::@getter::V |
| returnType: int |
| setters |
| synthetic static set V |
| firstFragment: <testLibraryFragment>::@setter::V |
| formalParameters |
| requiredPositional _V |
| type: int |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_postfix() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var vInt = 1; |
| var vDouble = 2.0; |
| var vIncInt = vInt++; |
| var vDecInt = vInt--; |
| var vIncDouble = vDouble++; |
| var vDecDouble = vDouble--; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer vInt @4 |
| reference: <testLibraryFragment>::@topLevelVariable::vInt |
| element: <testLibrary>::@topLevelVariable::vInt |
| getter2: <testLibraryFragment>::@getter::vInt |
| setter2: <testLibraryFragment>::@setter::vInt |
| hasInitializer vDouble @18 |
| reference: <testLibraryFragment>::@topLevelVariable::vDouble |
| element: <testLibrary>::@topLevelVariable::vDouble |
| getter2: <testLibraryFragment>::@getter::vDouble |
| setter2: <testLibraryFragment>::@setter::vDouble |
| hasInitializer vIncInt @37 |
| reference: <testLibraryFragment>::@topLevelVariable::vIncInt |
| element: <testLibrary>::@topLevelVariable::vIncInt |
| getter2: <testLibraryFragment>::@getter::vIncInt |
| setter2: <testLibraryFragment>::@setter::vIncInt |
| hasInitializer vDecInt @59 |
| reference: <testLibraryFragment>::@topLevelVariable::vDecInt |
| element: <testLibrary>::@topLevelVariable::vDecInt |
| getter2: <testLibraryFragment>::@getter::vDecInt |
| setter2: <testLibraryFragment>::@setter::vDecInt |
| hasInitializer vIncDouble @81 |
| reference: <testLibraryFragment>::@topLevelVariable::vIncDouble |
| element: <testLibrary>::@topLevelVariable::vIncDouble |
| getter2: <testLibraryFragment>::@getter::vIncDouble |
| setter2: <testLibraryFragment>::@setter::vIncDouble |
| hasInitializer vDecDouble @109 |
| reference: <testLibraryFragment>::@topLevelVariable::vDecDouble |
| element: <testLibrary>::@topLevelVariable::vDecDouble |
| getter2: <testLibraryFragment>::@getter::vDecDouble |
| setter2: <testLibraryFragment>::@setter::vDecDouble |
| getters |
| synthetic get vInt |
| reference: <testLibraryFragment>::@getter::vInt |
| element: <testLibraryFragment>::@getter::vInt#element |
| synthetic get vDouble |
| reference: <testLibraryFragment>::@getter::vDouble |
| element: <testLibraryFragment>::@getter::vDouble#element |
| synthetic get vIncInt |
| reference: <testLibraryFragment>::@getter::vIncInt |
| element: <testLibraryFragment>::@getter::vIncInt#element |
| synthetic get vDecInt |
| reference: <testLibraryFragment>::@getter::vDecInt |
| element: <testLibraryFragment>::@getter::vDecInt#element |
| synthetic get vIncDouble |
| reference: <testLibraryFragment>::@getter::vIncDouble |
| element: <testLibraryFragment>::@getter::vIncDouble#element |
| synthetic get vDecDouble |
| reference: <testLibraryFragment>::@getter::vDecDouble |
| element: <testLibraryFragment>::@getter::vDecDouble#element |
| setters |
| synthetic set vInt |
| reference: <testLibraryFragment>::@setter::vInt |
| element: <testLibraryFragment>::@setter::vInt#element |
| formalParameters |
| _vInt |
| element: <testLibraryFragment>::@setter::vInt::@parameter::_vInt#element |
| synthetic set vDouble |
| reference: <testLibraryFragment>::@setter::vDouble |
| element: <testLibraryFragment>::@setter::vDouble#element |
| formalParameters |
| _vDouble |
| element: <testLibraryFragment>::@setter::vDouble::@parameter::_vDouble#element |
| synthetic set vIncInt |
| reference: <testLibraryFragment>::@setter::vIncInt |
| element: <testLibraryFragment>::@setter::vIncInt#element |
| formalParameters |
| _vIncInt |
| element: <testLibraryFragment>::@setter::vIncInt::@parameter::_vIncInt#element |
| synthetic set vDecInt |
| reference: <testLibraryFragment>::@setter::vDecInt |
| element: <testLibraryFragment>::@setter::vDecInt#element |
| formalParameters |
| _vDecInt |
| element: <testLibraryFragment>::@setter::vDecInt::@parameter::_vDecInt#element |
| synthetic set vIncDouble |
| reference: <testLibraryFragment>::@setter::vIncDouble |
| element: <testLibraryFragment>::@setter::vIncDouble#element |
| formalParameters |
| _vIncDouble |
| element: <testLibraryFragment>::@setter::vIncDouble::@parameter::_vIncDouble#element |
| synthetic set vDecDouble |
| reference: <testLibraryFragment>::@setter::vDecDouble |
| element: <testLibraryFragment>::@setter::vDecDouble#element |
| formalParameters |
| _vDecDouble |
| element: <testLibraryFragment>::@setter::vDecDouble::@parameter::_vDecDouble#element |
| topLevelVariables |
| hasInitializer vInt |
| reference: <testLibrary>::@topLevelVariable::vInt |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vInt |
| type: int |
| getter: <testLibraryFragment>::@getter::vInt#element |
| setter: <testLibraryFragment>::@setter::vInt#element |
| hasInitializer vDouble |
| reference: <testLibrary>::@topLevelVariable::vDouble |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vDouble |
| type: double |
| getter: <testLibraryFragment>::@getter::vDouble#element |
| setter: <testLibraryFragment>::@setter::vDouble#element |
| hasInitializer vIncInt |
| reference: <testLibrary>::@topLevelVariable::vIncInt |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vIncInt |
| type: int |
| getter: <testLibraryFragment>::@getter::vIncInt#element |
| setter: <testLibraryFragment>::@setter::vIncInt#element |
| hasInitializer vDecInt |
| reference: <testLibrary>::@topLevelVariable::vDecInt |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vDecInt |
| type: int |
| getter: <testLibraryFragment>::@getter::vDecInt#element |
| setter: <testLibraryFragment>::@setter::vDecInt#element |
| hasInitializer vIncDouble |
| reference: <testLibrary>::@topLevelVariable::vIncDouble |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vIncDouble |
| type: double |
| getter: <testLibraryFragment>::@getter::vIncDouble#element |
| setter: <testLibraryFragment>::@setter::vIncDouble#element |
| hasInitializer vDecDouble |
| reference: <testLibrary>::@topLevelVariable::vDecDouble |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vDecDouble |
| type: double |
| getter: <testLibraryFragment>::@getter::vDecDouble#element |
| setter: <testLibraryFragment>::@setter::vDecDouble#element |
| getters |
| synthetic static get vInt |
| firstFragment: <testLibraryFragment>::@getter::vInt |
| returnType: int |
| synthetic static get vDouble |
| firstFragment: <testLibraryFragment>::@getter::vDouble |
| returnType: double |
| synthetic static get vIncInt |
| firstFragment: <testLibraryFragment>::@getter::vIncInt |
| returnType: int |
| synthetic static get vDecInt |
| firstFragment: <testLibraryFragment>::@getter::vDecInt |
| returnType: int |
| synthetic static get vIncDouble |
| firstFragment: <testLibraryFragment>::@getter::vIncDouble |
| returnType: double |
| synthetic static get vDecDouble |
| firstFragment: <testLibraryFragment>::@getter::vDecDouble |
| returnType: double |
| setters |
| synthetic static set vInt |
| firstFragment: <testLibraryFragment>::@setter::vInt |
| formalParameters |
| requiredPositional _vInt |
| type: int |
| returnType: void |
| synthetic static set vDouble |
| firstFragment: <testLibraryFragment>::@setter::vDouble |
| formalParameters |
| requiredPositional _vDouble |
| type: double |
| returnType: void |
| synthetic static set vIncInt |
| firstFragment: <testLibraryFragment>::@setter::vIncInt |
| formalParameters |
| requiredPositional _vIncInt |
| type: int |
| returnType: void |
| synthetic static set vDecInt |
| firstFragment: <testLibraryFragment>::@setter::vDecInt |
| formalParameters |
| requiredPositional _vDecInt |
| type: int |
| returnType: void |
| synthetic static set vIncDouble |
| firstFragment: <testLibraryFragment>::@setter::vIncDouble |
| formalParameters |
| requiredPositional _vIncDouble |
| type: double |
| returnType: void |
| synthetic static set vDecDouble |
| firstFragment: <testLibraryFragment>::@setter::vDecDouble |
| formalParameters |
| requiredPositional _vDecDouble |
| type: double |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_postfix_indexed() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var vInt = [1]; |
| var vDouble = [2.0]; |
| var vIncInt = vInt[0]++; |
| var vDecInt = vInt[0]--; |
| var vIncDouble = vDouble[0]++; |
| var vDecDouble = vDouble[0]--; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer vInt @4 |
| reference: <testLibraryFragment>::@topLevelVariable::vInt |
| element: <testLibrary>::@topLevelVariable::vInt |
| getter2: <testLibraryFragment>::@getter::vInt |
| setter2: <testLibraryFragment>::@setter::vInt |
| hasInitializer vDouble @20 |
| reference: <testLibraryFragment>::@topLevelVariable::vDouble |
| element: <testLibrary>::@topLevelVariable::vDouble |
| getter2: <testLibraryFragment>::@getter::vDouble |
| setter2: <testLibraryFragment>::@setter::vDouble |
| hasInitializer vIncInt @41 |
| reference: <testLibraryFragment>::@topLevelVariable::vIncInt |
| element: <testLibrary>::@topLevelVariable::vIncInt |
| getter2: <testLibraryFragment>::@getter::vIncInt |
| setter2: <testLibraryFragment>::@setter::vIncInt |
| hasInitializer vDecInt @66 |
| reference: <testLibraryFragment>::@topLevelVariable::vDecInt |
| element: <testLibrary>::@topLevelVariable::vDecInt |
| getter2: <testLibraryFragment>::@getter::vDecInt |
| setter2: <testLibraryFragment>::@setter::vDecInt |
| hasInitializer vIncDouble @91 |
| reference: <testLibraryFragment>::@topLevelVariable::vIncDouble |
| element: <testLibrary>::@topLevelVariable::vIncDouble |
| getter2: <testLibraryFragment>::@getter::vIncDouble |
| setter2: <testLibraryFragment>::@setter::vIncDouble |
| hasInitializer vDecDouble @122 |
| reference: <testLibraryFragment>::@topLevelVariable::vDecDouble |
| element: <testLibrary>::@topLevelVariable::vDecDouble |
| getter2: <testLibraryFragment>::@getter::vDecDouble |
| setter2: <testLibraryFragment>::@setter::vDecDouble |
| getters |
| synthetic get vInt |
| reference: <testLibraryFragment>::@getter::vInt |
| element: <testLibraryFragment>::@getter::vInt#element |
| synthetic get vDouble |
| reference: <testLibraryFragment>::@getter::vDouble |
| element: <testLibraryFragment>::@getter::vDouble#element |
| synthetic get vIncInt |
| reference: <testLibraryFragment>::@getter::vIncInt |
| element: <testLibraryFragment>::@getter::vIncInt#element |
| synthetic get vDecInt |
| reference: <testLibraryFragment>::@getter::vDecInt |
| element: <testLibraryFragment>::@getter::vDecInt#element |
| synthetic get vIncDouble |
| reference: <testLibraryFragment>::@getter::vIncDouble |
| element: <testLibraryFragment>::@getter::vIncDouble#element |
| synthetic get vDecDouble |
| reference: <testLibraryFragment>::@getter::vDecDouble |
| element: <testLibraryFragment>::@getter::vDecDouble#element |
| setters |
| synthetic set vInt |
| reference: <testLibraryFragment>::@setter::vInt |
| element: <testLibraryFragment>::@setter::vInt#element |
| formalParameters |
| _vInt |
| element: <testLibraryFragment>::@setter::vInt::@parameter::_vInt#element |
| synthetic set vDouble |
| reference: <testLibraryFragment>::@setter::vDouble |
| element: <testLibraryFragment>::@setter::vDouble#element |
| formalParameters |
| _vDouble |
| element: <testLibraryFragment>::@setter::vDouble::@parameter::_vDouble#element |
| synthetic set vIncInt |
| reference: <testLibraryFragment>::@setter::vIncInt |
| element: <testLibraryFragment>::@setter::vIncInt#element |
| formalParameters |
| _vIncInt |
| element: <testLibraryFragment>::@setter::vIncInt::@parameter::_vIncInt#element |
| synthetic set vDecInt |
| reference: <testLibraryFragment>::@setter::vDecInt |
| element: <testLibraryFragment>::@setter::vDecInt#element |
| formalParameters |
| _vDecInt |
| element: <testLibraryFragment>::@setter::vDecInt::@parameter::_vDecInt#element |
| synthetic set vIncDouble |
| reference: <testLibraryFragment>::@setter::vIncDouble |
| element: <testLibraryFragment>::@setter::vIncDouble#element |
| formalParameters |
| _vIncDouble |
| element: <testLibraryFragment>::@setter::vIncDouble::@parameter::_vIncDouble#element |
| synthetic set vDecDouble |
| reference: <testLibraryFragment>::@setter::vDecDouble |
| element: <testLibraryFragment>::@setter::vDecDouble#element |
| formalParameters |
| _vDecDouble |
| element: <testLibraryFragment>::@setter::vDecDouble::@parameter::_vDecDouble#element |
| topLevelVariables |
| hasInitializer vInt |
| reference: <testLibrary>::@topLevelVariable::vInt |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vInt |
| type: List<int> |
| getter: <testLibraryFragment>::@getter::vInt#element |
| setter: <testLibraryFragment>::@setter::vInt#element |
| hasInitializer vDouble |
| reference: <testLibrary>::@topLevelVariable::vDouble |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vDouble |
| type: List<double> |
| getter: <testLibraryFragment>::@getter::vDouble#element |
| setter: <testLibraryFragment>::@setter::vDouble#element |
| hasInitializer vIncInt |
| reference: <testLibrary>::@topLevelVariable::vIncInt |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vIncInt |
| type: int |
| getter: <testLibraryFragment>::@getter::vIncInt#element |
| setter: <testLibraryFragment>::@setter::vIncInt#element |
| hasInitializer vDecInt |
| reference: <testLibrary>::@topLevelVariable::vDecInt |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vDecInt |
| type: int |
| getter: <testLibraryFragment>::@getter::vDecInt#element |
| setter: <testLibraryFragment>::@setter::vDecInt#element |
| hasInitializer vIncDouble |
| reference: <testLibrary>::@topLevelVariable::vIncDouble |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vIncDouble |
| type: double |
| getter: <testLibraryFragment>::@getter::vIncDouble#element |
| setter: <testLibraryFragment>::@setter::vIncDouble#element |
| hasInitializer vDecDouble |
| reference: <testLibrary>::@topLevelVariable::vDecDouble |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vDecDouble |
| type: double |
| getter: <testLibraryFragment>::@getter::vDecDouble#element |
| setter: <testLibraryFragment>::@setter::vDecDouble#element |
| getters |
| synthetic static get vInt |
| firstFragment: <testLibraryFragment>::@getter::vInt |
| returnType: List<int> |
| synthetic static get vDouble |
| firstFragment: <testLibraryFragment>::@getter::vDouble |
| returnType: List<double> |
| synthetic static get vIncInt |
| firstFragment: <testLibraryFragment>::@getter::vIncInt |
| returnType: int |
| synthetic static get vDecInt |
| firstFragment: <testLibraryFragment>::@getter::vDecInt |
| returnType: int |
| synthetic static get vIncDouble |
| firstFragment: <testLibraryFragment>::@getter::vIncDouble |
| returnType: double |
| synthetic static get vDecDouble |
| firstFragment: <testLibraryFragment>::@getter::vDecDouble |
| returnType: double |
| setters |
| synthetic static set vInt |
| firstFragment: <testLibraryFragment>::@setter::vInt |
| formalParameters |
| requiredPositional _vInt |
| type: List<int> |
| returnType: void |
| synthetic static set vDouble |
| firstFragment: <testLibraryFragment>::@setter::vDouble |
| formalParameters |
| requiredPositional _vDouble |
| type: List<double> |
| returnType: void |
| synthetic static set vIncInt |
| firstFragment: <testLibraryFragment>::@setter::vIncInt |
| formalParameters |
| requiredPositional _vIncInt |
| type: int |
| returnType: void |
| synthetic static set vDecInt |
| firstFragment: <testLibraryFragment>::@setter::vDecInt |
| formalParameters |
| requiredPositional _vDecInt |
| type: int |
| returnType: void |
| synthetic static set vIncDouble |
| firstFragment: <testLibraryFragment>::@setter::vIncDouble |
| formalParameters |
| requiredPositional _vIncDouble |
| type: double |
| returnType: void |
| synthetic static set vDecDouble |
| firstFragment: <testLibraryFragment>::@setter::vDecDouble |
| formalParameters |
| requiredPositional _vDecDouble |
| type: double |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_prefix_incDec() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var vInt = 1; |
| var vDouble = 2.0; |
| var vIncInt = ++vInt; |
| var vDecInt = --vInt; |
| var vIncDouble = ++vDouble; |
| var vDecInt = --vDouble; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer vInt @4 |
| reference: <testLibraryFragment>::@topLevelVariable::vInt |
| element: <testLibrary>::@topLevelVariable::vInt |
| getter2: <testLibraryFragment>::@getter::vInt |
| setter2: <testLibraryFragment>::@setter::vInt |
| hasInitializer vDouble @18 |
| reference: <testLibraryFragment>::@topLevelVariable::vDouble |
| element: <testLibrary>::@topLevelVariable::vDouble |
| getter2: <testLibraryFragment>::@getter::vDouble |
| setter2: <testLibraryFragment>::@setter::vDouble |
| hasInitializer vIncInt @37 |
| reference: <testLibraryFragment>::@topLevelVariable::vIncInt |
| element: <testLibrary>::@topLevelVariable::vIncInt |
| getter2: <testLibraryFragment>::@getter::vIncInt |
| setter2: <testLibraryFragment>::@setter::vIncInt |
| hasInitializer vDecInt @59 |
| reference: <testLibraryFragment>::@topLevelVariable::vDecInt::@def::0 |
| element: <testLibrary>::@topLevelVariable::vDecInt::@def::0 |
| getter2: <testLibraryFragment>::@getter::vDecInt::@def::0 |
| setter2: <testLibraryFragment>::@setter::vDecInt::@def::0 |
| hasInitializer vIncDouble @81 |
| reference: <testLibraryFragment>::@topLevelVariable::vIncDouble |
| element: <testLibrary>::@topLevelVariable::vIncDouble |
| getter2: <testLibraryFragment>::@getter::vIncDouble |
| setter2: <testLibraryFragment>::@setter::vIncDouble |
| hasInitializer vDecInt @109 |
| reference: <testLibraryFragment>::@topLevelVariable::vDecInt::@def::1 |
| element: <testLibrary>::@topLevelVariable::vDecInt::@def::1 |
| getter2: <testLibraryFragment>::@getter::vDecInt::@def::1 |
| setter2: <testLibraryFragment>::@setter::vDecInt::@def::1 |
| getters |
| synthetic get vInt |
| reference: <testLibraryFragment>::@getter::vInt |
| element: <testLibraryFragment>::@getter::vInt#element |
| synthetic get vDouble |
| reference: <testLibraryFragment>::@getter::vDouble |
| element: <testLibraryFragment>::@getter::vDouble#element |
| synthetic get vIncInt |
| reference: <testLibraryFragment>::@getter::vIncInt |
| element: <testLibraryFragment>::@getter::vIncInt#element |
| synthetic get vDecInt |
| reference: <testLibraryFragment>::@getter::vDecInt::@def::0 |
| element: <testLibraryFragment>::@getter::vDecInt::@def::0#element |
| synthetic get vIncDouble |
| reference: <testLibraryFragment>::@getter::vIncDouble |
| element: <testLibraryFragment>::@getter::vIncDouble#element |
| synthetic get vDecInt |
| reference: <testLibraryFragment>::@getter::vDecInt::@def::1 |
| element: <testLibraryFragment>::@getter::vDecInt::@def::1#element |
| setters |
| synthetic set vInt |
| reference: <testLibraryFragment>::@setter::vInt |
| element: <testLibraryFragment>::@setter::vInt#element |
| formalParameters |
| _vInt |
| element: <testLibraryFragment>::@setter::vInt::@parameter::_vInt#element |
| synthetic set vDouble |
| reference: <testLibraryFragment>::@setter::vDouble |
| element: <testLibraryFragment>::@setter::vDouble#element |
| formalParameters |
| _vDouble |
| element: <testLibraryFragment>::@setter::vDouble::@parameter::_vDouble#element |
| synthetic set vIncInt |
| reference: <testLibraryFragment>::@setter::vIncInt |
| element: <testLibraryFragment>::@setter::vIncInt#element |
| formalParameters |
| _vIncInt |
| element: <testLibraryFragment>::@setter::vIncInt::@parameter::_vIncInt#element |
| synthetic set vDecInt |
| reference: <testLibraryFragment>::@setter::vDecInt::@def::0 |
| element: <testLibraryFragment>::@setter::vDecInt::@def::0#element |
| formalParameters |
| _vDecInt |
| element: <testLibraryFragment>::@setter::vDecInt::@def::0::@parameter::_vDecInt#element |
| synthetic set vIncDouble |
| reference: <testLibraryFragment>::@setter::vIncDouble |
| element: <testLibraryFragment>::@setter::vIncDouble#element |
| formalParameters |
| _vIncDouble |
| element: <testLibraryFragment>::@setter::vIncDouble::@parameter::_vIncDouble#element |
| synthetic set vDecInt |
| reference: <testLibraryFragment>::@setter::vDecInt::@def::1 |
| element: <testLibraryFragment>::@setter::vDecInt::@def::1#element |
| formalParameters |
| _vDecInt |
| element: <testLibraryFragment>::@setter::vDecInt::@def::1::@parameter::_vDecInt#element |
| topLevelVariables |
| hasInitializer vInt |
| reference: <testLibrary>::@topLevelVariable::vInt |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vInt |
| type: int |
| getter: <testLibraryFragment>::@getter::vInt#element |
| setter: <testLibraryFragment>::@setter::vInt#element |
| hasInitializer vDouble |
| reference: <testLibrary>::@topLevelVariable::vDouble |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vDouble |
| type: double |
| getter: <testLibraryFragment>::@getter::vDouble#element |
| setter: <testLibraryFragment>::@setter::vDouble#element |
| hasInitializer vIncInt |
| reference: <testLibrary>::@topLevelVariable::vIncInt |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vIncInt |
| type: int |
| getter: <testLibraryFragment>::@getter::vIncInt#element |
| setter: <testLibraryFragment>::@setter::vIncInt#element |
| hasInitializer vDecInt |
| reference: <testLibrary>::@topLevelVariable::vDecInt::@def::0 |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vDecInt::@def::0 |
| type: int |
| getter: <testLibraryFragment>::@getter::vDecInt::@def::0#element |
| setter: <testLibraryFragment>::@setter::vDecInt::@def::0#element |
| hasInitializer vIncDouble |
| reference: <testLibrary>::@topLevelVariable::vIncDouble |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vIncDouble |
| type: double |
| getter: <testLibraryFragment>::@getter::vIncDouble#element |
| setter: <testLibraryFragment>::@setter::vIncDouble#element |
| hasInitializer vDecInt |
| reference: <testLibrary>::@topLevelVariable::vDecInt::@def::1 |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vDecInt::@def::1 |
| type: double |
| getter: <testLibraryFragment>::@getter::vDecInt::@def::1#element |
| setter: <testLibraryFragment>::@setter::vDecInt::@def::1#element |
| getters |
| synthetic static get vInt |
| firstFragment: <testLibraryFragment>::@getter::vInt |
| returnType: int |
| synthetic static get vDouble |
| firstFragment: <testLibraryFragment>::@getter::vDouble |
| returnType: double |
| synthetic static get vIncInt |
| firstFragment: <testLibraryFragment>::@getter::vIncInt |
| returnType: int |
| synthetic static get vDecInt |
| firstFragment: <testLibraryFragment>::@getter::vDecInt::@def::0 |
| returnType: int |
| synthetic static get vIncDouble |
| firstFragment: <testLibraryFragment>::@getter::vIncDouble |
| returnType: double |
| synthetic static get vDecInt |
| firstFragment: <testLibraryFragment>::@getter::vDecInt::@def::1 |
| returnType: double |
| setters |
| synthetic static set vInt |
| firstFragment: <testLibraryFragment>::@setter::vInt |
| formalParameters |
| requiredPositional _vInt |
| type: int |
| returnType: void |
| synthetic static set vDouble |
| firstFragment: <testLibraryFragment>::@setter::vDouble |
| formalParameters |
| requiredPositional _vDouble |
| type: double |
| returnType: void |
| synthetic static set vIncInt |
| firstFragment: <testLibraryFragment>::@setter::vIncInt |
| formalParameters |
| requiredPositional _vIncInt |
| type: int |
| returnType: void |
| synthetic static set vDecInt |
| firstFragment: <testLibraryFragment>::@setter::vDecInt::@def::0 |
| formalParameters |
| requiredPositional _vDecInt |
| type: int |
| returnType: void |
| synthetic static set vIncDouble |
| firstFragment: <testLibraryFragment>::@setter::vIncDouble |
| formalParameters |
| requiredPositional _vIncDouble |
| type: double |
| returnType: void |
| synthetic static set vDecInt |
| firstFragment: <testLibraryFragment>::@setter::vDecInt::@def::1 |
| formalParameters |
| requiredPositional _vDecInt |
| type: double |
| returnType: void |
| '''); |
| } |
| |
| @skippedTest |
| test_initializer_prefix_incDec_custom() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A { |
| B operator+(int v) => null; |
| } |
| class B {} |
| var a = new A(); |
| var vInc = ++a; |
| var vDec = --a; |
| '''); |
| checkElementText(library, r''' |
| A a; |
| B vInc; |
| B vDec; |
| '''); |
| } |
| |
| test_initializer_prefix_incDec_indexed() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var vInt = [1]; |
| var vDouble = [2.0]; |
| var vIncInt = ++vInt[0]; |
| var vDecInt = --vInt[0]; |
| var vIncDouble = ++vDouble[0]; |
| var vDecInt = --vDouble[0]; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer vInt @4 |
| reference: <testLibraryFragment>::@topLevelVariable::vInt |
| element: <testLibrary>::@topLevelVariable::vInt |
| getter2: <testLibraryFragment>::@getter::vInt |
| setter2: <testLibraryFragment>::@setter::vInt |
| hasInitializer vDouble @20 |
| reference: <testLibraryFragment>::@topLevelVariable::vDouble |
| element: <testLibrary>::@topLevelVariable::vDouble |
| getter2: <testLibraryFragment>::@getter::vDouble |
| setter2: <testLibraryFragment>::@setter::vDouble |
| hasInitializer vIncInt @41 |
| reference: <testLibraryFragment>::@topLevelVariable::vIncInt |
| element: <testLibrary>::@topLevelVariable::vIncInt |
| getter2: <testLibraryFragment>::@getter::vIncInt |
| setter2: <testLibraryFragment>::@setter::vIncInt |
| hasInitializer vDecInt @66 |
| reference: <testLibraryFragment>::@topLevelVariable::vDecInt::@def::0 |
| element: <testLibrary>::@topLevelVariable::vDecInt::@def::0 |
| getter2: <testLibraryFragment>::@getter::vDecInt::@def::0 |
| setter2: <testLibraryFragment>::@setter::vDecInt::@def::0 |
| hasInitializer vIncDouble @91 |
| reference: <testLibraryFragment>::@topLevelVariable::vIncDouble |
| element: <testLibrary>::@topLevelVariable::vIncDouble |
| getter2: <testLibraryFragment>::@getter::vIncDouble |
| setter2: <testLibraryFragment>::@setter::vIncDouble |
| hasInitializer vDecInt @122 |
| reference: <testLibraryFragment>::@topLevelVariable::vDecInt::@def::1 |
| element: <testLibrary>::@topLevelVariable::vDecInt::@def::1 |
| getter2: <testLibraryFragment>::@getter::vDecInt::@def::1 |
| setter2: <testLibraryFragment>::@setter::vDecInt::@def::1 |
| getters |
| synthetic get vInt |
| reference: <testLibraryFragment>::@getter::vInt |
| element: <testLibraryFragment>::@getter::vInt#element |
| synthetic get vDouble |
| reference: <testLibraryFragment>::@getter::vDouble |
| element: <testLibraryFragment>::@getter::vDouble#element |
| synthetic get vIncInt |
| reference: <testLibraryFragment>::@getter::vIncInt |
| element: <testLibraryFragment>::@getter::vIncInt#element |
| synthetic get vDecInt |
| reference: <testLibraryFragment>::@getter::vDecInt::@def::0 |
| element: <testLibraryFragment>::@getter::vDecInt::@def::0#element |
| synthetic get vIncDouble |
| reference: <testLibraryFragment>::@getter::vIncDouble |
| element: <testLibraryFragment>::@getter::vIncDouble#element |
| synthetic get vDecInt |
| reference: <testLibraryFragment>::@getter::vDecInt::@def::1 |
| element: <testLibraryFragment>::@getter::vDecInt::@def::1#element |
| setters |
| synthetic set vInt |
| reference: <testLibraryFragment>::@setter::vInt |
| element: <testLibraryFragment>::@setter::vInt#element |
| formalParameters |
| _vInt |
| element: <testLibraryFragment>::@setter::vInt::@parameter::_vInt#element |
| synthetic set vDouble |
| reference: <testLibraryFragment>::@setter::vDouble |
| element: <testLibraryFragment>::@setter::vDouble#element |
| formalParameters |
| _vDouble |
| element: <testLibraryFragment>::@setter::vDouble::@parameter::_vDouble#element |
| synthetic set vIncInt |
| reference: <testLibraryFragment>::@setter::vIncInt |
| element: <testLibraryFragment>::@setter::vIncInt#element |
| formalParameters |
| _vIncInt |
| element: <testLibraryFragment>::@setter::vIncInt::@parameter::_vIncInt#element |
| synthetic set vDecInt |
| reference: <testLibraryFragment>::@setter::vDecInt::@def::0 |
| element: <testLibraryFragment>::@setter::vDecInt::@def::0#element |
| formalParameters |
| _vDecInt |
| element: <testLibraryFragment>::@setter::vDecInt::@def::0::@parameter::_vDecInt#element |
| synthetic set vIncDouble |
| reference: <testLibraryFragment>::@setter::vIncDouble |
| element: <testLibraryFragment>::@setter::vIncDouble#element |
| formalParameters |
| _vIncDouble |
| element: <testLibraryFragment>::@setter::vIncDouble::@parameter::_vIncDouble#element |
| synthetic set vDecInt |
| reference: <testLibraryFragment>::@setter::vDecInt::@def::1 |
| element: <testLibraryFragment>::@setter::vDecInt::@def::1#element |
| formalParameters |
| _vDecInt |
| element: <testLibraryFragment>::@setter::vDecInt::@def::1::@parameter::_vDecInt#element |
| topLevelVariables |
| hasInitializer vInt |
| reference: <testLibrary>::@topLevelVariable::vInt |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vInt |
| type: List<int> |
| getter: <testLibraryFragment>::@getter::vInt#element |
| setter: <testLibraryFragment>::@setter::vInt#element |
| hasInitializer vDouble |
| reference: <testLibrary>::@topLevelVariable::vDouble |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vDouble |
| type: List<double> |
| getter: <testLibraryFragment>::@getter::vDouble#element |
| setter: <testLibraryFragment>::@setter::vDouble#element |
| hasInitializer vIncInt |
| reference: <testLibrary>::@topLevelVariable::vIncInt |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vIncInt |
| type: int |
| getter: <testLibraryFragment>::@getter::vIncInt#element |
| setter: <testLibraryFragment>::@setter::vIncInt#element |
| hasInitializer vDecInt |
| reference: <testLibrary>::@topLevelVariable::vDecInt::@def::0 |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vDecInt::@def::0 |
| type: int |
| getter: <testLibraryFragment>::@getter::vDecInt::@def::0#element |
| setter: <testLibraryFragment>::@setter::vDecInt::@def::0#element |
| hasInitializer vIncDouble |
| reference: <testLibrary>::@topLevelVariable::vIncDouble |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vIncDouble |
| type: double |
| getter: <testLibraryFragment>::@getter::vIncDouble#element |
| setter: <testLibraryFragment>::@setter::vIncDouble#element |
| hasInitializer vDecInt |
| reference: <testLibrary>::@topLevelVariable::vDecInt::@def::1 |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vDecInt::@def::1 |
| type: double |
| getter: <testLibraryFragment>::@getter::vDecInt::@def::1#element |
| setter: <testLibraryFragment>::@setter::vDecInt::@def::1#element |
| getters |
| synthetic static get vInt |
| firstFragment: <testLibraryFragment>::@getter::vInt |
| returnType: List<int> |
| synthetic static get vDouble |
| firstFragment: <testLibraryFragment>::@getter::vDouble |
| returnType: List<double> |
| synthetic static get vIncInt |
| firstFragment: <testLibraryFragment>::@getter::vIncInt |
| returnType: int |
| synthetic static get vDecInt |
| firstFragment: <testLibraryFragment>::@getter::vDecInt::@def::0 |
| returnType: int |
| synthetic static get vIncDouble |
| firstFragment: <testLibraryFragment>::@getter::vIncDouble |
| returnType: double |
| synthetic static get vDecInt |
| firstFragment: <testLibraryFragment>::@getter::vDecInt::@def::1 |
| returnType: double |
| setters |
| synthetic static set vInt |
| firstFragment: <testLibraryFragment>::@setter::vInt |
| formalParameters |
| requiredPositional _vInt |
| type: List<int> |
| returnType: void |
| synthetic static set vDouble |
| firstFragment: <testLibraryFragment>::@setter::vDouble |
| formalParameters |
| requiredPositional _vDouble |
| type: List<double> |
| returnType: void |
| synthetic static set vIncInt |
| firstFragment: <testLibraryFragment>::@setter::vIncInt |
| formalParameters |
| requiredPositional _vIncInt |
| type: int |
| returnType: void |
| synthetic static set vDecInt |
| firstFragment: <testLibraryFragment>::@setter::vDecInt::@def::0 |
| formalParameters |
| requiredPositional _vDecInt |
| type: int |
| returnType: void |
| synthetic static set vIncDouble |
| firstFragment: <testLibraryFragment>::@setter::vIncDouble |
| formalParameters |
| requiredPositional _vIncDouble |
| type: double |
| returnType: void |
| synthetic static set vDecInt |
| firstFragment: <testLibraryFragment>::@setter::vDecInt::@def::1 |
| formalParameters |
| requiredPositional _vDecInt |
| type: double |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_prefix_not() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var vNot = !true; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer vNot @4 |
| reference: <testLibraryFragment>::@topLevelVariable::vNot |
| element: <testLibrary>::@topLevelVariable::vNot |
| getter2: <testLibraryFragment>::@getter::vNot |
| setter2: <testLibraryFragment>::@setter::vNot |
| getters |
| synthetic get vNot |
| reference: <testLibraryFragment>::@getter::vNot |
| element: <testLibraryFragment>::@getter::vNot#element |
| setters |
| synthetic set vNot |
| reference: <testLibraryFragment>::@setter::vNot |
| element: <testLibraryFragment>::@setter::vNot#element |
| formalParameters |
| _vNot |
| element: <testLibraryFragment>::@setter::vNot::@parameter::_vNot#element |
| topLevelVariables |
| hasInitializer vNot |
| reference: <testLibrary>::@topLevelVariable::vNot |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vNot |
| type: bool |
| getter: <testLibraryFragment>::@getter::vNot#element |
| setter: <testLibraryFragment>::@setter::vNot#element |
| getters |
| synthetic static get vNot |
| firstFragment: <testLibraryFragment>::@getter::vNot |
| returnType: bool |
| setters |
| synthetic static set vNot |
| firstFragment: <testLibraryFragment>::@setter::vNot |
| formalParameters |
| requiredPositional _vNot |
| type: bool |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_prefix_other() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var vNegateInt = -1; |
| var vNegateDouble = -1.0; |
| var vComplement = ~1; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer vNegateInt @4 |
| reference: <testLibraryFragment>::@topLevelVariable::vNegateInt |
| element: <testLibrary>::@topLevelVariable::vNegateInt |
| getter2: <testLibraryFragment>::@getter::vNegateInt |
| setter2: <testLibraryFragment>::@setter::vNegateInt |
| hasInitializer vNegateDouble @25 |
| reference: <testLibraryFragment>::@topLevelVariable::vNegateDouble |
| element: <testLibrary>::@topLevelVariable::vNegateDouble |
| getter2: <testLibraryFragment>::@getter::vNegateDouble |
| setter2: <testLibraryFragment>::@setter::vNegateDouble |
| hasInitializer vComplement @51 |
| reference: <testLibraryFragment>::@topLevelVariable::vComplement |
| element: <testLibrary>::@topLevelVariable::vComplement |
| getter2: <testLibraryFragment>::@getter::vComplement |
| setter2: <testLibraryFragment>::@setter::vComplement |
| getters |
| synthetic get vNegateInt |
| reference: <testLibraryFragment>::@getter::vNegateInt |
| element: <testLibraryFragment>::@getter::vNegateInt#element |
| synthetic get vNegateDouble |
| reference: <testLibraryFragment>::@getter::vNegateDouble |
| element: <testLibraryFragment>::@getter::vNegateDouble#element |
| synthetic get vComplement |
| reference: <testLibraryFragment>::@getter::vComplement |
| element: <testLibraryFragment>::@getter::vComplement#element |
| setters |
| synthetic set vNegateInt |
| reference: <testLibraryFragment>::@setter::vNegateInt |
| element: <testLibraryFragment>::@setter::vNegateInt#element |
| formalParameters |
| _vNegateInt |
| element: <testLibraryFragment>::@setter::vNegateInt::@parameter::_vNegateInt#element |
| synthetic set vNegateDouble |
| reference: <testLibraryFragment>::@setter::vNegateDouble |
| element: <testLibraryFragment>::@setter::vNegateDouble#element |
| formalParameters |
| _vNegateDouble |
| element: <testLibraryFragment>::@setter::vNegateDouble::@parameter::_vNegateDouble#element |
| synthetic set vComplement |
| reference: <testLibraryFragment>::@setter::vComplement |
| element: <testLibraryFragment>::@setter::vComplement#element |
| formalParameters |
| _vComplement |
| element: <testLibraryFragment>::@setter::vComplement::@parameter::_vComplement#element |
| topLevelVariables |
| hasInitializer vNegateInt |
| reference: <testLibrary>::@topLevelVariable::vNegateInt |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vNegateInt |
| type: int |
| getter: <testLibraryFragment>::@getter::vNegateInt#element |
| setter: <testLibraryFragment>::@setter::vNegateInt#element |
| hasInitializer vNegateDouble |
| reference: <testLibrary>::@topLevelVariable::vNegateDouble |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vNegateDouble |
| type: double |
| getter: <testLibraryFragment>::@getter::vNegateDouble#element |
| setter: <testLibraryFragment>::@setter::vNegateDouble#element |
| hasInitializer vComplement |
| reference: <testLibrary>::@topLevelVariable::vComplement |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vComplement |
| type: int |
| getter: <testLibraryFragment>::@getter::vComplement#element |
| setter: <testLibraryFragment>::@setter::vComplement#element |
| getters |
| synthetic static get vNegateInt |
| firstFragment: <testLibraryFragment>::@getter::vNegateInt |
| returnType: int |
| synthetic static get vNegateDouble |
| firstFragment: <testLibraryFragment>::@getter::vNegateDouble |
| returnType: double |
| synthetic static get vComplement |
| firstFragment: <testLibraryFragment>::@getter::vComplement |
| returnType: int |
| setters |
| synthetic static set vNegateInt |
| firstFragment: <testLibraryFragment>::@setter::vNegateInt |
| formalParameters |
| requiredPositional _vNegateInt |
| type: int |
| returnType: void |
| synthetic static set vNegateDouble |
| firstFragment: <testLibraryFragment>::@setter::vNegateDouble |
| formalParameters |
| requiredPositional _vNegateDouble |
| type: double |
| returnType: void |
| synthetic static set vComplement |
| firstFragment: <testLibraryFragment>::@setter::vComplement |
| formalParameters |
| requiredPositional _vComplement |
| type: int |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_referenceToFieldOfStaticField() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class C { |
| static D d; |
| } |
| class D { |
| int i; |
| } |
| final x = C.d.i; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class C @6 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| fields |
| d @21 |
| reference: <testLibraryFragment>::@class::C::@field::d |
| element: <testLibraryFragment>::@class::C::@field::d#element |
| getter2: <testLibraryFragment>::@class::C::@getter::d |
| setter2: <testLibraryFragment>::@class::C::@setter::d |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| getters |
| synthetic get d |
| reference: <testLibraryFragment>::@class::C::@getter::d |
| element: <testLibraryFragment>::@class::C::@getter::d#element |
| setters |
| synthetic set d |
| reference: <testLibraryFragment>::@class::C::@setter::d |
| element: <testLibraryFragment>::@class::C::@setter::d#element |
| formalParameters |
| _d |
| element: <testLibraryFragment>::@class::C::@setter::d::@parameter::_d#element |
| class D @32 |
| reference: <testLibraryFragment>::@class::D |
| element: <testLibrary>::@class::D |
| fields |
| i @42 |
| reference: <testLibraryFragment>::@class::D::@field::i |
| element: <testLibraryFragment>::@class::D::@field::i#element |
| getter2: <testLibraryFragment>::@class::D::@getter::i |
| setter2: <testLibraryFragment>::@class::D::@setter::i |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::D::@constructor::new |
| element: <testLibraryFragment>::@class::D::@constructor::new#element |
| typeName: D |
| getters |
| synthetic get i |
| reference: <testLibraryFragment>::@class::D::@getter::i |
| element: <testLibraryFragment>::@class::D::@getter::i#element |
| setters |
| synthetic set i |
| reference: <testLibraryFragment>::@class::D::@setter::i |
| element: <testLibraryFragment>::@class::D::@setter::i#element |
| formalParameters |
| _i |
| element: <testLibraryFragment>::@class::D::@setter::i::@parameter::_i#element |
| topLevelVariables |
| hasInitializer x @53 |
| reference: <testLibraryFragment>::@topLevelVariable::x |
| element: <testLibrary>::@topLevelVariable::x |
| getter2: <testLibraryFragment>::@getter::x |
| getters |
| synthetic get x |
| reference: <testLibraryFragment>::@getter::x |
| element: <testLibraryFragment>::@getter::x#element |
| classes |
| class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| fields |
| static d |
| firstFragment: <testLibraryFragment>::@class::C::@field::d |
| type: D |
| getter: <testLibraryFragment>::@class::C::@getter::d#element |
| setter: <testLibraryFragment>::@class::C::@setter::d#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| getters |
| synthetic static get d |
| firstFragment: <testLibraryFragment>::@class::C::@getter::d |
| returnType: D |
| setters |
| synthetic static set d |
| firstFragment: <testLibraryFragment>::@class::C::@setter::d |
| formalParameters |
| requiredPositional _d |
| type: D |
| returnType: void |
| class D |
| reference: <testLibrary>::@class::D |
| firstFragment: <testLibraryFragment>::@class::D |
| fields |
| i |
| firstFragment: <testLibraryFragment>::@class::D::@field::i |
| type: int |
| getter: <testLibraryFragment>::@class::D::@getter::i#element |
| setter: <testLibraryFragment>::@class::D::@setter::i#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::D::@constructor::new |
| getters |
| synthetic get i |
| firstFragment: <testLibraryFragment>::@class::D::@getter::i |
| returnType: int |
| setters |
| synthetic set i |
| firstFragment: <testLibraryFragment>::@class::D::@setter::i |
| formalParameters |
| requiredPositional _i |
| type: int |
| returnType: void |
| topLevelVariables |
| final hasInitializer x |
| reference: <testLibrary>::@topLevelVariable::x |
| firstFragment: <testLibraryFragment>::@topLevelVariable::x |
| type: int |
| getter: <testLibraryFragment>::@getter::x#element |
| getters |
| synthetic static get x |
| firstFragment: <testLibraryFragment>::@getter::x |
| returnType: int |
| '''); |
| } |
| |
| test_initializer_referenceToFieldOfStaticGetter() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class C { |
| static D get d => null; |
| } |
| class D { |
| int i; |
| } |
| var x = C.d.i; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class C @6 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| fields |
| synthetic d |
| reference: <testLibraryFragment>::@class::C::@field::d |
| element: <testLibraryFragment>::@class::C::@field::d#element |
| getter2: <testLibraryFragment>::@class::C::@getter::d |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| getters |
| get d @25 |
| reference: <testLibraryFragment>::@class::C::@getter::d |
| element: <testLibraryFragment>::@class::C::@getter::d#element |
| class D @44 |
| reference: <testLibraryFragment>::@class::D |
| element: <testLibrary>::@class::D |
| fields |
| i @54 |
| reference: <testLibraryFragment>::@class::D::@field::i |
| element: <testLibraryFragment>::@class::D::@field::i#element |
| getter2: <testLibraryFragment>::@class::D::@getter::i |
| setter2: <testLibraryFragment>::@class::D::@setter::i |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::D::@constructor::new |
| element: <testLibraryFragment>::@class::D::@constructor::new#element |
| typeName: D |
| getters |
| synthetic get i |
| reference: <testLibraryFragment>::@class::D::@getter::i |
| element: <testLibraryFragment>::@class::D::@getter::i#element |
| setters |
| synthetic set i |
| reference: <testLibraryFragment>::@class::D::@setter::i |
| element: <testLibraryFragment>::@class::D::@setter::i#element |
| formalParameters |
| _i |
| element: <testLibraryFragment>::@class::D::@setter::i::@parameter::_i#element |
| topLevelVariables |
| hasInitializer x @63 |
| reference: <testLibraryFragment>::@topLevelVariable::x |
| element: <testLibrary>::@topLevelVariable::x |
| getter2: <testLibraryFragment>::@getter::x |
| setter2: <testLibraryFragment>::@setter::x |
| getters |
| synthetic get x |
| reference: <testLibraryFragment>::@getter::x |
| element: <testLibraryFragment>::@getter::x#element |
| setters |
| synthetic set x |
| reference: <testLibraryFragment>::@setter::x |
| element: <testLibraryFragment>::@setter::x#element |
| formalParameters |
| _x |
| element: <testLibraryFragment>::@setter::x::@parameter::_x#element |
| classes |
| class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| fields |
| synthetic static d |
| firstFragment: <testLibraryFragment>::@class::C::@field::d |
| type: D |
| getter: <testLibraryFragment>::@class::C::@getter::d#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| getters |
| static get d |
| firstFragment: <testLibraryFragment>::@class::C::@getter::d |
| returnType: D |
| class D |
| reference: <testLibrary>::@class::D |
| firstFragment: <testLibraryFragment>::@class::D |
| fields |
| i |
| firstFragment: <testLibraryFragment>::@class::D::@field::i |
| type: int |
| getter: <testLibraryFragment>::@class::D::@getter::i#element |
| setter: <testLibraryFragment>::@class::D::@setter::i#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::D::@constructor::new |
| getters |
| synthetic get i |
| firstFragment: <testLibraryFragment>::@class::D::@getter::i |
| returnType: int |
| setters |
| synthetic set i |
| firstFragment: <testLibraryFragment>::@class::D::@setter::i |
| formalParameters |
| requiredPositional _i |
| type: int |
| returnType: void |
| topLevelVariables |
| hasInitializer x |
| reference: <testLibrary>::@topLevelVariable::x |
| firstFragment: <testLibraryFragment>::@topLevelVariable::x |
| type: int |
| getter: <testLibraryFragment>::@getter::x#element |
| setter: <testLibraryFragment>::@setter::x#element |
| getters |
| synthetic static get x |
| firstFragment: <testLibraryFragment>::@getter::x |
| returnType: int |
| setters |
| synthetic static set x |
| firstFragment: <testLibraryFragment>::@setter::x |
| formalParameters |
| requiredPositional _x |
| type: int |
| returnType: void |
| '''); |
| } |
| |
| test_initializer_relational() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var vLess = 1 < 2; |
| var vLessOrEqual = 1 <= 2; |
| var vGreater = 1 > 2; |
| var vGreaterOrEqual = 1 >= 2; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| hasInitializer vLess @4 |
| reference: <testLibraryFragment>::@topLevelVariable::vLess |
| element: <testLibrary>::@topLevelVariable::vLess |
| getter2: <testLibraryFragment>::@getter::vLess |
| setter2: <testLibraryFragment>::@setter::vLess |
| hasInitializer vLessOrEqual @23 |
| reference: <testLibraryFragment>::@topLevelVariable::vLessOrEqual |
| element: <testLibrary>::@topLevelVariable::vLessOrEqual |
| getter2: <testLibraryFragment>::@getter::vLessOrEqual |
| setter2: <testLibraryFragment>::@setter::vLessOrEqual |
| hasInitializer vGreater @50 |
| reference: <testLibraryFragment>::@topLevelVariable::vGreater |
| element: <testLibrary>::@topLevelVariable::vGreater |
| getter2: <testLibraryFragment>::@getter::vGreater |
| setter2: <testLibraryFragment>::@setter::vGreater |
| hasInitializer vGreaterOrEqual @72 |
| reference: <testLibraryFragment>::@topLevelVariable::vGreaterOrEqual |
| element: <testLibrary>::@topLevelVariable::vGreaterOrEqual |
| getter2: <testLibraryFragment>::@getter::vGreaterOrEqual |
| setter2: <testLibraryFragment>::@setter::vGreaterOrEqual |
| getters |
| synthetic get vLess |
| reference: <testLibraryFragment>::@getter::vLess |
| element: <testLibraryFragment>::@getter::vLess#element |
| synthetic get vLessOrEqual |
| reference: <testLibraryFragment>::@getter::vLessOrEqual |
| element: <testLibraryFragment>::@getter::vLessOrEqual#element |
| synthetic get vGreater |
| reference: <testLibraryFragment>::@getter::vGreater |
| element: <testLibraryFragment>::@getter::vGreater#element |
| synthetic get vGreaterOrEqual |
| reference: <testLibraryFragment>::@getter::vGreaterOrEqual |
| element: <testLibraryFragment>::@getter::vGreaterOrEqual#element |
| setters |
| synthetic set vLess |
| reference: <testLibraryFragment>::@setter::vLess |
| element: <testLibraryFragment>::@setter::vLess#element |
| formalParameters |
| _vLess |
| element: <testLibraryFragment>::@setter::vLess::@parameter::_vLess#element |
| synthetic set vLessOrEqual |
| reference: <testLibraryFragment>::@setter::vLessOrEqual |
| element: <testLibraryFragment>::@setter::vLessOrEqual#element |
| formalParameters |
| _vLessOrEqual |
| element: <testLibraryFragment>::@setter::vLessOrEqual::@parameter::_vLessOrEqual#element |
| synthetic set vGreater |
| reference: <testLibraryFragment>::@setter::vGreater |
| element: <testLibraryFragment>::@setter::vGreater#element |
| formalParameters |
| _vGreater |
| element: <testLibraryFragment>::@setter::vGreater::@parameter::_vGreater#element |
| synthetic set vGreaterOrEqual |
| reference: <testLibraryFragment>::@setter::vGreaterOrEqual |
| element: <testLibraryFragment>::@setter::vGreaterOrEqual#element |
| formalParameters |
| _vGreaterOrEqual |
| element: <testLibraryFragment>::@setter::vGreaterOrEqual::@parameter::_vGreaterOrEqual#element |
| topLevelVariables |
| hasInitializer vLess |
| reference: <testLibrary>::@topLevelVariable::vLess |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vLess |
| type: bool |
| getter: <testLibraryFragment>::@getter::vLess#element |
| setter: <testLibraryFragment>::@setter::vLess#element |
| hasInitializer vLessOrEqual |
| reference: <testLibrary>::@topLevelVariable::vLessOrEqual |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vLessOrEqual |
| type: bool |
| getter: <testLibraryFragment>::@getter::vLessOrEqual#element |
| setter: <testLibraryFragment>::@setter::vLessOrEqual#element |
| hasInitializer vGreater |
| reference: <testLibrary>::@topLevelVariable::vGreater |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vGreater |
| type: bool |
| getter: <testLibraryFragment>::@getter::vGreater#element |
| setter: <testLibraryFragment>::@setter::vGreater#element |
| hasInitializer vGreaterOrEqual |
| reference: <testLibrary>::@topLevelVariable::vGreaterOrEqual |
| firstFragment: <testLibraryFragment>::@topLevelVariable::vGreaterOrEqual |
| type: bool |
| getter: <testLibraryFragment>::@getter::vGreaterOrEqual#element |
| setter: <testLibraryFragment>::@setter::vGreaterOrEqual#element |
| getters |
| synthetic static get vLess |
| firstFragment: <testLibraryFragment>::@getter::vLess |
| returnType: bool |
| synthetic static get vLessOrEqual |
| firstFragment: <testLibraryFragment>::@getter::vLessOrEqual |
| returnType: bool |
| synthetic static get vGreater |
| firstFragment: <testLibraryFragment>::@getter::vGreater |
| returnType: bool |
| synthetic static get vGreaterOrEqual |
| firstFragment: <testLibraryFragment>::@getter::vGreaterOrEqual |
| returnType: bool |
| setters |
| synthetic static set vLess |
| firstFragment: <testLibraryFragment>::@setter::vLess |
| formalParameters |
| requiredPositional _vLess |
| type: bool |
| returnType: void |
| synthetic static set vLessOrEqual |
| firstFragment: <testLibraryFragment>::@setter::vLessOrEqual |
| formalParameters |
| requiredPositional _vLessOrEqual |
| type: bool |
| returnType: void |
| synthetic static set vGreater |
| firstFragment: <testLibraryFragment>::@setter::vGreater |
| formalParameters |
| requiredPositional _vGreater |
| type: bool |
| returnType: void |
| synthetic static set vGreaterOrEqual |
| firstFragment: <testLibraryFragment>::@setter::vGreaterOrEqual |
| formalParameters |
| requiredPositional _vGreaterOrEqual |
| type: bool |
| returnType: void |
| '''); |
| } |
| |
| @skippedTest |
| test_initializer_throw() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var V = throw 42; |
| '''); |
| checkElementText(library, r''' |
| Null V; |
| '''); |
| } |
| |
| test_instanceField_error_noSetterParameter() async { |
| var library = await _encodeDecodeLibrary(r''' |
| abstract class A { |
| int x; |
| } |
| class B implements A { |
| set x() {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @15 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| fields |
| x @25 |
| reference: <testLibraryFragment>::@class::A::@field::x |
| element: <testLibraryFragment>::@class::A::@field::x#element |
| getter2: <testLibraryFragment>::@class::A::@getter::x |
| setter2: <testLibraryFragment>::@class::A::@setter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| getters |
| synthetic get x |
| reference: <testLibraryFragment>::@class::A::@getter::x |
| element: <testLibraryFragment>::@class::A::@getter::x#element |
| setters |
| synthetic set x |
| reference: <testLibraryFragment>::@class::A::@setter::x |
| element: <testLibraryFragment>::@class::A::@setter::x#element |
| formalParameters |
| _x |
| element: <testLibraryFragment>::@class::A::@setter::x::@parameter::_x#element |
| class B @36 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::B::@field::x |
| element: <testLibraryFragment>::@class::B::@field::x#element |
| setter2: <testLibraryFragment>::@class::B::@setter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| setters |
| set x @59 |
| reference: <testLibraryFragment>::@class::B::@setter::x |
| element: <testLibraryFragment>::@class::B::@setter::x#element |
| classes |
| abstract class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| fields |
| x |
| firstFragment: <testLibraryFragment>::@class::A::@field::x |
| type: int |
| getter: <testLibraryFragment>::@class::A::@getter::x#element |
| setter: <testLibraryFragment>::@class::A::@setter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| getters |
| synthetic get x |
| firstFragment: <testLibraryFragment>::@class::A::@getter::x |
| returnType: int |
| setters |
| synthetic set x |
| firstFragment: <testLibraryFragment>::@class::A::@setter::x |
| formalParameters |
| requiredPositional _x |
| type: int |
| returnType: void |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| interfaces |
| A |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::B::@field::x |
| type: dynamic |
| setter: <testLibraryFragment>::@class::B::@setter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| setters |
| set x |
| firstFragment: <testLibraryFragment>::@class::B::@setter::x |
| returnType: void |
| '''); |
| } |
| |
| test_instanceField_fieldFormal() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A { |
| var f = 0; |
| A([this.f = 'hello']); |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| fields |
| hasInitializer f @16 |
| reference: <testLibraryFragment>::@class::A::@field::f |
| element: <testLibraryFragment>::@class::A::@field::f#element |
| getter2: <testLibraryFragment>::@class::A::@getter::f |
| setter2: <testLibraryFragment>::@class::A::@setter::f |
| constructors |
| new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| typeNameOffset: 25 |
| formalParameters |
| default this.f @33 |
| element: <testLibraryFragment>::@class::A::@constructor::new::@parameter::f#element |
| initializer: expression_0 |
| SimpleStringLiteral |
| literal: 'hello' @37 |
| getters |
| synthetic get f |
| reference: <testLibraryFragment>::@class::A::@getter::f |
| element: <testLibraryFragment>::@class::A::@getter::f#element |
| setters |
| synthetic set f |
| reference: <testLibraryFragment>::@class::A::@setter::f |
| element: <testLibraryFragment>::@class::A::@setter::f#element |
| formalParameters |
| _f |
| element: <testLibraryFragment>::@class::A::@setter::f::@parameter::_f#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| fields |
| hasInitializer f |
| firstFragment: <testLibraryFragment>::@class::A::@field::f |
| type: int |
| getter: <testLibraryFragment>::@class::A::@getter::f#element |
| setter: <testLibraryFragment>::@class::A::@setter::f#element |
| constructors |
| new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| formalParameters |
| optionalPositional final hasImplicitType f |
| type: int |
| constantInitializer |
| expression: expression_0 |
| getters |
| synthetic get f |
| firstFragment: <testLibraryFragment>::@class::A::@getter::f |
| returnType: int |
| setters |
| synthetic set f |
| firstFragment: <testLibraryFragment>::@class::A::@setter::f |
| formalParameters |
| requiredPositional _f |
| type: int |
| returnType: void |
| '''); |
| } |
| |
| test_instanceField_fromField() async { |
| var library = await _encodeDecodeLibrary(r''' |
| abstract class A { |
| int x; |
| int y; |
| int z; |
| } |
| class B implements A { |
| var x; |
| get y => null; |
| set z(_) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @15 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| fields |
| x @25 |
| reference: <testLibraryFragment>::@class::A::@field::x |
| element: <testLibraryFragment>::@class::A::@field::x#element |
| getter2: <testLibraryFragment>::@class::A::@getter::x |
| setter2: <testLibraryFragment>::@class::A::@setter::x |
| y @34 |
| reference: <testLibraryFragment>::@class::A::@field::y |
| element: <testLibraryFragment>::@class::A::@field::y#element |
| getter2: <testLibraryFragment>::@class::A::@getter::y |
| setter2: <testLibraryFragment>::@class::A::@setter::y |
| z @43 |
| reference: <testLibraryFragment>::@class::A::@field::z |
| element: <testLibraryFragment>::@class::A::@field::z#element |
| getter2: <testLibraryFragment>::@class::A::@getter::z |
| setter2: <testLibraryFragment>::@class::A::@setter::z |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| getters |
| synthetic get x |
| reference: <testLibraryFragment>::@class::A::@getter::x |
| element: <testLibraryFragment>::@class::A::@getter::x#element |
| synthetic get y |
| reference: <testLibraryFragment>::@class::A::@getter::y |
| element: <testLibraryFragment>::@class::A::@getter::y#element |
| synthetic get z |
| reference: <testLibraryFragment>::@class::A::@getter::z |
| element: <testLibraryFragment>::@class::A::@getter::z#element |
| setters |
| synthetic set x |
| reference: <testLibraryFragment>::@class::A::@setter::x |
| element: <testLibraryFragment>::@class::A::@setter::x#element |
| formalParameters |
| _x |
| element: <testLibraryFragment>::@class::A::@setter::x::@parameter::_x#element |
| synthetic set y |
| reference: <testLibraryFragment>::@class::A::@setter::y |
| element: <testLibraryFragment>::@class::A::@setter::y#element |
| formalParameters |
| _y |
| element: <testLibraryFragment>::@class::A::@setter::y::@parameter::_y#element |
| synthetic set z |
| reference: <testLibraryFragment>::@class::A::@setter::z |
| element: <testLibraryFragment>::@class::A::@setter::z#element |
| formalParameters |
| _z |
| element: <testLibraryFragment>::@class::A::@setter::z::@parameter::_z#element |
| class B @54 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| fields |
| x @77 |
| reference: <testLibraryFragment>::@class::B::@field::x |
| element: <testLibraryFragment>::@class::B::@field::x#element |
| getter2: <testLibraryFragment>::@class::B::@getter::x |
| setter2: <testLibraryFragment>::@class::B::@setter::x |
| synthetic y |
| reference: <testLibraryFragment>::@class::B::@field::y |
| element: <testLibraryFragment>::@class::B::@field::y#element |
| getter2: <testLibraryFragment>::@class::B::@getter::y |
| synthetic z |
| reference: <testLibraryFragment>::@class::B::@field::z |
| element: <testLibraryFragment>::@class::B::@field::z#element |
| setter2: <testLibraryFragment>::@class::B::@setter::z |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| getters |
| synthetic get x |
| reference: <testLibraryFragment>::@class::B::@getter::x |
| element: <testLibraryFragment>::@class::B::@getter::x#element |
| get y @86 |
| reference: <testLibraryFragment>::@class::B::@getter::y |
| element: <testLibraryFragment>::@class::B::@getter::y#element |
| setters |
| synthetic set x |
| reference: <testLibraryFragment>::@class::B::@setter::x |
| element: <testLibraryFragment>::@class::B::@setter::x#element |
| formalParameters |
| _x |
| element: <testLibraryFragment>::@class::B::@setter::x::@parameter::_x#element |
| set z @103 |
| reference: <testLibraryFragment>::@class::B::@setter::z |
| element: <testLibraryFragment>::@class::B::@setter::z#element |
| formalParameters |
| _ @105 |
| element: <testLibraryFragment>::@class::B::@setter::z::@parameter::_#element |
| classes |
| abstract class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| fields |
| x |
| firstFragment: <testLibraryFragment>::@class::A::@field::x |
| type: int |
| getter: <testLibraryFragment>::@class::A::@getter::x#element |
| setter: <testLibraryFragment>::@class::A::@setter::x#element |
| y |
| firstFragment: <testLibraryFragment>::@class::A::@field::y |
| type: int |
| getter: <testLibraryFragment>::@class::A::@getter::y#element |
| setter: <testLibraryFragment>::@class::A::@setter::y#element |
| z |
| firstFragment: <testLibraryFragment>::@class::A::@field::z |
| type: int |
| getter: <testLibraryFragment>::@class::A::@getter::z#element |
| setter: <testLibraryFragment>::@class::A::@setter::z#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| getters |
| synthetic get x |
| firstFragment: <testLibraryFragment>::@class::A::@getter::x |
| returnType: int |
| synthetic get y |
| firstFragment: <testLibraryFragment>::@class::A::@getter::y |
| returnType: int |
| synthetic get z |
| firstFragment: <testLibraryFragment>::@class::A::@getter::z |
| returnType: int |
| setters |
| synthetic set x |
| firstFragment: <testLibraryFragment>::@class::A::@setter::x |
| formalParameters |
| requiredPositional _x |
| type: int |
| returnType: void |
| synthetic set y |
| firstFragment: <testLibraryFragment>::@class::A::@setter::y |
| formalParameters |
| requiredPositional _y |
| type: int |
| returnType: void |
| synthetic set z |
| firstFragment: <testLibraryFragment>::@class::A::@setter::z |
| formalParameters |
| requiredPositional _z |
| type: int |
| returnType: void |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| interfaces |
| A |
| fields |
| x |
| firstFragment: <testLibraryFragment>::@class::B::@field::x |
| type: int |
| getter: <testLibraryFragment>::@class::B::@getter::x#element |
| setter: <testLibraryFragment>::@class::B::@setter::x#element |
| synthetic y |
| firstFragment: <testLibraryFragment>::@class::B::@field::y |
| type: int |
| getter: <testLibraryFragment>::@class::B::@getter::y#element |
| synthetic z |
| firstFragment: <testLibraryFragment>::@class::B::@field::z |
| type: int |
| setter: <testLibraryFragment>::@class::B::@setter::z#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| getters |
| synthetic get x |
| firstFragment: <testLibraryFragment>::@class::B::@getter::x |
| returnType: int |
| get y |
| firstFragment: <testLibraryFragment>::@class::B::@getter::y |
| returnType: int |
| setters |
| synthetic set x |
| firstFragment: <testLibraryFragment>::@class::B::@setter::x |
| formalParameters |
| requiredPositional _x |
| type: int |
| returnType: void |
| set z |
| firstFragment: <testLibraryFragment>::@class::B::@setter::z |
| formalParameters |
| requiredPositional hasImplicitType _ |
| type: int |
| returnType: void |
| '''); |
| } |
| |
| test_instanceField_fromField_explicitDynamic() async { |
| var library = await _encodeDecodeLibrary(r''' |
| abstract class A { |
| dynamic x; |
| } |
| class B implements A { |
| var x = 1; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @15 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| fields |
| x @29 |
| reference: <testLibraryFragment>::@class::A::@field::x |
| element: <testLibraryFragment>::@class::A::@field::x#element |
| getter2: <testLibraryFragment>::@class::A::@getter::x |
| setter2: <testLibraryFragment>::@class::A::@setter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| getters |
| synthetic get x |
| reference: <testLibraryFragment>::@class::A::@getter::x |
| element: <testLibraryFragment>::@class::A::@getter::x#element |
| setters |
| synthetic set x |
| reference: <testLibraryFragment>::@class::A::@setter::x |
| element: <testLibraryFragment>::@class::A::@setter::x#element |
| formalParameters |
| _x |
| element: <testLibraryFragment>::@class::A::@setter::x::@parameter::_x#element |
| class B @40 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| fields |
| hasInitializer x @63 |
| reference: <testLibraryFragment>::@class::B::@field::x |
| element: <testLibraryFragment>::@class::B::@field::x#element |
| getter2: <testLibraryFragment>::@class::B::@getter::x |
| setter2: <testLibraryFragment>::@class::B::@setter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| getters |
| synthetic get x |
| reference: <testLibraryFragment>::@class::B::@getter::x |
| element: <testLibraryFragment>::@class::B::@getter::x#element |
| setters |
| synthetic set x |
| reference: <testLibraryFragment>::@class::B::@setter::x |
| element: <testLibraryFragment>::@class::B::@setter::x#element |
| formalParameters |
| _x |
| element: <testLibraryFragment>::@class::B::@setter::x::@parameter::_x#element |
| classes |
| abstract class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| fields |
| x |
| firstFragment: <testLibraryFragment>::@class::A::@field::x |
| type: dynamic |
| getter: <testLibraryFragment>::@class::A::@getter::x#element |
| setter: <testLibraryFragment>::@class::A::@setter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| getters |
| synthetic get x |
| firstFragment: <testLibraryFragment>::@class::A::@getter::x |
| returnType: dynamic |
| setters |
| synthetic set x |
| firstFragment: <testLibraryFragment>::@class::A::@setter::x |
| formalParameters |
| requiredPositional _x |
| type: dynamic |
| returnType: void |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| interfaces |
| A |
| fields |
| hasInitializer x |
| firstFragment: <testLibraryFragment>::@class::B::@field::x |
| type: dynamic |
| getter: <testLibraryFragment>::@class::B::@getter::x#element |
| setter: <testLibraryFragment>::@class::B::@setter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| getters |
| synthetic get x |
| firstFragment: <testLibraryFragment>::@class::B::@getter::x |
| returnType: dynamic |
| setters |
| synthetic set x |
| firstFragment: <testLibraryFragment>::@class::B::@setter::x |
| formalParameters |
| requiredPositional _x |
| type: dynamic |
| returnType: void |
| '''); |
| } |
| |
| test_instanceField_fromField_generic() async { |
| var library = await _encodeDecodeLibrary(r''' |
| abstract class A<E> { |
| E x; |
| E y; |
| E z; |
| } |
| class B<T> implements A<T> { |
| var x; |
| get y => null; |
| set z(_) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @15 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| typeParameters |
| E @17 |
| element: E@17 |
| fields |
| x @26 |
| reference: <testLibraryFragment>::@class::A::@field::x |
| element: <testLibraryFragment>::@class::A::@field::x#element |
| getter2: <testLibraryFragment>::@class::A::@getter::x |
| setter2: <testLibraryFragment>::@class::A::@setter::x |
| y @33 |
| reference: <testLibraryFragment>::@class::A::@field::y |
| element: <testLibraryFragment>::@class::A::@field::y#element |
| getter2: <testLibraryFragment>::@class::A::@getter::y |
| setter2: <testLibraryFragment>::@class::A::@setter::y |
| z @40 |
| reference: <testLibraryFragment>::@class::A::@field::z |
| element: <testLibraryFragment>::@class::A::@field::z#element |
| getter2: <testLibraryFragment>::@class::A::@getter::z |
| setter2: <testLibraryFragment>::@class::A::@setter::z |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| getters |
| synthetic get x |
| reference: <testLibraryFragment>::@class::A::@getter::x |
| element: <testLibraryFragment>::@class::A::@getter::x#element |
| synthetic get y |
| reference: <testLibraryFragment>::@class::A::@getter::y |
| element: <testLibraryFragment>::@class::A::@getter::y#element |
| synthetic get z |
| reference: <testLibraryFragment>::@class::A::@getter::z |
| element: <testLibraryFragment>::@class::A::@getter::z#element |
| setters |
| synthetic set x |
| reference: <testLibraryFragment>::@class::A::@setter::x |
| element: <testLibraryFragment>::@class::A::@setter::x#element |
| formalParameters |
| _x |
| element: <testLibraryFragment>::@class::A::@setter::x::@parameter::_x#element |
| synthetic set y |
| reference: <testLibraryFragment>::@class::A::@setter::y |
| element: <testLibraryFragment>::@class::A::@setter::y#element |
| formalParameters |
| _y |
| element: <testLibraryFragment>::@class::A::@setter::y::@parameter::_y#element |
| synthetic set z |
| reference: <testLibraryFragment>::@class::A::@setter::z |
| element: <testLibraryFragment>::@class::A::@setter::z#element |
| formalParameters |
| _z |
| element: <testLibraryFragment>::@class::A::@setter::z::@parameter::_z#element |
| class B @51 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| typeParameters |
| T @53 |
| element: T@53 |
| fields |
| x @80 |
| reference: <testLibraryFragment>::@class::B::@field::x |
| element: <testLibraryFragment>::@class::B::@field::x#element |
| getter2: <testLibraryFragment>::@class::B::@getter::x |
| setter2: <testLibraryFragment>::@class::B::@setter::x |
| synthetic y |
| reference: <testLibraryFragment>::@class::B::@field::y |
| element: <testLibraryFragment>::@class::B::@field::y#element |
| getter2: <testLibraryFragment>::@class::B::@getter::y |
| synthetic z |
| reference: <testLibraryFragment>::@class::B::@field::z |
| element: <testLibraryFragment>::@class::B::@field::z#element |
| setter2: <testLibraryFragment>::@class::B::@setter::z |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| getters |
| synthetic get x |
| reference: <testLibraryFragment>::@class::B::@getter::x |
| element: <testLibraryFragment>::@class::B::@getter::x#element |
| get y @89 |
| reference: <testLibraryFragment>::@class::B::@getter::y |
| element: <testLibraryFragment>::@class::B::@getter::y#element |
| setters |
| synthetic set x |
| reference: <testLibraryFragment>::@class::B::@setter::x |
| element: <testLibraryFragment>::@class::B::@setter::x#element |
| formalParameters |
| _x |
| element: <testLibraryFragment>::@class::B::@setter::x::@parameter::_x#element |
| set z @106 |
| reference: <testLibraryFragment>::@class::B::@setter::z |
| element: <testLibraryFragment>::@class::B::@setter::z#element |
| formalParameters |
| _ @108 |
| element: <testLibraryFragment>::@class::B::@setter::z::@parameter::_#element |
| classes |
| abstract class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| typeParameters |
| E |
| fields |
| x |
| firstFragment: <testLibraryFragment>::@class::A::@field::x |
| hasEnclosingTypeParameterReference: true |
| type: E |
| getter: <testLibraryFragment>::@class::A::@getter::x#element |
| setter: <testLibraryFragment>::@class::A::@setter::x#element |
| y |
| firstFragment: <testLibraryFragment>::@class::A::@field::y |
| hasEnclosingTypeParameterReference: true |
| type: E |
| getter: <testLibraryFragment>::@class::A::@getter::y#element |
| setter: <testLibraryFragment>::@class::A::@setter::y#element |
| z |
| firstFragment: <testLibraryFragment>::@class::A::@field::z |
| hasEnclosingTypeParameterReference: true |
| type: E |
| getter: <testLibraryFragment>::@class::A::@getter::z#element |
| setter: <testLibraryFragment>::@class::A::@setter::z#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| getters |
| synthetic get x |
| firstFragment: <testLibraryFragment>::@class::A::@getter::x |
| hasEnclosingTypeParameterReference: true |
| returnType: E |
| synthetic get y |
| firstFragment: <testLibraryFragment>::@class::A::@getter::y |
| hasEnclosingTypeParameterReference: true |
| returnType: E |
| synthetic get z |
| firstFragment: <testLibraryFragment>::@class::A::@getter::z |
| hasEnclosingTypeParameterReference: true |
| returnType: E |
| setters |
| synthetic set x |
| firstFragment: <testLibraryFragment>::@class::A::@setter::x |
| hasEnclosingTypeParameterReference: true |
| formalParameters |
| requiredPositional _x |
| type: E |
| returnType: void |
| synthetic set y |
| firstFragment: <testLibraryFragment>::@class::A::@setter::y |
| hasEnclosingTypeParameterReference: true |
| formalParameters |
| requiredPositional _y |
| type: E |
| returnType: void |
| synthetic set z |
| firstFragment: <testLibraryFragment>::@class::A::@setter::z |
| hasEnclosingTypeParameterReference: true |
| formalParameters |
| requiredPositional _z |
| type: E |
| returnType: void |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| typeParameters |
| T |
| interfaces |
| A<T> |
| fields |
| x |
| firstFragment: <testLibraryFragment>::@class::B::@field::x |
| hasEnclosingTypeParameterReference: true |
| type: T |
| getter: <testLibraryFragment>::@class::B::@getter::x#element |
| setter: <testLibraryFragment>::@class::B::@setter::x#element |
| synthetic y |
| firstFragment: <testLibraryFragment>::@class::B::@field::y |
| hasEnclosingTypeParameterReference: true |
| type: T |
| getter: <testLibraryFragment>::@class::B::@getter::y#element |
| synthetic z |
| firstFragment: <testLibraryFragment>::@class::B::@field::z |
| hasEnclosingTypeParameterReference: true |
| type: T |
| setter: <testLibraryFragment>::@class::B::@setter::z#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| getters |
| synthetic get x |
| firstFragment: <testLibraryFragment>::@class::B::@getter::x |
| hasEnclosingTypeParameterReference: true |
| returnType: T |
| get y |
| firstFragment: <testLibraryFragment>::@class::B::@getter::y |
| hasEnclosingTypeParameterReference: true |
| returnType: T |
| setters |
| synthetic set x |
| firstFragment: <testLibraryFragment>::@class::B::@setter::x |
| hasEnclosingTypeParameterReference: true |
| formalParameters |
| requiredPositional _x |
| type: T |
| returnType: void |
| set z |
| firstFragment: <testLibraryFragment>::@class::B::@setter::z |
| hasEnclosingTypeParameterReference: true |
| formalParameters |
| requiredPositional hasImplicitType _ |
| type: T |
| returnType: void |
| '''); |
| } |
| |
| test_instanceField_fromField_implicitDynamic() async { |
| var library = await _encodeDecodeLibrary(r''' |
| abstract class A { |
| var x; |
| } |
| class B implements A { |
| var x = 1; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @15 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| fields |
| x @25 |
| reference: <testLibraryFragment>::@class::A::@field::x |
| element: <testLibraryFragment>::@class::A::@field::x#element |
| getter2: <testLibraryFragment>::@class::A::@getter::x |
| setter2: <testLibraryFragment>::@class::A::@setter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| getters |
| synthetic get x |
| reference: <testLibraryFragment>::@class::A::@getter::x |
| element: <testLibraryFragment>::@class::A::@getter::x#element |
| setters |
| synthetic set x |
| reference: <testLibraryFragment>::@class::A::@setter::x |
| element: <testLibraryFragment>::@class::A::@setter::x#element |
| formalParameters |
| _x |
| element: <testLibraryFragment>::@class::A::@setter::x::@parameter::_x#element |
| class B @36 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| fields |
| hasInitializer x @59 |
| reference: <testLibraryFragment>::@class::B::@field::x |
| element: <testLibraryFragment>::@class::B::@field::x#element |
| getter2: <testLibraryFragment>::@class::B::@getter::x |
| setter2: <testLibraryFragment>::@class::B::@setter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| getters |
| synthetic get x |
| reference: <testLibraryFragment>::@class::B::@getter::x |
| element: <testLibraryFragment>::@class::B::@getter::x#element |
| setters |
| synthetic set x |
| reference: <testLibraryFragment>::@class::B::@setter::x |
| element: <testLibraryFragment>::@class::B::@setter::x#element |
| formalParameters |
| _x |
| element: <testLibraryFragment>::@class::B::@setter::x::@parameter::_x#element |
| classes |
| abstract class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| fields |
| x |
| firstFragment: <testLibraryFragment>::@class::A::@field::x |
| type: dynamic |
| getter: <testLibraryFragment>::@class::A::@getter::x#element |
| setter: <testLibraryFragment>::@class::A::@setter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| getters |
| synthetic get x |
| firstFragment: <testLibraryFragment>::@class::A::@getter::x |
| returnType: dynamic |
| setters |
| synthetic set x |
| firstFragment: <testLibraryFragment>::@class::A::@setter::x |
| formalParameters |
| requiredPositional _x |
| type: dynamic |
| returnType: void |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| interfaces |
| A |
| fields |
| hasInitializer x |
| firstFragment: <testLibraryFragment>::@class::B::@field::x |
| type: dynamic |
| getter: <testLibraryFragment>::@class::B::@getter::x#element |
| setter: <testLibraryFragment>::@class::B::@setter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| getters |
| synthetic get x |
| firstFragment: <testLibraryFragment>::@class::B::@getter::x |
| returnType: dynamic |
| setters |
| synthetic set x |
| firstFragment: <testLibraryFragment>::@class::B::@setter::x |
| formalParameters |
| requiredPositional _x |
| type: dynamic |
| returnType: void |
| '''); |
| } |
| |
| test_instanceField_fromField_narrowType() async { |
| var library = await _encodeDecodeLibrary(r''' |
| abstract class A { |
| num x; |
| } |
| class B implements A { |
| var x = 1; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @15 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| fields |
| x @25 |
| reference: <testLibraryFragment>::@class::A::@field::x |
| element: <testLibraryFragment>::@class::A::@field::x#element |
| getter2: <testLibraryFragment>::@class::A::@getter::x |
| setter2: <testLibraryFragment>::@class::A::@setter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| getters |
| synthetic get x |
| reference: <testLibraryFragment>::@class::A::@getter::x |
| element: <testLibraryFragment>::@class::A::@getter::x#element |
| setters |
| synthetic set x |
| reference: <testLibraryFragment>::@class::A::@setter::x |
| element: <testLibraryFragment>::@class::A::@setter::x#element |
| formalParameters |
| _x |
| element: <testLibraryFragment>::@class::A::@setter::x::@parameter::_x#element |
| class B @36 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| fields |
| hasInitializer x @59 |
| reference: <testLibraryFragment>::@class::B::@field::x |
| element: <testLibraryFragment>::@class::B::@field::x#element |
| getter2: <testLibraryFragment>::@class::B::@getter::x |
| setter2: <testLibraryFragment>::@class::B::@setter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| getters |
| synthetic get x |
| reference: <testLibraryFragment>::@class::B::@getter::x |
| element: <testLibraryFragment>::@class::B::@getter::x#element |
| setters |
| synthetic set x |
| reference: <testLibraryFragment>::@class::B::@setter::x |
| element: <testLibraryFragment>::@class::B::@setter::x#element |
| formalParameters |
| _x |
| element: <testLibraryFragment>::@class::B::@setter::x::@parameter::_x#element |
| classes |
| abstract class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| fields |
| x |
| firstFragment: <testLibraryFragment>::@class::A::@field::x |
| type: num |
| getter: <testLibraryFragment>::@class::A::@getter::x#element |
| setter: <testLibraryFragment>::@class::A::@setter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| getters |
| synthetic get x |
| firstFragment: <testLibraryFragment>::@class::A::@getter::x |
| returnType: num |
| setters |
| synthetic set x |
| firstFragment: <testLibraryFragment>::@class::A::@setter::x |
| formalParameters |
| requiredPositional _x |
| type: num |
| returnType: void |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| interfaces |
| A |
| fields |
| hasInitializer x |
| firstFragment: <testLibraryFragment>::@class::B::@field::x |
| type: num |
| getter: <testLibraryFragment>::@class::B::@getter::x#element |
| setter: <testLibraryFragment>::@class::B::@setter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| getters |
| synthetic get x |
| firstFragment: <testLibraryFragment>::@class::B::@getter::x |
| returnType: num |
| setters |
| synthetic set x |
| firstFragment: <testLibraryFragment>::@class::B::@setter::x |
| formalParameters |
| requiredPositional _x |
| type: num |
| returnType: void |
| '''); |
| } |
| |
| test_instanceField_fromGetter() async { |
| var library = await _encodeDecodeLibrary(r''' |
| abstract class A { |
| int get x; |
| int get y; |
| int get z; |
| } |
| class B implements A { |
| var x; |
| get y => null; |
| set z(_) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @15 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::A::@field::x |
| element: <testLibraryFragment>::@class::A::@field::x#element |
| getter2: <testLibraryFragment>::@class::A::@getter::x |
| synthetic y |
| reference: <testLibraryFragment>::@class::A::@field::y |
| element: <testLibraryFragment>::@class::A::@field::y#element |
| getter2: <testLibraryFragment>::@class::A::@getter::y |
| synthetic z |
| reference: <testLibraryFragment>::@class::A::@field::z |
| element: <testLibraryFragment>::@class::A::@field::z#element |
| getter2: <testLibraryFragment>::@class::A::@getter::z |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| getters |
| get x @29 |
| reference: <testLibraryFragment>::@class::A::@getter::x |
| element: <testLibraryFragment>::@class::A::@getter::x#element |
| get y @42 |
| reference: <testLibraryFragment>::@class::A::@getter::y |
| element: <testLibraryFragment>::@class::A::@getter::y#element |
| get z @55 |
| reference: <testLibraryFragment>::@class::A::@getter::z |
| element: <testLibraryFragment>::@class::A::@getter::z#element |
| class B @66 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| fields |
| x @89 |
| reference: <testLibraryFragment>::@class::B::@field::x |
| element: <testLibraryFragment>::@class::B::@field::x#element |
| getter2: <testLibraryFragment>::@class::B::@getter::x |
| setter2: <testLibraryFragment>::@class::B::@setter::x |
| synthetic y |
| reference: <testLibraryFragment>::@class::B::@field::y |
| element: <testLibraryFragment>::@class::B::@field::y#element |
| getter2: <testLibraryFragment>::@class::B::@getter::y |
| synthetic z |
| reference: <testLibraryFragment>::@class::B::@field::z |
| element: <testLibraryFragment>::@class::B::@field::z#element |
| setter2: <testLibraryFragment>::@class::B::@setter::z |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| getters |
| synthetic get x |
| reference: <testLibraryFragment>::@class::B::@getter::x |
| element: <testLibraryFragment>::@class::B::@getter::x#element |
| get y @98 |
| reference: <testLibraryFragment>::@class::B::@getter::y |
| element: <testLibraryFragment>::@class::B::@getter::y#element |
| setters |
| synthetic set x |
| reference: <testLibraryFragment>::@class::B::@setter::x |
| element: <testLibraryFragment>::@class::B::@setter::x#element |
| formalParameters |
| _x |
| element: <testLibraryFragment>::@class::B::@setter::x::@parameter::_x#element |
| set z @115 |
| reference: <testLibraryFragment>::@class::B::@setter::z |
| element: <testLibraryFragment>::@class::B::@setter::z#element |
| formalParameters |
| _ @117 |
| element: <testLibraryFragment>::@class::B::@setter::z::@parameter::_#element |
| classes |
| abstract class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::A::@field::x |
| type: int |
| getter: <testLibraryFragment>::@class::A::@getter::x#element |
| synthetic y |
| firstFragment: <testLibraryFragment>::@class::A::@field::y |
| type: int |
| getter: <testLibraryFragment>::@class::A::@getter::y#element |
| synthetic z |
| firstFragment: <testLibraryFragment>::@class::A::@field::z |
| type: int |
| getter: <testLibraryFragment>::@class::A::@getter::z#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| getters |
| abstract get x |
| firstFragment: <testLibraryFragment>::@class::A::@getter::x |
| returnType: int |
| abstract get y |
| firstFragment: <testLibraryFragment>::@class::A::@getter::y |
| returnType: int |
| abstract get z |
| firstFragment: <testLibraryFragment>::@class::A::@getter::z |
| returnType: int |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| interfaces |
| A |
| fields |
| x |
| firstFragment: <testLibraryFragment>::@class::B::@field::x |
| type: int |
| getter: <testLibraryFragment>::@class::B::@getter::x#element |
| setter: <testLibraryFragment>::@class::B::@setter::x#element |
| synthetic y |
| firstFragment: <testLibraryFragment>::@class::B::@field::y |
| type: int |
| getter: <testLibraryFragment>::@class::B::@getter::y#element |
| synthetic z |
| firstFragment: <testLibraryFragment>::@class::B::@field::z |
| type: int |
| setter: <testLibraryFragment>::@class::B::@setter::z#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| getters |
| synthetic get x |
| firstFragment: <testLibraryFragment>::@class::B::@getter::x |
| returnType: int |
| get y |
| firstFragment: <testLibraryFragment>::@class::B::@getter::y |
| returnType: int |
| setters |
| synthetic set x |
| firstFragment: <testLibraryFragment>::@class::B::@setter::x |
| formalParameters |
| requiredPositional _x |
| type: int |
| returnType: void |
| set z |
| firstFragment: <testLibraryFragment>::@class::B::@setter::z |
| formalParameters |
| requiredPositional hasImplicitType _ |
| type: int |
| returnType: void |
| '''); |
| } |
| |
| test_instanceField_fromGetter_generic() async { |
| var library = await _encodeDecodeLibrary(r''' |
| abstract class A<E> { |
| E get x; |
| E get y; |
| E get z; |
| } |
| class B<T> implements A<T> { |
| var x; |
| get y => null; |
| set z(_) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @15 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| typeParameters |
| E @17 |
| element: E@17 |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::A::@field::x |
| element: <testLibraryFragment>::@class::A::@field::x#element |
| getter2: <testLibraryFragment>::@class::A::@getter::x |
| synthetic y |
| reference: <testLibraryFragment>::@class::A::@field::y |
| element: <testLibraryFragment>::@class::A::@field::y#element |
| getter2: <testLibraryFragment>::@class::A::@getter::y |
| synthetic z |
| reference: <testLibraryFragment>::@class::A::@field::z |
| element: <testLibraryFragment>::@class::A::@field::z#element |
| getter2: <testLibraryFragment>::@class::A::@getter::z |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| getters |
| get x @30 |
| reference: <testLibraryFragment>::@class::A::@getter::x |
| element: <testLibraryFragment>::@class::A::@getter::x#element |
| get y @41 |
| reference: <testLibraryFragment>::@class::A::@getter::y |
| element: <testLibraryFragment>::@class::A::@getter::y#element |
| get z @52 |
| reference: <testLibraryFragment>::@class::A::@getter::z |
| element: <testLibraryFragment>::@class::A::@getter::z#element |
| class B @63 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| typeParameters |
| T @65 |
| element: T@65 |
| fields |
| x @92 |
| reference: <testLibraryFragment>::@class::B::@field::x |
| element: <testLibraryFragment>::@class::B::@field::x#element |
| getter2: <testLibraryFragment>::@class::B::@getter::x |
| setter2: <testLibraryFragment>::@class::B::@setter::x |
| synthetic y |
| reference: <testLibraryFragment>::@class::B::@field::y |
| element: <testLibraryFragment>::@class::B::@field::y#element |
| getter2: <testLibraryFragment>::@class::B::@getter::y |
| synthetic z |
| reference: <testLibraryFragment>::@class::B::@field::z |
| element: <testLibraryFragment>::@class::B::@field::z#element |
| setter2: <testLibraryFragment>::@class::B::@setter::z |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| getters |
| synthetic get x |
| reference: <testLibraryFragment>::@class::B::@getter::x |
| element: <testLibraryFragment>::@class::B::@getter::x#element |
| get y @101 |
| reference: <testLibraryFragment>::@class::B::@getter::y |
| element: <testLibraryFragment>::@class::B::@getter::y#element |
| setters |
| synthetic set x |
| reference: <testLibraryFragment>::@class::B::@setter::x |
| element: <testLibraryFragment>::@class::B::@setter::x#element |
| formalParameters |
| _x |
| element: <testLibraryFragment>::@class::B::@setter::x::@parameter::_x#element |
| set z @118 |
| reference: <testLibraryFragment>::@class::B::@setter::z |
| element: <testLibraryFragment>::@class::B::@setter::z#element |
| formalParameters |
| _ @120 |
| element: <testLibraryFragment>::@class::B::@setter::z::@parameter::_#element |
| classes |
| abstract class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| typeParameters |
| E |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::A::@field::x |
| hasEnclosingTypeParameterReference: true |
| type: E |
| getter: <testLibraryFragment>::@class::A::@getter::x#element |
| synthetic y |
| firstFragment: <testLibraryFragment>::@class::A::@field::y |
| hasEnclosingTypeParameterReference: true |
| type: E |
| getter: <testLibraryFragment>::@class::A::@getter::y#element |
| synthetic z |
| firstFragment: <testLibraryFragment>::@class::A::@field::z |
| hasEnclosingTypeParameterReference: true |
| type: E |
| getter: <testLibraryFragment>::@class::A::@getter::z#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| getters |
| abstract get x |
| firstFragment: <testLibraryFragment>::@class::A::@getter::x |
| hasEnclosingTypeParameterReference: true |
| returnType: E |
| abstract get y |
| firstFragment: <testLibraryFragment>::@class::A::@getter::y |
| hasEnclosingTypeParameterReference: true |
| returnType: E |
| abstract get z |
| firstFragment: <testLibraryFragment>::@class::A::@getter::z |
| hasEnclosingTypeParameterReference: true |
| returnType: E |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| typeParameters |
| T |
| interfaces |
| A<T> |
| fields |
| x |
| firstFragment: <testLibraryFragment>::@class::B::@field::x |
| hasEnclosingTypeParameterReference: true |
| type: T |
| getter: <testLibraryFragment>::@class::B::@getter::x#element |
| setter: <testLibraryFragment>::@class::B::@setter::x#element |
| synthetic y |
| firstFragment: <testLibraryFragment>::@class::B::@field::y |
| hasEnclosingTypeParameterReference: true |
| type: T |
| getter: <testLibraryFragment>::@class::B::@getter::y#element |
| synthetic z |
| firstFragment: <testLibraryFragment>::@class::B::@field::z |
| hasEnclosingTypeParameterReference: true |
| type: T |
| setter: <testLibraryFragment>::@class::B::@setter::z#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| getters |
| synthetic get x |
| firstFragment: <testLibraryFragment>::@class::B::@getter::x |
| hasEnclosingTypeParameterReference: true |
| returnType: T |
| get y |
| firstFragment: <testLibraryFragment>::@class::B::@getter::y |
| hasEnclosingTypeParameterReference: true |
| returnType: T |
| setters |
| synthetic set x |
| firstFragment: <testLibraryFragment>::@class::B::@setter::x |
| hasEnclosingTypeParameterReference: true |
| formalParameters |
| requiredPositional _x |
| type: T |
| returnType: void |
| set z |
| firstFragment: <testLibraryFragment>::@class::B::@setter::z |
| hasEnclosingTypeParameterReference: true |
| formalParameters |
| requiredPositional hasImplicitType _ |
| type: T |
| returnType: void |
| '''); |
| } |
| |
| test_instanceField_fromGetter_multiple_different() async { |
| var library = await _encodeDecodeLibrary(r''' |
| abstract class A { |
| int get x; |
| } |
| abstract class B { |
| String get x; |
| } |
| class C implements A, B { |
| get x => null; |
| } |
| '''); |
| // TODO(scheglov): test for inference failure error |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @15 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::A::@field::x |
| element: <testLibraryFragment>::@class::A::@field::x#element |
| getter2: <testLibraryFragment>::@class::A::@getter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| getters |
| get x @29 |
| reference: <testLibraryFragment>::@class::A::@getter::x |
| element: <testLibraryFragment>::@class::A::@getter::x#element |
| class B @49 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::B::@field::x |
| element: <testLibraryFragment>::@class::B::@field::x#element |
| getter2: <testLibraryFragment>::@class::B::@getter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| getters |
| get x @66 |
| reference: <testLibraryFragment>::@class::B::@getter::x |
| element: <testLibraryFragment>::@class::B::@getter::x#element |
| class C @77 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::C::@field::x |
| element: <testLibraryFragment>::@class::C::@field::x#element |
| getter2: <testLibraryFragment>::@class::C::@getter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| getters |
| get x @103 |
| reference: <testLibraryFragment>::@class::C::@getter::x |
| element: <testLibraryFragment>::@class::C::@getter::x#element |
| classes |
| abstract class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::A::@field::x |
| type: int |
| getter: <testLibraryFragment>::@class::A::@getter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| getters |
| abstract get x |
| firstFragment: <testLibraryFragment>::@class::A::@getter::x |
| returnType: int |
| abstract class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::B::@field::x |
| type: String |
| getter: <testLibraryFragment>::@class::B::@getter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| getters |
| abstract get x |
| firstFragment: <testLibraryFragment>::@class::B::@getter::x |
| returnType: String |
| class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| interfaces |
| A |
| B |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::C::@field::x |
| type: dynamic |
| getter: <testLibraryFragment>::@class::C::@getter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| getters |
| get x |
| firstFragment: <testLibraryFragment>::@class::C::@getter::x |
| returnType: dynamic |
| '''); |
| } |
| |
| test_instanceField_fromGetter_multiple_different_dynamic() async { |
| var library = await _encodeDecodeLibrary(r''' |
| abstract class A { |
| int get x; |
| } |
| abstract class B { |
| dynamic get x; |
| } |
| class C implements A, B { |
| get x => null; |
| } |
| '''); |
| // TODO(scheglov): test for inference failure error |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @15 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::A::@field::x |
| element: <testLibraryFragment>::@class::A::@field::x#element |
| getter2: <testLibraryFragment>::@class::A::@getter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| getters |
| get x @29 |
| reference: <testLibraryFragment>::@class::A::@getter::x |
| element: <testLibraryFragment>::@class::A::@getter::x#element |
| class B @49 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::B::@field::x |
| element: <testLibraryFragment>::@class::B::@field::x#element |
| getter2: <testLibraryFragment>::@class::B::@getter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| getters |
| get x @67 |
| reference: <testLibraryFragment>::@class::B::@getter::x |
| element: <testLibraryFragment>::@class::B::@getter::x#element |
| class C @78 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::C::@field::x |
| element: <testLibraryFragment>::@class::C::@field::x#element |
| getter2: <testLibraryFragment>::@class::C::@getter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| getters |
| get x @104 |
| reference: <testLibraryFragment>::@class::C::@getter::x |
| element: <testLibraryFragment>::@class::C::@getter::x#element |
| classes |
| abstract class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::A::@field::x |
| type: int |
| getter: <testLibraryFragment>::@class::A::@getter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| getters |
| abstract get x |
| firstFragment: <testLibraryFragment>::@class::A::@getter::x |
| returnType: int |
| abstract class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::B::@field::x |
| type: dynamic |
| getter: <testLibraryFragment>::@class::B::@getter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| getters |
| abstract get x |
| firstFragment: <testLibraryFragment>::@class::B::@getter::x |
| returnType: dynamic |
| class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| interfaces |
| A |
| B |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::C::@field::x |
| type: int |
| getter: <testLibraryFragment>::@class::C::@getter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| getters |
| get x |
| firstFragment: <testLibraryFragment>::@class::C::@getter::x |
| returnType: int |
| '''); |
| } |
| |
| test_instanceField_fromGetter_multiple_different_generic() async { |
| var library = await _encodeDecodeLibrary(r''' |
| abstract class A<T> { |
| T get x; |
| } |
| abstract class B<T> { |
| T get x; |
| } |
| class C implements A<int>, B<String> { |
| get x => null; |
| } |
| '''); |
| // TODO(scheglov): test for inference failure error |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @15 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| typeParameters |
| T @17 |
| element: T@17 |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::A::@field::x |
| element: <testLibraryFragment>::@class::A::@field::x#element |
| getter2: <testLibraryFragment>::@class::A::@getter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| getters |
| get x @30 |
| reference: <testLibraryFragment>::@class::A::@getter::x |
| element: <testLibraryFragment>::@class::A::@getter::x#element |
| class B @50 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| typeParameters |
| T @52 |
| element: T@52 |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::B::@field::x |
| element: <testLibraryFragment>::@class::B::@field::x#element |
| getter2: <testLibraryFragment>::@class::B::@getter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| getters |
| get x @65 |
| reference: <testLibraryFragment>::@class::B::@getter::x |
| element: <testLibraryFragment>::@class::B::@getter::x#element |
| class C @76 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::C::@field::x |
| element: <testLibraryFragment>::@class::C::@field::x#element |
| getter2: <testLibraryFragment>::@class::C::@getter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| getters |
| get x @115 |
| reference: <testLibraryFragment>::@class::C::@getter::x |
| element: <testLibraryFragment>::@class::C::@getter::x#element |
| classes |
| abstract class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| typeParameters |
| T |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::A::@field::x |
| hasEnclosingTypeParameterReference: true |
| type: T |
| getter: <testLibraryFragment>::@class::A::@getter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| getters |
| abstract get x |
| firstFragment: <testLibraryFragment>::@class::A::@getter::x |
| hasEnclosingTypeParameterReference: true |
| returnType: T |
| abstract class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| typeParameters |
| T |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::B::@field::x |
| hasEnclosingTypeParameterReference: true |
| type: T |
| getter: <testLibraryFragment>::@class::B::@getter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| getters |
| abstract get x |
| firstFragment: <testLibraryFragment>::@class::B::@getter::x |
| hasEnclosingTypeParameterReference: true |
| returnType: T |
| class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| interfaces |
| A<int> |
| B<String> |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::C::@field::x |
| type: dynamic |
| getter: <testLibraryFragment>::@class::C::@getter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| getters |
| get x |
| firstFragment: <testLibraryFragment>::@class::C::@getter::x |
| returnType: dynamic |
| '''); |
| } |
| |
| test_instanceField_fromGetter_multiple_same() async { |
| var library = await _encodeDecodeLibrary(r''' |
| abstract class A { |
| int get x; |
| } |
| abstract class B { |
| int get x; |
| } |
| class C implements A, B { |
| get x => null; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @15 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::A::@field::x |
| element: <testLibraryFragment>::@class::A::@field::x#element |
| getter2: <testLibraryFragment>::@class::A::@getter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| getters |
| get x @29 |
| reference: <testLibraryFragment>::@class::A::@getter::x |
| element: <testLibraryFragment>::@class::A::@getter::x#element |
| class B @49 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::B::@field::x |
| element: <testLibraryFragment>::@class::B::@field::x#element |
| getter2: <testLibraryFragment>::@class::B::@getter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| getters |
| get x @63 |
| reference: <testLibraryFragment>::@class::B::@getter::x |
| element: <testLibraryFragment>::@class::B::@getter::x#element |
| class C @74 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::C::@field::x |
| element: <testLibraryFragment>::@class::C::@field::x#element |
| getter2: <testLibraryFragment>::@class::C::@getter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| getters |
| get x @100 |
| reference: <testLibraryFragment>::@class::C::@getter::x |
| element: <testLibraryFragment>::@class::C::@getter::x#element |
| classes |
| abstract class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::A::@field::x |
| type: int |
| getter: <testLibraryFragment>::@class::A::@getter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| getters |
| abstract get x |
| firstFragment: <testLibraryFragment>::@class::A::@getter::x |
| returnType: int |
| abstract class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::B::@field::x |
| type: int |
| getter: <testLibraryFragment>::@class::B::@getter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| getters |
| abstract get x |
| firstFragment: <testLibraryFragment>::@class::B::@getter::x |
| returnType: int |
| class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| interfaces |
| A |
| B |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::C::@field::x |
| type: int |
| getter: <testLibraryFragment>::@class::C::@getter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| getters |
| get x |
| firstFragment: <testLibraryFragment>::@class::C::@getter::x |
| returnType: int |
| '''); |
| } |
| |
| test_instanceField_fromGetterSetter_different_field() async { |
| var library = await _encodeDecodeLibrary(r''' |
| abstract class A { |
| int get x; |
| int get y; |
| } |
| abstract class B { |
| void set x(String _); |
| void set y(String _); |
| } |
| class C implements A, B { |
| var x; |
| final y; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @15 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::A::@field::x |
| element: <testLibraryFragment>::@class::A::@field::x#element |
| getter2: <testLibraryFragment>::@class::A::@getter::x |
| synthetic y |
| reference: <testLibraryFragment>::@class::A::@field::y |
| element: <testLibraryFragment>::@class::A::@field::y#element |
| getter2: <testLibraryFragment>::@class::A::@getter::y |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| getters |
| get x @29 |
| reference: <testLibraryFragment>::@class::A::@getter::x |
| element: <testLibraryFragment>::@class::A::@getter::x#element |
| get y @42 |
| reference: <testLibraryFragment>::@class::A::@getter::y |
| element: <testLibraryFragment>::@class::A::@getter::y#element |
| class B @62 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::B::@field::x |
| element: <testLibraryFragment>::@class::B::@field::x#element |
| setter2: <testLibraryFragment>::@class::B::@setter::x |
| synthetic y |
| reference: <testLibraryFragment>::@class::B::@field::y |
| element: <testLibraryFragment>::@class::B::@field::y#element |
| setter2: <testLibraryFragment>::@class::B::@setter::y |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| setters |
| set x @77 |
| reference: <testLibraryFragment>::@class::B::@setter::x |
| element: <testLibraryFragment>::@class::B::@setter::x#element |
| formalParameters |
| _ @86 |
| element: <testLibraryFragment>::@class::B::@setter::x::@parameter::_#element |
| set y @101 |
| reference: <testLibraryFragment>::@class::B::@setter::y |
| element: <testLibraryFragment>::@class::B::@setter::y#element |
| formalParameters |
| _ @110 |
| element: <testLibraryFragment>::@class::B::@setter::y::@parameter::_#element |
| class C @122 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| fields |
| x @148 |
| reference: <testLibraryFragment>::@class::C::@field::x |
| element: <testLibraryFragment>::@class::C::@field::x#element |
| getter2: <testLibraryFragment>::@class::C::@getter::x |
| setter2: <testLibraryFragment>::@class::C::@setter::x |
| y @159 |
| reference: <testLibraryFragment>::@class::C::@field::y |
| element: <testLibraryFragment>::@class::C::@field::y#element |
| getter2: <testLibraryFragment>::@class::C::@getter::y |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| getters |
| synthetic get x |
| reference: <testLibraryFragment>::@class::C::@getter::x |
| element: <testLibraryFragment>::@class::C::@getter::x#element |
| synthetic get y |
| reference: <testLibraryFragment>::@class::C::@getter::y |
| element: <testLibraryFragment>::@class::C::@getter::y#element |
| setters |
| synthetic set x |
| reference: <testLibraryFragment>::@class::C::@setter::x |
| element: <testLibraryFragment>::@class::C::@setter::x#element |
| formalParameters |
| _x |
| element: <testLibraryFragment>::@class::C::@setter::x::@parameter::_x#element |
| classes |
| abstract class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::A::@field::x |
| type: int |
| getter: <testLibraryFragment>::@class::A::@getter::x#element |
| synthetic y |
| firstFragment: <testLibraryFragment>::@class::A::@field::y |
| type: int |
| getter: <testLibraryFragment>::@class::A::@getter::y#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| getters |
| abstract get x |
| firstFragment: <testLibraryFragment>::@class::A::@getter::x |
| returnType: int |
| abstract get y |
| firstFragment: <testLibraryFragment>::@class::A::@getter::y |
| returnType: int |
| abstract class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::B::@field::x |
| type: String |
| setter: <testLibraryFragment>::@class::B::@setter::x#element |
| synthetic y |
| firstFragment: <testLibraryFragment>::@class::B::@field::y |
| type: String |
| setter: <testLibraryFragment>::@class::B::@setter::y#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| setters |
| abstract set x |
| firstFragment: <testLibraryFragment>::@class::B::@setter::x |
| formalParameters |
| requiredPositional _ |
| type: String |
| returnType: void |
| abstract set y |
| firstFragment: <testLibraryFragment>::@class::B::@setter::y |
| formalParameters |
| requiredPositional _ |
| type: String |
| returnType: void |
| class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| interfaces |
| A |
| B |
| fields |
| x |
| firstFragment: <testLibraryFragment>::@class::C::@field::x |
| type: dynamic |
| getter: <testLibraryFragment>::@class::C::@getter::x#element |
| setter: <testLibraryFragment>::@class::C::@setter::x#element |
| final y |
| firstFragment: <testLibraryFragment>::@class::C::@field::y |
| type: int |
| getter: <testLibraryFragment>::@class::C::@getter::y#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| getters |
| synthetic get x |
| firstFragment: <testLibraryFragment>::@class::C::@getter::x |
| returnType: dynamic |
| synthetic get y |
| firstFragment: <testLibraryFragment>::@class::C::@getter::y |
| returnType: int |
| setters |
| synthetic set x |
| firstFragment: <testLibraryFragment>::@class::C::@setter::x |
| formalParameters |
| requiredPositional _x |
| type: dynamic |
| returnType: void |
| '''); |
| } |
| |
| test_instanceField_fromGetterSetter_different_getter() async { |
| var library = await _encodeDecodeLibrary(r''' |
| abstract class A { |
| int get x; |
| } |
| abstract class B { |
| void set x(String _); |
| } |
| class C implements A, B { |
| get x => null; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @15 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::A::@field::x |
| element: <testLibraryFragment>::@class::A::@field::x#element |
| getter2: <testLibraryFragment>::@class::A::@getter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| getters |
| get x @29 |
| reference: <testLibraryFragment>::@class::A::@getter::x |
| element: <testLibraryFragment>::@class::A::@getter::x#element |
| class B @49 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::B::@field::x |
| element: <testLibraryFragment>::@class::B::@field::x#element |
| setter2: <testLibraryFragment>::@class::B::@setter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| setters |
| set x @64 |
| reference: <testLibraryFragment>::@class::B::@setter::x |
| element: <testLibraryFragment>::@class::B::@setter::x#element |
| formalParameters |
| _ @73 |
| element: <testLibraryFragment>::@class::B::@setter::x::@parameter::_#element |
| class C @85 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::C::@field::x |
| element: <testLibraryFragment>::@class::C::@field::x#element |
| getter2: <testLibraryFragment>::@class::C::@getter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| getters |
| get x @111 |
| reference: <testLibraryFragment>::@class::C::@getter::x |
| element: <testLibraryFragment>::@class::C::@getter::x#element |
| classes |
| abstract class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::A::@field::x |
| type: int |
| getter: <testLibraryFragment>::@class::A::@getter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| getters |
| abstract get x |
| firstFragment: <testLibraryFragment>::@class::A::@getter::x |
| returnType: int |
| abstract class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::B::@field::x |
| type: String |
| setter: <testLibraryFragment>::@class::B::@setter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| setters |
| abstract set x |
| firstFragment: <testLibraryFragment>::@class::B::@setter::x |
| formalParameters |
| requiredPositional _ |
| type: String |
| returnType: void |
| class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| interfaces |
| A |
| B |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::C::@field::x |
| type: int |
| getter: <testLibraryFragment>::@class::C::@getter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| getters |
| get x |
| firstFragment: <testLibraryFragment>::@class::C::@getter::x |
| returnType: int |
| '''); |
| } |
| |
| test_instanceField_fromGetterSetter_different_setter() async { |
| var library = await _encodeDecodeLibrary(r''' |
| abstract class A { |
| int get x; |
| } |
| abstract class B { |
| void set x(String _); |
| } |
| class C implements A, B { |
| set x(_); |
| } |
| '''); |
| // TODO(scheglov): test for inference failure error |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @15 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::A::@field::x |
| element: <testLibraryFragment>::@class::A::@field::x#element |
| getter2: <testLibraryFragment>::@class::A::@getter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| getters |
| get x @29 |
| reference: <testLibraryFragment>::@class::A::@getter::x |
| element: <testLibraryFragment>::@class::A::@getter::x#element |
| class B @49 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::B::@field::x |
| element: <testLibraryFragment>::@class::B::@field::x#element |
| setter2: <testLibraryFragment>::@class::B::@setter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| setters |
| set x @64 |
| reference: <testLibraryFragment>::@class::B::@setter::x |
| element: <testLibraryFragment>::@class::B::@setter::x#element |
| formalParameters |
| _ @73 |
| element: <testLibraryFragment>::@class::B::@setter::x::@parameter::_#element |
| class C @85 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::C::@field::x |
| element: <testLibraryFragment>::@class::C::@field::x#element |
| setter2: <testLibraryFragment>::@class::C::@setter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| setters |
| set x @111 |
| reference: <testLibraryFragment>::@class::C::@setter::x |
| element: <testLibraryFragment>::@class::C::@setter::x#element |
| formalParameters |
| _ @113 |
| element: <testLibraryFragment>::@class::C::@setter::x::@parameter::_#element |
| classes |
| abstract class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::A::@field::x |
| type: int |
| getter: <testLibraryFragment>::@class::A::@getter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| getters |
| abstract get x |
| firstFragment: <testLibraryFragment>::@class::A::@getter::x |
| returnType: int |
| abstract class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::B::@field::x |
| type: String |
| setter: <testLibraryFragment>::@class::B::@setter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| setters |
| abstract set x |
| firstFragment: <testLibraryFragment>::@class::B::@setter::x |
| formalParameters |
| requiredPositional _ |
| type: String |
| returnType: void |
| class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| interfaces |
| A |
| B |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::C::@field::x |
| type: String |
| setter: <testLibraryFragment>::@class::C::@setter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| setters |
| abstract set x |
| firstFragment: <testLibraryFragment>::@class::C::@setter::x |
| formalParameters |
| requiredPositional hasImplicitType _ |
| type: String |
| returnType: void |
| '''); |
| } |
| |
| test_instanceField_fromGetterSetter_same_field() async { |
| var library = await _encodeDecodeLibrary(r''' |
| abstract class A { |
| int get x; |
| } |
| abstract class B { |
| void set x(int _); |
| } |
| class C implements A, B { |
| var x; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @15 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::A::@field::x |
| element: <testLibraryFragment>::@class::A::@field::x#element |
| getter2: <testLibraryFragment>::@class::A::@getter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| getters |
| get x @29 |
| reference: <testLibraryFragment>::@class::A::@getter::x |
| element: <testLibraryFragment>::@class::A::@getter::x#element |
| class B @49 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::B::@field::x |
| element: <testLibraryFragment>::@class::B::@field::x#element |
| setter2: <testLibraryFragment>::@class::B::@setter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| setters |
| set x @64 |
| reference: <testLibraryFragment>::@class::B::@setter::x |
| element: <testLibraryFragment>::@class::B::@setter::x#element |
| formalParameters |
| _ @70 |
| element: <testLibraryFragment>::@class::B::@setter::x::@parameter::_#element |
| class C @82 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| fields |
| x @108 |
| reference: <testLibraryFragment>::@class::C::@field::x |
| element: <testLibraryFragment>::@class::C::@field::x#element |
| getter2: <testLibraryFragment>::@class::C::@getter::x |
| setter2: <testLibraryFragment>::@class::C::@setter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| getters |
| synthetic get x |
| reference: <testLibraryFragment>::@class::C::@getter::x |
| element: <testLibraryFragment>::@class::C::@getter::x#element |
| setters |
| synthetic set x |
| reference: <testLibraryFragment>::@class::C::@setter::x |
| element: <testLibraryFragment>::@class::C::@setter::x#element |
| formalParameters |
| _x |
| element: <testLibraryFragment>::@class::C::@setter::x::@parameter::_x#element |
| classes |
| abstract class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::A::@field::x |
| type: int |
| getter: <testLibraryFragment>::@class::A::@getter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| getters |
| abstract get x |
| firstFragment: <testLibraryFragment>::@class::A::@getter::x |
| returnType: int |
| abstract class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::B::@field::x |
| type: int |
| setter: <testLibraryFragment>::@class::B::@setter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| setters |
| abstract set x |
| firstFragment: <testLibraryFragment>::@class::B::@setter::x |
| formalParameters |
| requiredPositional _ |
| type: int |
| returnType: void |
| class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| interfaces |
| A |
| B |
| fields |
| x |
| firstFragment: <testLibraryFragment>::@class::C::@field::x |
| type: int |
| getter: <testLibraryFragment>::@class::C::@getter::x#element |
| setter: <testLibraryFragment>::@class::C::@setter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| getters |
| synthetic get x |
| firstFragment: <testLibraryFragment>::@class::C::@getter::x |
| returnType: int |
| setters |
| synthetic set x |
| firstFragment: <testLibraryFragment>::@class::C::@setter::x |
| formalParameters |
| requiredPositional _x |
| type: int |
| returnType: void |
| '''); |
| } |
| |
| test_instanceField_fromGetterSetter_same_getter() async { |
| var library = await _encodeDecodeLibrary(r''' |
| abstract class A { |
| int get x; |
| } |
| abstract class B { |
| void set x(int _); |
| } |
| class C implements A, B { |
| get x => null; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @15 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::A::@field::x |
| element: <testLibraryFragment>::@class::A::@field::x#element |
| getter2: <testLibraryFragment>::@class::A::@getter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| getters |
| get x @29 |
| reference: <testLibraryFragment>::@class::A::@getter::x |
| element: <testLibraryFragment>::@class::A::@getter::x#element |
| class B @49 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::B::@field::x |
| element: <testLibraryFragment>::@class::B::@field::x#element |
| setter2: <testLibraryFragment>::@class::B::@setter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| setters |
| set x @64 |
| reference: <testLibraryFragment>::@class::B::@setter::x |
| element: <testLibraryFragment>::@class::B::@setter::x#element |
| formalParameters |
| _ @70 |
| element: <testLibraryFragment>::@class::B::@setter::x::@parameter::_#element |
| class C @82 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::C::@field::x |
| element: <testLibraryFragment>::@class::C::@field::x#element |
| getter2: <testLibraryFragment>::@class::C::@getter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| getters |
| get x @108 |
| reference: <testLibraryFragment>::@class::C::@getter::x |
| element: <testLibraryFragment>::@class::C::@getter::x#element |
| classes |
| abstract class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::A::@field::x |
| type: int |
| getter: <testLibraryFragment>::@class::A::@getter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| getters |
| abstract get x |
| firstFragment: <testLibraryFragment>::@class::A::@getter::x |
| returnType: int |
| abstract class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::B::@field::x |
| type: int |
| setter: <testLibraryFragment>::@class::B::@setter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| setters |
| abstract set x |
| firstFragment: <testLibraryFragment>::@class::B::@setter::x |
| formalParameters |
| requiredPositional _ |
| type: int |
| returnType: void |
| class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| interfaces |
| A |
| B |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::C::@field::x |
| type: int |
| getter: <testLibraryFragment>::@class::C::@getter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| getters |
| get x |
| firstFragment: <testLibraryFragment>::@class::C::@getter::x |
| returnType: int |
| '''); |
| } |
| |
| test_instanceField_fromGetterSetter_same_setter() async { |
| var library = await _encodeDecodeLibrary(r''' |
| abstract class A { |
| int get x; |
| } |
| abstract class B { |
| void set x(int _); |
| } |
| class C implements A, B { |
| set x(_); |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @15 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::A::@field::x |
| element: <testLibraryFragment>::@class::A::@field::x#element |
| getter2: <testLibraryFragment>::@class::A::@getter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| getters |
| get x @29 |
| reference: <testLibraryFragment>::@class::A::@getter::x |
| element: <testLibraryFragment>::@class::A::@getter::x#element |
| class B @49 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::B::@field::x |
| element: <testLibraryFragment>::@class::B::@field::x#element |
| setter2: <testLibraryFragment>::@class::B::@setter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| setters |
| set x @64 |
| reference: <testLibraryFragment>::@class::B::@setter::x |
| element: <testLibraryFragment>::@class::B::@setter::x#element |
| formalParameters |
| _ @70 |
| element: <testLibraryFragment>::@class::B::@setter::x::@parameter::_#element |
| class C @82 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::C::@field::x |
| element: <testLibraryFragment>::@class::C::@field::x#element |
| setter2: <testLibraryFragment>::@class::C::@setter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| setters |
| set x @108 |
| reference: <testLibraryFragment>::@class::C::@setter::x |
| element: <testLibraryFragment>::@class::C::@setter::x#element |
| formalParameters |
| _ @110 |
| element: <testLibraryFragment>::@class::C::@setter::x::@parameter::_#element |
| classes |
| abstract class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::A::@field::x |
| type: int |
| getter: <testLibraryFragment>::@class::A::@getter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| getters |
| abstract get x |
| firstFragment: <testLibraryFragment>::@class::A::@getter::x |
| returnType: int |
| abstract class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::B::@field::x |
| type: int |
| setter: <testLibraryFragment>::@class::B::@setter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| setters |
| abstract set x |
| firstFragment: <testLibraryFragment>::@class::B::@setter::x |
| formalParameters |
| requiredPositional _ |
| type: int |
| returnType: void |
| class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| interfaces |
| A |
| B |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::C::@field::x |
| type: int |
| setter: <testLibraryFragment>::@class::C::@setter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| setters |
| abstract set x |
| firstFragment: <testLibraryFragment>::@class::C::@setter::x |
| formalParameters |
| requiredPositional hasImplicitType _ |
| type: int |
| returnType: void |
| '''); |
| } |
| |
| test_instanceField_fromSetter() async { |
| var library = await _encodeDecodeLibrary(r''' |
| abstract class A { |
| void set x(int _); |
| void set y(int _); |
| void set z(int _); |
| } |
| class B implements A { |
| var x; |
| get y => null; |
| set z(_) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @15 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::A::@field::x |
| element: <testLibraryFragment>::@class::A::@field::x#element |
| setter2: <testLibraryFragment>::@class::A::@setter::x |
| synthetic y |
| reference: <testLibraryFragment>::@class::A::@field::y |
| element: <testLibraryFragment>::@class::A::@field::y#element |
| setter2: <testLibraryFragment>::@class::A::@setter::y |
| synthetic z |
| reference: <testLibraryFragment>::@class::A::@field::z |
| element: <testLibraryFragment>::@class::A::@field::z#element |
| setter2: <testLibraryFragment>::@class::A::@setter::z |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| setters |
| set x @30 |
| reference: <testLibraryFragment>::@class::A::@setter::x |
| element: <testLibraryFragment>::@class::A::@setter::x#element |
| formalParameters |
| _ @36 |
| element: <testLibraryFragment>::@class::A::@setter::x::@parameter::_#element |
| set y @51 |
| reference: <testLibraryFragment>::@class::A::@setter::y |
| element: <testLibraryFragment>::@class::A::@setter::y#element |
| formalParameters |
| _ @57 |
| element: <testLibraryFragment>::@class::A::@setter::y::@parameter::_#element |
| set z @72 |
| reference: <testLibraryFragment>::@class::A::@setter::z |
| element: <testLibraryFragment>::@class::A::@setter::z#element |
| formalParameters |
| _ @78 |
| element: <testLibraryFragment>::@class::A::@setter::z::@parameter::_#element |
| class B @90 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| fields |
| x @113 |
| reference: <testLibraryFragment>::@class::B::@field::x |
| element: <testLibraryFragment>::@class::B::@field::x#element |
| getter2: <testLibraryFragment>::@class::B::@getter::x |
| setter2: <testLibraryFragment>::@class::B::@setter::x |
| synthetic y |
| reference: <testLibraryFragment>::@class::B::@field::y |
| element: <testLibraryFragment>::@class::B::@field::y#element |
| getter2: <testLibraryFragment>::@class::B::@getter::y |
| synthetic z |
| reference: <testLibraryFragment>::@class::B::@field::z |
| element: <testLibraryFragment>::@class::B::@field::z#element |
| setter2: <testLibraryFragment>::@class::B::@setter::z |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| getters |
| synthetic get x |
| reference: <testLibraryFragment>::@class::B::@getter::x |
| element: <testLibraryFragment>::@class::B::@getter::x#element |
| get y @122 |
| reference: <testLibraryFragment>::@class::B::@getter::y |
| element: <testLibraryFragment>::@class::B::@getter::y#element |
| setters |
| synthetic set x |
| reference: <testLibraryFragment>::@class::B::@setter::x |
| element: <testLibraryFragment>::@class::B::@setter::x#element |
| formalParameters |
| _x |
| element: <testLibraryFragment>::@class::B::@setter::x::@parameter::_x#element |
| set z @139 |
| reference: <testLibraryFragment>::@class::B::@setter::z |
| element: <testLibraryFragment>::@class::B::@setter::z#element |
| formalParameters |
| _ @141 |
| element: <testLibraryFragment>::@class::B::@setter::z::@parameter::_#element |
| classes |
| abstract class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::A::@field::x |
| type: int |
| setter: <testLibraryFragment>::@class::A::@setter::x#element |
| synthetic y |
| firstFragment: <testLibraryFragment>::@class::A::@field::y |
| type: int |
| setter: <testLibraryFragment>::@class::A::@setter::y#element |
| synthetic z |
| firstFragment: <testLibraryFragment>::@class::A::@field::z |
| type: int |
| setter: <testLibraryFragment>::@class::A::@setter::z#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| setters |
| abstract set x |
| firstFragment: <testLibraryFragment>::@class::A::@setter::x |
| formalParameters |
| requiredPositional _ |
| type: int |
| returnType: void |
| abstract set y |
| firstFragment: <testLibraryFragment>::@class::A::@setter::y |
| formalParameters |
| requiredPositional _ |
| type: int |
| returnType: void |
| abstract set z |
| firstFragment: <testLibraryFragment>::@class::A::@setter::z |
| formalParameters |
| requiredPositional _ |
| type: int |
| returnType: void |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| interfaces |
| A |
| fields |
| x |
| firstFragment: <testLibraryFragment>::@class::B::@field::x |
| type: int |
| getter: <testLibraryFragment>::@class::B::@getter::x#element |
| setter: <testLibraryFragment>::@class::B::@setter::x#element |
| synthetic y |
| firstFragment: <testLibraryFragment>::@class::B::@field::y |
| type: int |
| getter: <testLibraryFragment>::@class::B::@getter::y#element |
| synthetic z |
| firstFragment: <testLibraryFragment>::@class::B::@field::z |
| type: int |
| setter: <testLibraryFragment>::@class::B::@setter::z#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| getters |
| synthetic get x |
| firstFragment: <testLibraryFragment>::@class::B::@getter::x |
| returnType: int |
| get y |
| firstFragment: <testLibraryFragment>::@class::B::@getter::y |
| returnType: int |
| setters |
| synthetic set x |
| firstFragment: <testLibraryFragment>::@class::B::@setter::x |
| formalParameters |
| requiredPositional _x |
| type: int |
| returnType: void |
| set z |
| firstFragment: <testLibraryFragment>::@class::B::@setter::z |
| formalParameters |
| requiredPositional hasImplicitType _ |
| type: int |
| returnType: void |
| '''); |
| } |
| |
| test_instanceField_fromSetter_multiple_different() async { |
| var library = await _encodeDecodeLibrary(r''' |
| abstract class A { |
| void set x(int _); |
| } |
| abstract class B { |
| void set x(String _); |
| } |
| class C implements A, B { |
| get x => null; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @15 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::A::@field::x |
| element: <testLibraryFragment>::@class::A::@field::x#element |
| setter2: <testLibraryFragment>::@class::A::@setter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| setters |
| set x @30 |
| reference: <testLibraryFragment>::@class::A::@setter::x |
| element: <testLibraryFragment>::@class::A::@setter::x#element |
| formalParameters |
| _ @36 |
| element: <testLibraryFragment>::@class::A::@setter::x::@parameter::_#element |
| class B @57 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::B::@field::x |
| element: <testLibraryFragment>::@class::B::@field::x#element |
| setter2: <testLibraryFragment>::@class::B::@setter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| setters |
| set x @72 |
| reference: <testLibraryFragment>::@class::B::@setter::x |
| element: <testLibraryFragment>::@class::B::@setter::x#element |
| formalParameters |
| _ @81 |
| element: <testLibraryFragment>::@class::B::@setter::x::@parameter::_#element |
| class C @93 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::C::@field::x |
| element: <testLibraryFragment>::@class::C::@field::x#element |
| getter2: <testLibraryFragment>::@class::C::@getter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| getters |
| get x @119 |
| reference: <testLibraryFragment>::@class::C::@getter::x |
| element: <testLibraryFragment>::@class::C::@getter::x#element |
| classes |
| abstract class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::A::@field::x |
| type: int |
| setter: <testLibraryFragment>::@class::A::@setter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| setters |
| abstract set x |
| firstFragment: <testLibraryFragment>::@class::A::@setter::x |
| formalParameters |
| requiredPositional _ |
| type: int |
| returnType: void |
| abstract class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::B::@field::x |
| type: String |
| setter: <testLibraryFragment>::@class::B::@setter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| setters |
| abstract set x |
| firstFragment: <testLibraryFragment>::@class::B::@setter::x |
| formalParameters |
| requiredPositional _ |
| type: String |
| returnType: void |
| class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| interfaces |
| A |
| B |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::C::@field::x |
| type: dynamic |
| getter: <testLibraryFragment>::@class::C::@getter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| getters |
| get x |
| firstFragment: <testLibraryFragment>::@class::C::@getter::x |
| returnType: dynamic |
| '''); |
| } |
| |
| test_instanceField_fromSetter_multiple_same() async { |
| var library = await _encodeDecodeLibrary(r''' |
| abstract class A { |
| void set x(int _); |
| } |
| abstract class B { |
| void set x(int _); |
| } |
| class C implements A, B { |
| get x => null; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @15 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::A::@field::x |
| element: <testLibraryFragment>::@class::A::@field::x#element |
| setter2: <testLibraryFragment>::@class::A::@setter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| setters |
| set x @30 |
| reference: <testLibraryFragment>::@class::A::@setter::x |
| element: <testLibraryFragment>::@class::A::@setter::x#element |
| formalParameters |
| _ @36 |
| element: <testLibraryFragment>::@class::A::@setter::x::@parameter::_#element |
| class B @57 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::B::@field::x |
| element: <testLibraryFragment>::@class::B::@field::x#element |
| setter2: <testLibraryFragment>::@class::B::@setter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| setters |
| set x @72 |
| reference: <testLibraryFragment>::@class::B::@setter::x |
| element: <testLibraryFragment>::@class::B::@setter::x#element |
| formalParameters |
| _ @78 |
| element: <testLibraryFragment>::@class::B::@setter::x::@parameter::_#element |
| class C @90 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::C::@field::x |
| element: <testLibraryFragment>::@class::C::@field::x#element |
| getter2: <testLibraryFragment>::@class::C::@getter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| getters |
| get x @116 |
| reference: <testLibraryFragment>::@class::C::@getter::x |
| element: <testLibraryFragment>::@class::C::@getter::x#element |
| classes |
| abstract class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::A::@field::x |
| type: int |
| setter: <testLibraryFragment>::@class::A::@setter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| setters |
| abstract set x |
| firstFragment: <testLibraryFragment>::@class::A::@setter::x |
| formalParameters |
| requiredPositional _ |
| type: int |
| returnType: void |
| abstract class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::B::@field::x |
| type: int |
| setter: <testLibraryFragment>::@class::B::@setter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| setters |
| abstract set x |
| firstFragment: <testLibraryFragment>::@class::B::@setter::x |
| formalParameters |
| requiredPositional _ |
| type: int |
| returnType: void |
| class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| interfaces |
| A |
| B |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::C::@field::x |
| type: int |
| getter: <testLibraryFragment>::@class::C::@getter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| getters |
| get x |
| firstFragment: <testLibraryFragment>::@class::C::@getter::x |
| returnType: int |
| '''); |
| } |
| |
| test_instanceField_functionTypeAlias_doesNotUseItsTypeParameter() async { |
| var library = await _encodeDecodeLibrary(r''' |
| typedef F<T>(); |
| |
| class A<T> { |
| F<T> get x => null; |
| List<F<T>> get y => null; |
| } |
| |
| class B extends A<int> { |
| get x => null; |
| get y => null; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @23 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| typeParameters |
| T @25 |
| element: T@25 |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::A::@field::x |
| element: <testLibraryFragment>::@class::A::@field::x#element |
| getter2: <testLibraryFragment>::@class::A::@getter::x |
| synthetic y |
| reference: <testLibraryFragment>::@class::A::@field::y |
| element: <testLibraryFragment>::@class::A::@field::y#element |
| getter2: <testLibraryFragment>::@class::A::@getter::y |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| getters |
| get x @41 |
| reference: <testLibraryFragment>::@class::A::@getter::x |
| element: <testLibraryFragment>::@class::A::@getter::x#element |
| get y @69 |
| reference: <testLibraryFragment>::@class::A::@getter::y |
| element: <testLibraryFragment>::@class::A::@getter::y#element |
| class B @89 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::B::@field::x |
| element: <testLibraryFragment>::@class::B::@field::x#element |
| getter2: <testLibraryFragment>::@class::B::@getter::x |
| synthetic y |
| reference: <testLibraryFragment>::@class::B::@field::y |
| element: <testLibraryFragment>::@class::B::@field::y#element |
| getter2: <testLibraryFragment>::@class::B::@getter::y |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| getters |
| get x @114 |
| reference: <testLibraryFragment>::@class::B::@getter::x |
| element: <testLibraryFragment>::@class::B::@getter::x#element |
| get y @131 |
| reference: <testLibraryFragment>::@class::B::@getter::y |
| element: <testLibraryFragment>::@class::B::@getter::y#element |
| typeAliases |
| F @8 |
| reference: <testLibraryFragment>::@typeAlias::F |
| element: <testLibrary>::@typeAlias::F |
| typeParameters |
| T @10 |
| element: T@10 |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| typeParameters |
| T |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::A::@field::x |
| hasEnclosingTypeParameterReference: true |
| type: dynamic Function() |
| alias: <testLibrary>::@typeAlias::F |
| typeArguments |
| T |
| getter: <testLibraryFragment>::@class::A::@getter::x#element |
| synthetic y |
| firstFragment: <testLibraryFragment>::@class::A::@field::y |
| hasEnclosingTypeParameterReference: true |
| type: List<dynamic Function()> |
| getter: <testLibraryFragment>::@class::A::@getter::y#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| getters |
| get x |
| firstFragment: <testLibraryFragment>::@class::A::@getter::x |
| hasEnclosingTypeParameterReference: true |
| returnType: dynamic Function() |
| alias: <testLibrary>::@typeAlias::F |
| typeArguments |
| T |
| get y |
| firstFragment: <testLibraryFragment>::@class::A::@getter::y |
| hasEnclosingTypeParameterReference: true |
| returnType: List<dynamic Function()> |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| supertype: A<int> |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::B::@field::x |
| type: dynamic Function() |
| alias: <testLibrary>::@typeAlias::F |
| typeArguments |
| int |
| getter: <testLibraryFragment>::@class::B::@getter::x#element |
| synthetic y |
| firstFragment: <testLibraryFragment>::@class::B::@field::y |
| type: List<dynamic Function()> |
| getter: <testLibraryFragment>::@class::B::@getter::y#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| superConstructor: <testLibraryFragment>::@class::A::@constructor::new#element |
| getters |
| get x |
| firstFragment: <testLibraryFragment>::@class::B::@getter::x |
| returnType: dynamic Function() |
| alias: <testLibrary>::@typeAlias::F |
| typeArguments |
| int |
| get y |
| firstFragment: <testLibraryFragment>::@class::B::@getter::y |
| returnType: List<dynamic Function()> |
| typeAliases |
| F |
| firstFragment: <testLibraryFragment>::@typeAlias::F |
| typeParameters |
| T |
| aliasedType: dynamic Function() |
| '''); |
| } |
| |
| test_instanceField_inheritsCovariant_fromSetter_field() async { |
| var library = await _encodeDecodeLibrary(r''' |
| abstract class A { |
| num get x; |
| void set x(covariant num _); |
| } |
| class B implements A { |
| int x; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @15 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::A::@field::x |
| element: <testLibraryFragment>::@class::A::@field::x#element |
| getter2: <testLibraryFragment>::@class::A::@getter::x |
| setter2: <testLibraryFragment>::@class::A::@setter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| getters |
| get x @29 |
| reference: <testLibraryFragment>::@class::A::@getter::x |
| element: <testLibraryFragment>::@class::A::@getter::x#element |
| setters |
| set x @43 |
| reference: <testLibraryFragment>::@class::A::@setter::x |
| element: <testLibraryFragment>::@class::A::@setter::x#element |
| formalParameters |
| _ @59 |
| element: <testLibraryFragment>::@class::A::@setter::x::@parameter::_#element |
| class B @71 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| fields |
| x @94 |
| reference: <testLibraryFragment>::@class::B::@field::x |
| element: <testLibraryFragment>::@class::B::@field::x#element |
| getter2: <testLibraryFragment>::@class::B::@getter::x |
| setter2: <testLibraryFragment>::@class::B::@setter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| getters |
| synthetic get x |
| reference: <testLibraryFragment>::@class::B::@getter::x |
| element: <testLibraryFragment>::@class::B::@getter::x#element |
| setters |
| synthetic set x |
| reference: <testLibraryFragment>::@class::B::@setter::x |
| element: <testLibraryFragment>::@class::B::@setter::x#element |
| formalParameters |
| _x |
| element: <testLibraryFragment>::@class::B::@setter::x::@parameter::_x#element |
| classes |
| abstract class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::A::@field::x |
| type: num |
| getter: <testLibraryFragment>::@class::A::@getter::x#element |
| setter: <testLibraryFragment>::@class::A::@setter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| getters |
| abstract get x |
| firstFragment: <testLibraryFragment>::@class::A::@getter::x |
| returnType: num |
| setters |
| abstract set x |
| firstFragment: <testLibraryFragment>::@class::A::@setter::x |
| formalParameters |
| requiredPositional covariant _ |
| type: num |
| returnType: void |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| interfaces |
| A |
| fields |
| x |
| firstFragment: <testLibraryFragment>::@class::B::@field::x |
| type: int |
| getter: <testLibraryFragment>::@class::B::@getter::x#element |
| setter: <testLibraryFragment>::@class::B::@setter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| getters |
| synthetic get x |
| firstFragment: <testLibraryFragment>::@class::B::@getter::x |
| returnType: int |
| setters |
| synthetic set x |
| firstFragment: <testLibraryFragment>::@class::B::@setter::x |
| formalParameters |
| requiredPositional covariant _x |
| type: int |
| returnType: void |
| '''); |
| } |
| |
| test_instanceField_inheritsCovariant_fromSetter_setter() async { |
| var library = await _encodeDecodeLibrary(r''' |
| abstract class A { |
| num get x; |
| void set x(covariant num _); |
| } |
| class B implements A { |
| set x(int _) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @15 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::A::@field::x |
| element: <testLibraryFragment>::@class::A::@field::x#element |
| getter2: <testLibraryFragment>::@class::A::@getter::x |
| setter2: <testLibraryFragment>::@class::A::@setter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| getters |
| get x @29 |
| reference: <testLibraryFragment>::@class::A::@getter::x |
| element: <testLibraryFragment>::@class::A::@getter::x#element |
| setters |
| set x @43 |
| reference: <testLibraryFragment>::@class::A::@setter::x |
| element: <testLibraryFragment>::@class::A::@setter::x#element |
| formalParameters |
| _ @59 |
| element: <testLibraryFragment>::@class::A::@setter::x::@parameter::_#element |
| class B @71 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| fields |
| synthetic x |
| reference: <testLibraryFragment>::@class::B::@field::x |
| element: <testLibraryFragment>::@class::B::@field::x#element |
| setter2: <testLibraryFragment>::@class::B::@setter::x |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| setters |
| set x @94 |
| reference: <testLibraryFragment>::@class::B::@setter::x |
| element: <testLibraryFragment>::@class::B::@setter::x#element |
| formalParameters |
| _ @100 |
| element: <testLibraryFragment>::@class::B::@setter::x::@parameter::_#element |
| classes |
| abstract class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::A::@field::x |
| type: num |
| getter: <testLibraryFragment>::@class::A::@getter::x#element |
| setter: <testLibraryFragment>::@class::A::@setter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| getters |
| abstract get x |
| firstFragment: <testLibraryFragment>::@class::A::@getter::x |
| returnType: num |
| setters |
| abstract set x |
| firstFragment: <testLibraryFragment>::@class::A::@setter::x |
| formalParameters |
| requiredPositional covariant _ |
| type: num |
| returnType: void |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| interfaces |
| A |
| fields |
| synthetic x |
| firstFragment: <testLibraryFragment>::@class::B::@field::x |
| type: int |
| setter: <testLibraryFragment>::@class::B::@setter::x#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| setters |
| set x |
| firstFragment: <testLibraryFragment>::@class::B::@setter::x |
| formalParameters |
| requiredPositional covariant _ |
| type: int |
| returnType: void |
| '''); |
| } |
| |
| test_instanceField_initializer() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A { |
| var t1 = 1; |
| var t2 = 2.0; |
| var t3 = null; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| fields |
| hasInitializer t1 @16 |
| reference: <testLibraryFragment>::@class::A::@field::t1 |
| element: <testLibraryFragment>::@class::A::@field::t1#element |
| getter2: <testLibraryFragment>::@class::A::@getter::t1 |
| setter2: <testLibraryFragment>::@class::A::@setter::t1 |
| hasInitializer t2 @30 |
| reference: <testLibraryFragment>::@class::A::@field::t2 |
| element: <testLibraryFragment>::@class::A::@field::t2#element |
| getter2: <testLibraryFragment>::@class::A::@getter::t2 |
| setter2: <testLibraryFragment>::@class::A::@setter::t2 |
| hasInitializer t3 @46 |
| reference: <testLibraryFragment>::@class::A::@field::t3 |
| element: <testLibraryFragment>::@class::A::@field::t3#element |
| getter2: <testLibraryFragment>::@class::A::@getter::t3 |
| setter2: <testLibraryFragment>::@class::A::@setter::t3 |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| getters |
| synthetic get t1 |
| reference: <testLibraryFragment>::@class::A::@getter::t1 |
| element: <testLibraryFragment>::@class::A::@getter::t1#element |
| synthetic get t2 |
| reference: <testLibraryFragment>::@class::A::@getter::t2 |
| element: <testLibraryFragment>::@class::A::@getter::t2#element |
| synthetic get t3 |
| reference: <testLibraryFragment>::@class::A::@getter::t3 |
| element: <testLibraryFragment>::@class::A::@getter::t3#element |
| setters |
| synthetic set t1 |
| reference: <testLibraryFragment>::@class::A::@setter::t1 |
| element: <testLibraryFragment>::@class::A::@setter::t1#element |
| formalParameters |
| _t1 |
| element: <testLibraryFragment>::@class::A::@setter::t1::@parameter::_t1#element |
| synthetic set t2 |
| reference: <testLibraryFragment>::@class::A::@setter::t2 |
| element: <testLibraryFragment>::@class::A::@setter::t2#element |
| formalParameters |
| _t2 |
| element: <testLibraryFragment>::@class::A::@setter::t2::@parameter::_t2#element |
| synthetic set t3 |
| reference: <testLibraryFragment>::@class::A::@setter::t3 |
| element: <testLibraryFragment>::@class::A::@setter::t3#element |
| formalParameters |
| _t3 |
| element: <testLibraryFragment>::@class::A::@setter::t3::@parameter::_t3#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| fields |
| hasInitializer t1 |
| firstFragment: <testLibraryFragment>::@class::A::@field::t1 |
| type: int |
| getter: <testLibraryFragment>::@class::A::@getter::t1#element |
| setter: <testLibraryFragment>::@class::A::@setter::t1#element |
| hasInitializer t2 |
| firstFragment: <testLibraryFragment>::@class::A::@field::t2 |
| type: double |
| getter: <testLibraryFragment>::@class::A::@getter::t2#element |
| setter: <testLibraryFragment>::@class::A::@setter::t2#element |
| hasInitializer t3 |
| firstFragment: <testLibraryFragment>::@class::A::@field::t3 |
| type: dynamic |
| getter: <testLibraryFragment>::@class::A::@getter::t3#element |
| setter: <testLibraryFragment>::@class::A::@setter::t3#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| getters |
| synthetic get t1 |
| firstFragment: <testLibraryFragment>::@class::A::@getter::t1 |
| returnType: int |
| synthetic get t2 |
| firstFragment: <testLibraryFragment>::@class::A::@getter::t2 |
| returnType: double |
| synthetic get t3 |
| firstFragment: <testLibraryFragment>::@class::A::@getter::t3 |
| returnType: dynamic |
| setters |
| synthetic set t1 |
| firstFragment: <testLibraryFragment>::@class::A::@setter::t1 |
| formalParameters |
| requiredPositional _t1 |
| type: int |
| returnType: void |
| synthetic set t2 |
| firstFragment: <testLibraryFragment>::@class::A::@setter::t2 |
| formalParameters |
| requiredPositional _t2 |
| type: double |
| returnType: void |
| synthetic set t3 |
| firstFragment: <testLibraryFragment>::@class::A::@setter::t3 |
| formalParameters |
| requiredPositional _t3 |
| type: dynamic |
| returnType: void |
| '''); |
| } |
| |
| test_method_error_hasMethod_noParameter_required() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A { |
| void m(int a) {} |
| } |
| class B extends A { |
| void m(a, b) {} |
| } |
| '''); |
| // It's an error to add a new required parameter, but it is not a |
| // top-level type inference error. |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| methods |
| m @17 |
| reference: <testLibraryFragment>::@class::A::@method::m |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| a @23 |
| element: <testLibraryFragment>::@class::A::@method::m::@parameter::a#element |
| class B @37 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| methods |
| m @58 |
| reference: <testLibraryFragment>::@class::B::@method::m |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| a @60 |
| element: <testLibraryFragment>::@class::B::@method::m::@parameter::a#element |
| b @63 |
| element: <testLibraryFragment>::@class::B::@method::m::@parameter::b#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: <testLibraryFragment>::@class::A::@method::m |
| formalParameters |
| requiredPositional a |
| type: int |
| returnType: void |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| supertype: A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| superConstructor: <testLibraryFragment>::@class::A::@constructor::new#element |
| methods |
| m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: <testLibraryFragment>::@class::B::@method::m |
| formalParameters |
| requiredPositional hasImplicitType a |
| type: int |
| requiredPositional hasImplicitType b |
| type: dynamic |
| returnType: void |
| '''); |
| } |
| |
| test_method_error_noCombinedSuperSignature1() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A { |
| void m(int a) {} |
| } |
| class B { |
| void m(String a) {} |
| } |
| class C extends A implements B { |
| m(a) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| methods |
| m @17 |
| reference: <testLibraryFragment>::@class::A::@method::m |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| a @23 |
| element: <testLibraryFragment>::@class::A::@method::m::@parameter::a#element |
| class B @37 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| methods |
| m @48 |
| reference: <testLibraryFragment>::@class::B::@method::m |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| a @57 |
| element: <testLibraryFragment>::@class::B::@method::m::@parameter::a#element |
| class C @71 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| methods |
| m @100 |
| reference: <testLibraryFragment>::@class::C::@method::m |
| element: <testLibrary>::@class::C::@method::m |
| formalParameters |
| a @102 |
| element: <testLibraryFragment>::@class::C::@method::m::@parameter::a#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: <testLibraryFragment>::@class::A::@method::m |
| formalParameters |
| requiredPositional a |
| type: int |
| returnType: void |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: <testLibraryFragment>::@class::B::@method::m |
| formalParameters |
| requiredPositional a |
| type: String |
| returnType: void |
| class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| supertype: A |
| interfaces |
| B |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| superConstructor: <testLibraryFragment>::@class::A::@constructor::new#element |
| methods |
| m |
| reference: <testLibrary>::@class::C::@method::m |
| firstFragment: <testLibraryFragment>::@class::C::@method::m |
| formalParameters |
| requiredPositional hasImplicitType a |
| type: dynamic |
| returnType: dynamic |
| '''); |
| } |
| |
| test_method_error_noCombinedSuperSignature2() async { |
| var library = await _encodeDecodeLibrary(r''' |
| abstract class A { |
| int foo(int x); |
| } |
| |
| abstract class B { |
| double foo(int x); |
| } |
| |
| abstract class C implements A, B { |
| Never foo(x); |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @15 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| methods |
| foo @25 |
| reference: <testLibraryFragment>::@class::A::@method::foo |
| element: <testLibrary>::@class::A::@method::foo |
| formalParameters |
| x @33 |
| element: <testLibraryFragment>::@class::A::@method::foo::@parameter::x#element |
| class B @55 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| methods |
| foo @68 |
| reference: <testLibraryFragment>::@class::B::@method::foo |
| element: <testLibrary>::@class::B::@method::foo |
| formalParameters |
| x @76 |
| element: <testLibraryFragment>::@class::B::@method::foo::@parameter::x#element |
| class C @98 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| methods |
| foo @126 |
| reference: <testLibraryFragment>::@class::C::@method::foo |
| element: <testLibrary>::@class::C::@method::foo |
| formalParameters |
| x @130 |
| element: <testLibraryFragment>::@class::C::@method::foo::@parameter::x#element |
| classes |
| abstract class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| methods |
| abstract foo |
| reference: <testLibrary>::@class::A::@method::foo |
| firstFragment: <testLibraryFragment>::@class::A::@method::foo |
| formalParameters |
| requiredPositional x |
| type: int |
| returnType: int |
| abstract class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| methods |
| abstract foo |
| reference: <testLibrary>::@class::B::@method::foo |
| firstFragment: <testLibraryFragment>::@class::B::@method::foo |
| formalParameters |
| requiredPositional x |
| type: int |
| returnType: double |
| abstract class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| interfaces |
| A |
| B |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| methods |
| abstract foo |
| reference: <testLibrary>::@class::C::@method::foo |
| firstFragment: <testLibraryFragment>::@class::C::@method::foo |
| formalParameters |
| requiredPositional hasImplicitType x |
| type: dynamic |
| returnType: Never |
| '''); |
| } |
| |
| test_method_error_noCombinedSuperSignature3() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A { |
| int m() {} |
| } |
| class B { |
| String m() {} |
| } |
| class C extends A implements B { |
| m() {} |
| } |
| '''); |
| // TODO(scheglov): test for inference failure error |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| methods |
| m @16 |
| reference: <testLibraryFragment>::@class::A::@method::m |
| element: <testLibrary>::@class::A::@method::m |
| class B @31 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| methods |
| m @44 |
| reference: <testLibraryFragment>::@class::B::@method::m |
| element: <testLibrary>::@class::B::@method::m |
| class C @59 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| methods |
| m @88 |
| reference: <testLibraryFragment>::@class::C::@method::m |
| element: <testLibrary>::@class::C::@method::m |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: <testLibraryFragment>::@class::A::@method::m |
| returnType: int |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: <testLibraryFragment>::@class::B::@method::m |
| returnType: String |
| class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| supertype: A |
| interfaces |
| B |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| superConstructor: <testLibraryFragment>::@class::A::@constructor::new#element |
| methods |
| m |
| reference: <testLibrary>::@class::C::@method::m |
| firstFragment: <testLibraryFragment>::@class::C::@method::m |
| returnType: dynamic |
| '''); |
| } |
| |
| test_method_error_noCombinedSuperSignature_generic1() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A<T> { |
| void m(T a) {} |
| } |
| class B<E> { |
| void m(E a) {} |
| } |
| class C extends A<int> implements B<double> { |
| m(a) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| typeParameters |
| T @8 |
| element: T@8 |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| methods |
| m @20 |
| reference: <testLibraryFragment>::@class::A::@method::m |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| a @24 |
| element: <testLibraryFragment>::@class::A::@method::m::@parameter::a#element |
| class B @38 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| typeParameters |
| E @40 |
| element: E@40 |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| methods |
| m @52 |
| reference: <testLibraryFragment>::@class::B::@method::m |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| a @56 |
| element: <testLibraryFragment>::@class::B::@method::m::@parameter::a#element |
| class C @70 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| methods |
| m @112 |
| reference: <testLibraryFragment>::@class::C::@method::m |
| element: <testLibrary>::@class::C::@method::m |
| formalParameters |
| a @114 |
| element: <testLibraryFragment>::@class::C::@method::m::@parameter::a#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| typeParameters |
| T |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: <testLibraryFragment>::@class::A::@method::m |
| hasEnclosingTypeParameterReference: true |
| formalParameters |
| requiredPositional a |
| type: T |
| returnType: void |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| typeParameters |
| E |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: <testLibraryFragment>::@class::B::@method::m |
| hasEnclosingTypeParameterReference: true |
| formalParameters |
| requiredPositional a |
| type: E |
| returnType: void |
| class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| supertype: A<int> |
| interfaces |
| B<double> |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| superConstructor: <testLibraryFragment>::@class::A::@constructor::new#element |
| methods |
| m |
| reference: <testLibrary>::@class::C::@method::m |
| firstFragment: <testLibraryFragment>::@class::C::@method::m |
| formalParameters |
| requiredPositional hasImplicitType a |
| type: dynamic |
| returnType: dynamic |
| '''); |
| } |
| |
| test_method_error_noCombinedSuperSignature_generic2() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A<K, V> { |
| V m(K a) {} |
| } |
| class B<T> { |
| T m(int a) {} |
| } |
| class C extends A<int, String> implements B<double> { |
| m(a) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| typeParameters |
| K @8 |
| element: K@8 |
| V @11 |
| element: V@11 |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| methods |
| m @20 |
| reference: <testLibraryFragment>::@class::A::@method::m |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| a @24 |
| element: <testLibraryFragment>::@class::A::@method::m::@parameter::a#element |
| class B @38 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| typeParameters |
| T @40 |
| element: T@40 |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| methods |
| m @49 |
| reference: <testLibraryFragment>::@class::B::@method::m |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| a @55 |
| element: <testLibraryFragment>::@class::B::@method::m::@parameter::a#element |
| class C @69 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| methods |
| m @119 |
| reference: <testLibraryFragment>::@class::C::@method::m |
| element: <testLibrary>::@class::C::@method::m |
| formalParameters |
| a @121 |
| element: <testLibraryFragment>::@class::C::@method::m::@parameter::a#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| typeParameters |
| K |
| V |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: <testLibraryFragment>::@class::A::@method::m |
| hasEnclosingTypeParameterReference: true |
| formalParameters |
| requiredPositional a |
| type: K |
| returnType: V |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| typeParameters |
| T |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: <testLibraryFragment>::@class::B::@method::m |
| hasEnclosingTypeParameterReference: true |
| formalParameters |
| requiredPositional a |
| type: int |
| returnType: T |
| class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| supertype: A<int, String> |
| interfaces |
| B<double> |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| superConstructor: <testLibraryFragment>::@class::A::@constructor::new#element |
| methods |
| m |
| reference: <testLibrary>::@class::C::@method::m |
| firstFragment: <testLibraryFragment>::@class::C::@method::m |
| formalParameters |
| requiredPositional hasImplicitType a |
| type: dynamic |
| returnType: dynamic |
| '''); |
| } |
| |
| test_method_missing_hasMethod_noParameter_named() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A { |
| void m(int a) {} |
| } |
| class B extends A { |
| m(a, {b}) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| methods |
| m @17 |
| reference: <testLibraryFragment>::@class::A::@method::m |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| a @23 |
| element: <testLibraryFragment>::@class::A::@method::m::@parameter::a#element |
| class B @37 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| methods |
| m @53 |
| reference: <testLibraryFragment>::@class::B::@method::m |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| a @55 |
| element: <testLibraryFragment>::@class::B::@method::m::@parameter::a#element |
| default b @59 |
| reference: <testLibraryFragment>::@class::B::@method::m::@parameter::b |
| element: <testLibraryFragment>::@class::B::@method::m::@parameter::b#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: <testLibraryFragment>::@class::A::@method::m |
| formalParameters |
| requiredPositional a |
| type: int |
| returnType: void |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| supertype: A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| superConstructor: <testLibraryFragment>::@class::A::@constructor::new#element |
| methods |
| m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: <testLibraryFragment>::@class::B::@method::m |
| formalParameters |
| requiredPositional hasImplicitType a |
| type: int |
| optionalNamed hasImplicitType b |
| firstFragment: <testLibraryFragment>::@class::B::@method::m::@parameter::b |
| type: dynamic |
| returnType: void |
| '''); |
| } |
| |
| test_method_missing_hasMethod_noParameter_optional() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A { |
| void m(int a) {} |
| } |
| class B extends A { |
| m(a, [b]) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| methods |
| m @17 |
| reference: <testLibraryFragment>::@class::A::@method::m |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| a @23 |
| element: <testLibraryFragment>::@class::A::@method::m::@parameter::a#element |
| class B @37 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| methods |
| m @53 |
| reference: <testLibraryFragment>::@class::B::@method::m |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| a @55 |
| element: <testLibraryFragment>::@class::B::@method::m::@parameter::a#element |
| default b @59 |
| element: <testLibraryFragment>::@class::B::@method::m::@parameter::b#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: <testLibraryFragment>::@class::A::@method::m |
| formalParameters |
| requiredPositional a |
| type: int |
| returnType: void |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| supertype: A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| superConstructor: <testLibraryFragment>::@class::A::@constructor::new#element |
| methods |
| m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: <testLibraryFragment>::@class::B::@method::m |
| formalParameters |
| requiredPositional hasImplicitType a |
| type: int |
| optionalPositional hasImplicitType b |
| type: dynamic |
| returnType: void |
| '''); |
| } |
| |
| test_method_missing_hasMethod_withoutTypes() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A { |
| m(a) {} |
| } |
| class B extends A { |
| m(a) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| methods |
| m @12 |
| reference: <testLibraryFragment>::@class::A::@method::m |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| a @14 |
| element: <testLibraryFragment>::@class::A::@method::m::@parameter::a#element |
| class B @28 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| methods |
| m @44 |
| reference: <testLibraryFragment>::@class::B::@method::m |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| a @46 |
| element: <testLibraryFragment>::@class::B::@method::m::@parameter::a#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: <testLibraryFragment>::@class::A::@method::m |
| formalParameters |
| requiredPositional hasImplicitType a |
| type: dynamic |
| returnType: dynamic |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| supertype: A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| superConstructor: <testLibraryFragment>::@class::A::@constructor::new#element |
| methods |
| m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: <testLibraryFragment>::@class::B::@method::m |
| formalParameters |
| requiredPositional hasImplicitType a |
| type: dynamic |
| returnType: dynamic |
| '''); |
| } |
| |
| test_method_missing_noMember() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A { |
| int foo(String a) => null; |
| } |
| class B extends A { |
| m(a) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| methods |
| foo @16 |
| reference: <testLibraryFragment>::@class::A::@method::foo |
| element: <testLibrary>::@class::A::@method::foo |
| formalParameters |
| a @27 |
| element: <testLibraryFragment>::@class::A::@method::foo::@parameter::a#element |
| class B @47 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| methods |
| m @63 |
| reference: <testLibraryFragment>::@class::B::@method::m |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| a @65 |
| element: <testLibraryFragment>::@class::B::@method::m::@parameter::a#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| methods |
| foo |
| reference: <testLibrary>::@class::A::@method::foo |
| firstFragment: <testLibraryFragment>::@class::A::@method::foo |
| formalParameters |
| requiredPositional a |
| type: String |
| returnType: int |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| supertype: A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| superConstructor: <testLibraryFragment>::@class::A::@constructor::new#element |
| methods |
| m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: <testLibraryFragment>::@class::B::@method::m |
| formalParameters |
| requiredPositional hasImplicitType a |
| type: dynamic |
| returnType: dynamic |
| '''); |
| } |
| |
| test_method_missing_notMethod() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A { |
| int m = 42; |
| } |
| class B extends A { |
| m(a) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| fields |
| hasInitializer m @16 |
| reference: <testLibraryFragment>::@class::A::@field::m |
| element: <testLibraryFragment>::@class::A::@field::m#element |
| getter2: <testLibraryFragment>::@class::A::@getter::m |
| setter2: <testLibraryFragment>::@class::A::@setter::m |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| getters |
| synthetic get m |
| reference: <testLibraryFragment>::@class::A::@getter::m |
| element: <testLibraryFragment>::@class::A::@getter::m#element |
| setters |
| synthetic set m |
| reference: <testLibraryFragment>::@class::A::@setter::m |
| element: <testLibraryFragment>::@class::A::@setter::m#element |
| formalParameters |
| _m |
| element: <testLibraryFragment>::@class::A::@setter::m::@parameter::_m#element |
| class B @32 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| methods |
| m @48 |
| reference: <testLibraryFragment>::@class::B::@method::m |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| a @50 |
| element: <testLibraryFragment>::@class::B::@method::m::@parameter::a#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| fields |
| hasInitializer m |
| firstFragment: <testLibraryFragment>::@class::A::@field::m |
| type: int |
| getter: <testLibraryFragment>::@class::A::@getter::m#element |
| setter: <testLibraryFragment>::@class::A::@setter::m#element |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| getters |
| synthetic get m |
| firstFragment: <testLibraryFragment>::@class::A::@getter::m |
| returnType: int |
| setters |
| synthetic set m |
| firstFragment: <testLibraryFragment>::@class::A::@setter::m |
| formalParameters |
| requiredPositional _m |
| type: int |
| returnType: void |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| supertype: A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| superConstructor: <testLibraryFragment>::@class::A::@constructor::new#element |
| methods |
| m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: <testLibraryFragment>::@class::B::@method::m |
| formalParameters |
| requiredPositional hasImplicitType a |
| type: dynamic |
| returnType: dynamic |
| '''); |
| } |
| |
| test_method_OK_sequence_extendsExtends_generic() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A<K, V> { |
| V m(K a) {} |
| } |
| class B<T> extends A<int, T> {} |
| class C extends B<String> { |
| m(a) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| typeParameters |
| K @8 |
| element: K@8 |
| V @11 |
| element: V@11 |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| methods |
| m @20 |
| reference: <testLibraryFragment>::@class::A::@method::m |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| a @24 |
| element: <testLibraryFragment>::@class::A::@method::m::@parameter::a#element |
| class B @38 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| typeParameters |
| T @40 |
| element: T@40 |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| class C @70 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| methods |
| m @94 |
| reference: <testLibraryFragment>::@class::C::@method::m |
| element: <testLibrary>::@class::C::@method::m |
| formalParameters |
| a @96 |
| element: <testLibraryFragment>::@class::C::@method::m::@parameter::a#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| typeParameters |
| K |
| V |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: <testLibraryFragment>::@class::A::@method::m |
| hasEnclosingTypeParameterReference: true |
| formalParameters |
| requiredPositional a |
| type: K |
| returnType: V |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| typeParameters |
| T |
| supertype: A<int, T> |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| superConstructor: <testLibraryFragment>::@class::A::@constructor::new#element |
| class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| supertype: B<String> |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| superConstructor: <testLibraryFragment>::@class::B::@constructor::new#element |
| methods |
| m |
| reference: <testLibrary>::@class::C::@method::m |
| firstFragment: <testLibraryFragment>::@class::C::@method::m |
| formalParameters |
| requiredPositional hasImplicitType a |
| type: int |
| returnType: String |
| '''); |
| } |
| |
| test_method_OK_sequence_inferMiddle_extendsExtends() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A { |
| String m(int a) {} |
| } |
| class B extends A { |
| m(a) {} |
| } |
| class C extends B { |
| m(a) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| methods |
| m @19 |
| reference: <testLibraryFragment>::@class::A::@method::m |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| a @25 |
| element: <testLibraryFragment>::@class::A::@method::m::@parameter::a#element |
| class B @39 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| methods |
| m @55 |
| reference: <testLibraryFragment>::@class::B::@method::m |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| a @57 |
| element: <testLibraryFragment>::@class::B::@method::m::@parameter::a#element |
| class C @71 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| methods |
| m @87 |
| reference: <testLibraryFragment>::@class::C::@method::m |
| element: <testLibrary>::@class::C::@method::m |
| formalParameters |
| a @89 |
| element: <testLibraryFragment>::@class::C::@method::m::@parameter::a#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: <testLibraryFragment>::@class::A::@method::m |
| formalParameters |
| requiredPositional a |
| type: int |
| returnType: String |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| supertype: A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| superConstructor: <testLibraryFragment>::@class::A::@constructor::new#element |
| methods |
| m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: <testLibraryFragment>::@class::B::@method::m |
| formalParameters |
| requiredPositional hasImplicitType a |
| type: int |
| returnType: String |
| class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| supertype: B |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| superConstructor: <testLibraryFragment>::@class::B::@constructor::new#element |
| methods |
| m |
| reference: <testLibrary>::@class::C::@method::m |
| firstFragment: <testLibraryFragment>::@class::C::@method::m |
| formalParameters |
| requiredPositional hasImplicitType a |
| type: int |
| returnType: String |
| '''); |
| } |
| |
| test_method_OK_sequence_inferMiddle_extendsImplements() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A { |
| String m(int a) {} |
| } |
| class B implements A { |
| m(a) {} |
| } |
| class C extends B { |
| m(a) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| methods |
| m @19 |
| reference: <testLibraryFragment>::@class::A::@method::m |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| a @25 |
| element: <testLibraryFragment>::@class::A::@method::m::@parameter::a#element |
| class B @39 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| methods |
| m @58 |
| reference: <testLibraryFragment>::@class::B::@method::m |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| a @60 |
| element: <testLibraryFragment>::@class::B::@method::m::@parameter::a#element |
| class C @74 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| methods |
| m @90 |
| reference: <testLibraryFragment>::@class::C::@method::m |
| element: <testLibrary>::@class::C::@method::m |
| formalParameters |
| a @92 |
| element: <testLibraryFragment>::@class::C::@method::m::@parameter::a#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: <testLibraryFragment>::@class::A::@method::m |
| formalParameters |
| requiredPositional a |
| type: int |
| returnType: String |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| interfaces |
| A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: <testLibraryFragment>::@class::B::@method::m |
| formalParameters |
| requiredPositional hasImplicitType a |
| type: int |
| returnType: String |
| class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| supertype: B |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| superConstructor: <testLibraryFragment>::@class::B::@constructor::new#element |
| methods |
| m |
| reference: <testLibrary>::@class::C::@method::m |
| firstFragment: <testLibraryFragment>::@class::C::@method::m |
| formalParameters |
| requiredPositional hasImplicitType a |
| type: int |
| returnType: String |
| '''); |
| } |
| |
| test_method_OK_sequence_inferMiddle_extendsWith() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A { |
| String m(int a) {} |
| } |
| class B extends Object with A { |
| m(a) {} |
| } |
| class C extends B { |
| m(a) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| methods |
| m @19 |
| reference: <testLibraryFragment>::@class::A::@method::m |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| a @25 |
| element: <testLibraryFragment>::@class::A::@method::m::@parameter::a#element |
| class B @39 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| methods |
| m @67 |
| reference: <testLibraryFragment>::@class::B::@method::m |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| a @69 |
| element: <testLibraryFragment>::@class::B::@method::m::@parameter::a#element |
| class C @83 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| methods |
| m @99 |
| reference: <testLibraryFragment>::@class::C::@method::m |
| element: <testLibrary>::@class::C::@method::m |
| formalParameters |
| a @101 |
| element: <testLibraryFragment>::@class::C::@method::m::@parameter::a#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: <testLibraryFragment>::@class::A::@method::m |
| formalParameters |
| requiredPositional a |
| type: int |
| returnType: String |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| supertype: Object |
| mixins |
| A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: <testLibraryFragment>::@class::B::@method::m |
| formalParameters |
| requiredPositional hasImplicitType a |
| type: int |
| returnType: String |
| class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| supertype: B |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| superConstructor: <testLibraryFragment>::@class::B::@constructor::new#element |
| methods |
| m |
| reference: <testLibrary>::@class::C::@method::m |
| firstFragment: <testLibraryFragment>::@class::C::@method::m |
| formalParameters |
| requiredPositional hasImplicitType a |
| type: int |
| returnType: String |
| '''); |
| } |
| |
| test_method_OK_single_extends_direct_generic() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A<K, V> { |
| V m(K a, double b) {} |
| } |
| class B extends A<int, String> { |
| m(a, b) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| typeParameters |
| K @8 |
| element: K@8 |
| V @11 |
| element: V@11 |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| methods |
| m @20 |
| reference: <testLibraryFragment>::@class::A::@method::m |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| a @24 |
| element: <testLibraryFragment>::@class::A::@method::m::@parameter::a#element |
| b @34 |
| element: <testLibraryFragment>::@class::A::@method::m::@parameter::b#element |
| class B @48 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| methods |
| m @77 |
| reference: <testLibraryFragment>::@class::B::@method::m |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| a @79 |
| element: <testLibraryFragment>::@class::B::@method::m::@parameter::a#element |
| b @82 |
| element: <testLibraryFragment>::@class::B::@method::m::@parameter::b#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| typeParameters |
| K |
| V |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: <testLibraryFragment>::@class::A::@method::m |
| hasEnclosingTypeParameterReference: true |
| formalParameters |
| requiredPositional a |
| type: K |
| requiredPositional b |
| type: double |
| returnType: V |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| supertype: A<int, String> |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| superConstructor: <testLibraryFragment>::@class::A::@constructor::new#element |
| methods |
| m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: <testLibraryFragment>::@class::B::@method::m |
| formalParameters |
| requiredPositional hasImplicitType a |
| type: int |
| requiredPositional hasImplicitType b |
| type: double |
| returnType: String |
| '''); |
| } |
| |
| test_method_OK_single_extends_direct_notGeneric() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A { |
| String m(int a) {} |
| } |
| class B extends A { |
| m(a) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| methods |
| m @19 |
| reference: <testLibraryFragment>::@class::A::@method::m |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| a @25 |
| element: <testLibraryFragment>::@class::A::@method::m::@parameter::a#element |
| class B @39 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| methods |
| m @55 |
| reference: <testLibraryFragment>::@class::B::@method::m |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| a @57 |
| element: <testLibraryFragment>::@class::B::@method::m::@parameter::a#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: <testLibraryFragment>::@class::A::@method::m |
| formalParameters |
| requiredPositional a |
| type: int |
| returnType: String |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| supertype: A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| superConstructor: <testLibraryFragment>::@class::A::@constructor::new#element |
| methods |
| m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: <testLibraryFragment>::@class::B::@method::m |
| formalParameters |
| requiredPositional hasImplicitType a |
| type: int |
| returnType: String |
| '''); |
| } |
| |
| test_method_OK_single_extends_direct_notGeneric_named() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A { |
| String m(int a, {double b}) {} |
| } |
| class B extends A { |
| m(a, {b}) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| methods |
| m @19 |
| reference: <testLibraryFragment>::@class::A::@method::m |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| a @25 |
| element: <testLibraryFragment>::@class::A::@method::m::@parameter::a#element |
| default b @36 |
| reference: <testLibraryFragment>::@class::A::@method::m::@parameter::b |
| element: <testLibraryFragment>::@class::A::@method::m::@parameter::b#element |
| class B @51 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| methods |
| m @67 |
| reference: <testLibraryFragment>::@class::B::@method::m |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| a @69 |
| element: <testLibraryFragment>::@class::B::@method::m::@parameter::a#element |
| default b @73 |
| reference: <testLibraryFragment>::@class::B::@method::m::@parameter::b |
| element: <testLibraryFragment>::@class::B::@method::m::@parameter::b#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: <testLibraryFragment>::@class::A::@method::m |
| formalParameters |
| requiredPositional a |
| type: int |
| optionalNamed b |
| firstFragment: <testLibraryFragment>::@class::A::@method::m::@parameter::b |
| type: double |
| returnType: String |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| supertype: A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| superConstructor: <testLibraryFragment>::@class::A::@constructor::new#element |
| methods |
| m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: <testLibraryFragment>::@class::B::@method::m |
| formalParameters |
| requiredPositional hasImplicitType a |
| type: int |
| optionalNamed hasImplicitType b |
| firstFragment: <testLibraryFragment>::@class::B::@method::m::@parameter::b |
| type: double |
| returnType: String |
| '''); |
| } |
| |
| test_method_OK_single_extends_direct_notGeneric_positional() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A { |
| String m(int a, [double b]) {} |
| } |
| class B extends A { |
| m(a, [b]) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| methods |
| m @19 |
| reference: <testLibraryFragment>::@class::A::@method::m |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| a @25 |
| element: <testLibraryFragment>::@class::A::@method::m::@parameter::a#element |
| default b @36 |
| element: <testLibraryFragment>::@class::A::@method::m::@parameter::b#element |
| class B @51 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| methods |
| m @67 |
| reference: <testLibraryFragment>::@class::B::@method::m |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| a @69 |
| element: <testLibraryFragment>::@class::B::@method::m::@parameter::a#element |
| default b @73 |
| element: <testLibraryFragment>::@class::B::@method::m::@parameter::b#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: <testLibraryFragment>::@class::A::@method::m |
| formalParameters |
| requiredPositional a |
| type: int |
| optionalPositional b |
| type: double |
| returnType: String |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| supertype: A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| superConstructor: <testLibraryFragment>::@class::A::@constructor::new#element |
| methods |
| m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: <testLibraryFragment>::@class::B::@method::m |
| formalParameters |
| requiredPositional hasImplicitType a |
| type: int |
| optionalPositional hasImplicitType b |
| type: double |
| returnType: String |
| '''); |
| } |
| |
| test_method_OK_single_extends_indirect_generic() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A<K, V> { |
| V m(K a) {} |
| } |
| class B<T> extends A<int, T> {} |
| class C extends B<String> { |
| m(a) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| typeParameters |
| K @8 |
| element: K@8 |
| V @11 |
| element: V@11 |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| methods |
| m @20 |
| reference: <testLibraryFragment>::@class::A::@method::m |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| a @24 |
| element: <testLibraryFragment>::@class::A::@method::m::@parameter::a#element |
| class B @38 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| typeParameters |
| T @40 |
| element: T@40 |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| class C @70 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| methods |
| m @94 |
| reference: <testLibraryFragment>::@class::C::@method::m |
| element: <testLibrary>::@class::C::@method::m |
| formalParameters |
| a @96 |
| element: <testLibraryFragment>::@class::C::@method::m::@parameter::a#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| typeParameters |
| K |
| V |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: <testLibraryFragment>::@class::A::@method::m |
| hasEnclosingTypeParameterReference: true |
| formalParameters |
| requiredPositional a |
| type: K |
| returnType: V |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| typeParameters |
| T |
| supertype: A<int, T> |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| superConstructor: <testLibraryFragment>::@class::A::@constructor::new#element |
| class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| supertype: B<String> |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| superConstructor: <testLibraryFragment>::@class::B::@constructor::new#element |
| methods |
| m |
| reference: <testLibrary>::@class::C::@method::m |
| firstFragment: <testLibraryFragment>::@class::C::@method::m |
| formalParameters |
| requiredPositional hasImplicitType a |
| type: int |
| returnType: String |
| '''); |
| } |
| |
| test_method_OK_single_implements_direct_generic() async { |
| var library = await _encodeDecodeLibrary(r''' |
| abstract class A<K, V> { |
| V m(K a); |
| } |
| class B implements A<int, String> { |
| m(a) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @15 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| typeParameters |
| K @17 |
| element: K@17 |
| V @20 |
| element: V@20 |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| methods |
| m @29 |
| reference: <testLibraryFragment>::@class::A::@method::m |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| a @33 |
| element: <testLibraryFragment>::@class::A::@method::m::@parameter::a#element |
| class B @45 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| methods |
| m @77 |
| reference: <testLibraryFragment>::@class::B::@method::m |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| a @79 |
| element: <testLibraryFragment>::@class::B::@method::m::@parameter::a#element |
| classes |
| abstract class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| typeParameters |
| K |
| V |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| methods |
| abstract m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: <testLibraryFragment>::@class::A::@method::m |
| hasEnclosingTypeParameterReference: true |
| formalParameters |
| requiredPositional a |
| type: K |
| returnType: V |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| interfaces |
| A<int, String> |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: <testLibraryFragment>::@class::B::@method::m |
| formalParameters |
| requiredPositional hasImplicitType a |
| type: int |
| returnType: String |
| '''); |
| } |
| |
| test_method_OK_single_implements_direct_notGeneric() async { |
| var library = await _encodeDecodeLibrary(r''' |
| abstract class A { |
| String m(int a); |
| } |
| class B implements A { |
| m(a) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @15 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| methods |
| m @28 |
| reference: <testLibraryFragment>::@class::A::@method::m |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| a @34 |
| element: <testLibraryFragment>::@class::A::@method::m::@parameter::a#element |
| class B @46 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| methods |
| m @65 |
| reference: <testLibraryFragment>::@class::B::@method::m |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| a @67 |
| element: <testLibraryFragment>::@class::B::@method::m::@parameter::a#element |
| classes |
| abstract class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| methods |
| abstract m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: <testLibraryFragment>::@class::A::@method::m |
| formalParameters |
| requiredPositional a |
| type: int |
| returnType: String |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| interfaces |
| A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: <testLibraryFragment>::@class::B::@method::m |
| formalParameters |
| requiredPositional hasImplicitType a |
| type: int |
| returnType: String |
| '''); |
| } |
| |
| test_method_OK_single_implements_indirect_generic() async { |
| var library = await _encodeDecodeLibrary(r''' |
| abstract class A<K, V> { |
| V m(K a); |
| } |
| abstract class B<T1, T2> extends A<T2, T1> {} |
| class C implements B<int, String> { |
| m(a) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @15 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| typeParameters |
| K @17 |
| element: K@17 |
| V @20 |
| element: V@20 |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| methods |
| m @29 |
| reference: <testLibraryFragment>::@class::A::@method::m |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| a @33 |
| element: <testLibraryFragment>::@class::A::@method::m::@parameter::a#element |
| class B @54 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| typeParameters |
| T1 @56 |
| element: T1@56 |
| T2 @60 |
| element: T2@60 |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| class C @91 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| methods |
| m @123 |
| reference: <testLibraryFragment>::@class::C::@method::m |
| element: <testLibrary>::@class::C::@method::m |
| formalParameters |
| a @125 |
| element: <testLibraryFragment>::@class::C::@method::m::@parameter::a#element |
| classes |
| abstract class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| typeParameters |
| K |
| V |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| methods |
| abstract m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: <testLibraryFragment>::@class::A::@method::m |
| hasEnclosingTypeParameterReference: true |
| formalParameters |
| requiredPositional a |
| type: K |
| returnType: V |
| abstract class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| typeParameters |
| T1 |
| T2 |
| supertype: A<T2, T1> |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| superConstructor: <testLibraryFragment>::@class::A::@constructor::new#element |
| class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| interfaces |
| B<int, String> |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::C::@method::m |
| firstFragment: <testLibraryFragment>::@class::C::@method::m |
| formalParameters |
| requiredPositional hasImplicitType a |
| type: String |
| returnType: int |
| '''); |
| } |
| |
| test_method_OK_single_private_linkThroughOtherLibraryOfCycle() async { |
| newFile('$testPackageLibPath/other.dart', r''' |
| import 'test.dart'; |
| class B extends A2 {} |
| '''); |
| var library = await _encodeDecodeLibrary(r''' |
| import 'other.dart'; |
| class A1 { |
| int _foo() => 1; |
| } |
| class A2 extends A1 { |
| _foo() => 2; |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| libraryImports |
| package:test/other.dart |
| classes |
| class A1 @27 |
| reference: <testLibraryFragment>::@class::A1 |
| element: <testLibrary>::@class::A1 |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A1::@constructor::new |
| element: <testLibraryFragment>::@class::A1::@constructor::new#element |
| typeName: A1 |
| methods |
| _foo @38 |
| reference: <testLibraryFragment>::@class::A1::@method::_foo |
| element: <testLibrary>::@class::A1::@method::_foo |
| class A2 @59 |
| reference: <testLibraryFragment>::@class::A2 |
| element: <testLibrary>::@class::A2 |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A2::@constructor::new |
| element: <testLibraryFragment>::@class::A2::@constructor::new#element |
| typeName: A2 |
| methods |
| _foo @77 |
| reference: <testLibraryFragment>::@class::A2::@method::_foo |
| element: <testLibrary>::@class::A2::@method::_foo |
| classes |
| class A1 |
| reference: <testLibrary>::@class::A1 |
| firstFragment: <testLibraryFragment>::@class::A1 |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A1::@constructor::new |
| methods |
| _foo |
| reference: <testLibrary>::@class::A1::@method::_foo |
| firstFragment: <testLibraryFragment>::@class::A1::@method::_foo |
| returnType: int |
| class A2 |
| reference: <testLibrary>::@class::A2 |
| firstFragment: <testLibraryFragment>::@class::A2 |
| supertype: A1 |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A2::@constructor::new |
| superConstructor: <testLibraryFragment>::@class::A1::@constructor::new#element |
| methods |
| _foo |
| reference: <testLibrary>::@class::A2::@method::_foo |
| firstFragment: <testLibraryFragment>::@class::A2::@method::_foo |
| returnType: int |
| '''); |
| } |
| |
| test_method_OK_single_withExtends_notGeneric() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A { |
| String m(int a) {} |
| } |
| class B extends Object with A { |
| m(a) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| methods |
| m @19 |
| reference: <testLibraryFragment>::@class::A::@method::m |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| a @25 |
| element: <testLibraryFragment>::@class::A::@method::m::@parameter::a#element |
| class B @39 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| methods |
| m @67 |
| reference: <testLibraryFragment>::@class::B::@method::m |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| a @69 |
| element: <testLibraryFragment>::@class::B::@method::m::@parameter::a#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: <testLibraryFragment>::@class::A::@method::m |
| formalParameters |
| requiredPositional a |
| type: int |
| returnType: String |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| supertype: Object |
| mixins |
| A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: <testLibraryFragment>::@class::B::@method::m |
| formalParameters |
| requiredPositional hasImplicitType a |
| type: int |
| returnType: String |
| '''); |
| } |
| |
| test_method_OK_two_extendsImplements_generic() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A<K, V> { |
| V m(K a) {} |
| } |
| class B<T> { |
| T m(int a) {} |
| } |
| class C extends A<int, String> implements B<String> { |
| m(a) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| typeParameters |
| K @8 |
| element: K@8 |
| V @11 |
| element: V@11 |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| methods |
| m @20 |
| reference: <testLibraryFragment>::@class::A::@method::m |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| a @24 |
| element: <testLibraryFragment>::@class::A::@method::m::@parameter::a#element |
| class B @38 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| typeParameters |
| T @40 |
| element: T@40 |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| methods |
| m @49 |
| reference: <testLibraryFragment>::@class::B::@method::m |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| a @55 |
| element: <testLibraryFragment>::@class::B::@method::m::@parameter::a#element |
| class C @69 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| methods |
| m @119 |
| reference: <testLibraryFragment>::@class::C::@method::m |
| element: <testLibrary>::@class::C::@method::m |
| formalParameters |
| a @121 |
| element: <testLibraryFragment>::@class::C::@method::m::@parameter::a#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| typeParameters |
| K |
| V |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: <testLibraryFragment>::@class::A::@method::m |
| hasEnclosingTypeParameterReference: true |
| formalParameters |
| requiredPositional a |
| type: K |
| returnType: V |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| typeParameters |
| T |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: <testLibraryFragment>::@class::B::@method::m |
| hasEnclosingTypeParameterReference: true |
| formalParameters |
| requiredPositional a |
| type: int |
| returnType: T |
| class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| supertype: A<int, String> |
| interfaces |
| B<String> |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| superConstructor: <testLibraryFragment>::@class::A::@constructor::new#element |
| methods |
| m |
| reference: <testLibrary>::@class::C::@method::m |
| firstFragment: <testLibraryFragment>::@class::C::@method::m |
| formalParameters |
| requiredPositional hasImplicitType a |
| type: int |
| returnType: String |
| '''); |
| } |
| |
| test_method_OK_two_extendsImplements_notGeneric() async { |
| var library = await _encodeDecodeLibrary(r''' |
| class A { |
| String m(int a) {} |
| } |
| class B { |
| String m(int a) {} |
| } |
| class C extends A implements B { |
| m(a) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| class A @6 |
| reference: <testLibraryFragment>::@class::A |
| element: <testLibrary>::@class::A |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::A::@constructor::new |
| element: <testLibraryFragment>::@class::A::@constructor::new#element |
| typeName: A |
| methods |
| m @19 |
| reference: <testLibraryFragment>::@class::A::@method::m |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| a @25 |
| element: <testLibraryFragment>::@class::A::@method::m::@parameter::a#element |
| class B @39 |
| reference: <testLibraryFragment>::@class::B |
| element: <testLibrary>::@class::B |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::B::@constructor::new |
| element: <testLibraryFragment>::@class::B::@constructor::new#element |
| typeName: B |
| methods |
| m @52 |
| reference: <testLibraryFragment>::@class::B::@method::m |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| a @58 |
| element: <testLibraryFragment>::@class::B::@method::m::@parameter::a#element |
| class C @72 |
| reference: <testLibraryFragment>::@class::C |
| element: <testLibrary>::@class::C |
| constructors |
| synthetic new |
| reference: <testLibraryFragment>::@class::C::@constructor::new |
| element: <testLibraryFragment>::@class::C::@constructor::new#element |
| typeName: C |
| methods |
| m @101 |
| reference: <testLibraryFragment>::@class::C::@method::m |
| element: <testLibrary>::@class::C::@method::m |
| formalParameters |
| a @103 |
| element: <testLibraryFragment>::@class::C::@method::m::@parameter::a#element |
| classes |
| class A |
| reference: <testLibrary>::@class::A |
| firstFragment: <testLibraryFragment>::@class::A |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::A::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: <testLibraryFragment>::@class::A::@method::m |
| formalParameters |
| requiredPositional a |
| type: int |
| returnType: String |
| class B |
| reference: <testLibrary>::@class::B |
| firstFragment: <testLibraryFragment>::@class::B |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::B::@constructor::new |
| methods |
| m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: <testLibraryFragment>::@class::B::@method::m |
| formalParameters |
| requiredPositional a |
| type: int |
| returnType: String |
| class C |
| reference: <testLibrary>::@class::C |
| firstFragment: <testLibraryFragment>::@class::C |
| supertype: A |
| interfaces |
| B |
| constructors |
| synthetic new |
| firstFragment: <testLibraryFragment>::@class::C::@constructor::new |
| superConstructor: <testLibraryFragment>::@class::A::@constructor::new#element |
| methods |
| m |
| reference: <testLibrary>::@class::C::@method::m |
| firstFragment: <testLibraryFragment>::@class::C::@method::m |
| formalParameters |
| requiredPositional hasImplicitType a |
| type: int |
| returnType: String |
| '''); |
| } |
| |
| Future<LibraryElementImpl> _encodeDecodeLibrary(String text) async { |
| newFile(testFile.path, text); |
| |
| var analysisSession = contextFor(testFile).currentSession; |
| var result = await analysisSession.getUnitElement(testFile.path); |
| result as UnitElementResult; |
| return result.fragment.element as LibraryElementImpl; |
| } |
| } |