| // 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: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 resolveTestCodeWithDiagnostics(''' |
| var a = 1; |
| var t1 = a += 1; |
| var t2 = a = 2; |
| '''); |
| } |
| |
| test_initializer_binary_onlyLeft() async { |
| await resolveTestCodeWithDiagnostics(''' |
| var a = 1; |
| var t = (a = 1) + (a = 2); |
| '''); |
| } |
| |
| test_initializer_bitwise() async { |
| await _assertErrorOnlyLeft(['&', '|', '^']); |
| } |
| |
| test_initializer_boolean() async { |
| await resolveTestCodeWithDiagnostics(''' |
| 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 resolveTestCodeWithDiagnostics(''' |
| var a = 0; |
| var t = (a = 1)..isEven; |
| '''); |
| } |
| |
| test_initializer_classField_instance_instanceCreation() async { |
| await resolveTestCodeWithDiagnostics(''' |
| class A<T> {} |
| class B { |
| var t1 = new A<int>(); |
| var t2 = new A(); |
| } |
| '''); |
| } |
| |
| test_initializer_classField_static_instanceCreation() async { |
| await resolveTestCodeWithDiagnostics(''' |
| class A<T> {} |
| class B { |
| static var t1 = 1; |
| static var t2 = new A(); |
| } |
| '''); |
| } |
| |
| test_initializer_conditional() async { |
| await resolveTestCodeWithDiagnostics(''' |
| var a = 1; |
| var b = true; |
| var t = b |
| ? (a = 1) |
| : (a = 2); |
| '''); |
| } |
| |
| test_initializer_dependencyCycle() async { |
| await resolveTestCodeWithDiagnostics(''' |
| var a = b; |
| // ^ |
| // [diag.topLevelCycle] The type of 'a' can't be inferred because it depends on itself through the cycle: a, b. |
| var b = a; |
| // ^ |
| // [diag.topLevelCycle] The type of 'b' can't be inferred because it depends on itself through the cycle: a, b. |
| '''); |
| } |
| |
| test_initializer_equality() async { |
| await resolveTestCodeWithDiagnostics(''' |
| var a = 1; |
| var t1 = ((a = 1) == 0) == ((a = 2) == 0); |
| var t2 = ((a = 1) == 0) != ((a = 2) == 0); |
| '''); |
| } |
| |
| test_initializer_extractIndex() async { |
| await resolveTestCodeWithDiagnostics(''' |
| var a = [0, 1.2]; |
| var b0 = a[0]; |
| var b1 = a[1]; |
| '''); |
| } |
| |
| test_initializer_functionLiteral_blockBody() async { |
| var result = await resolveTestCodeWithDiagnostics(''' |
| var t = (int p) {}; |
| '''); |
| assertType(result.findElement.topVar('t').type, 'Null Function(int)'); |
| } |
| |
| test_initializer_functionLiteral_expressionBody() async { |
| var result = await resolveTestCodeWithDiagnostics(''' |
| var a = 0; |
| var t = (int p) => (a = 1); |
| '''); |
| assertType(result.findElement.topVar('t').type, 'int Function(int)'); |
| } |
| |
| test_initializer_functionLiteral_parameters_withoutType() async { |
| var result = await resolveTestCodeWithDiagnostics(''' |
| var t = (int a, b,int c, d) => 0; |
| '''); |
| assertType( |
| result.findElement.topVar('t').type, |
| 'int Function(int, dynamic, int, dynamic)', |
| ); |
| } |
| |
| test_initializer_hasTypeAnnotation() async { |
| await resolveTestCodeWithDiagnostics(''' |
| var a = 1; |
| int t = (a = 1); |
| '''); |
| } |
| |
| test_initializer_identifier() async { |
| await resolveTestCodeWithDiagnostics(''' |
| 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 resolveTestCodeWithDiagnostics(''' |
| var a = 0; |
| var b = (a = 1); |
| var c = b; |
| '''); |
| } |
| |
| test_initializer_ifNull() async { |
| await resolveTestCodeWithDiagnostics(''' |
| int? a = 1; |
| var t = a ?? 2; |
| '''); |
| } |
| |
| test_initializer_instanceCreation_withoutTypeParameters() async { |
| await resolveTestCodeWithDiagnostics(''' |
| class A {} |
| var t = new A(); |
| '''); |
| } |
| |
| test_initializer_instanceCreation_withTypeParameters() async { |
| await resolveTestCodeWithDiagnostics(''' |
| class A<T> {} |
| var t1 = new A<int>(); |
| var t2 = new A(); |
| '''); |
| } |
| |
| test_initializer_instanceGetter() async { |
| await resolveTestCodeWithDiagnostics(''' |
| class A { |
| int f = 1; |
| } |
| var a = new A().f; |
| '''); |
| } |
| |
| test_initializer_methodInvocation_function() async { |
| await resolveTestCodeWithDiagnostics(''' |
| int f1() => 0; |
| T f2<T>() => throw 0; |
| var t1 = f1(); |
| var t2 = f2(); |
| var t3 = f2<int>(); |
| '''); |
| } |
| |
| test_initializer_methodInvocation_method() async { |
| await resolveTestCodeWithDiagnostics(''' |
| 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 resolveTestCodeWithDiagnostics(''' |
| var a = 1; |
| var t1 = a++; |
| var t2 = a--; |
| '''); |
| } |
| |
| test_initializer_prefixIncDec() async { |
| await resolveTestCodeWithDiagnostics(''' |
| 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 resolveTestCodeWithDiagnostics(''' |
| var a = 1; |
| var t = <int>[a = 1]; |
| '''); |
| } |
| |
| test_initializer_typedMap() async { |
| await resolveTestCodeWithDiagnostics(''' |
| var a = 1; |
| var t = <int, int>{(a = 1) : (a = 2)}; |
| '''); |
| } |
| |
| test_initializer_untypedList() async { |
| await resolveTestCodeWithDiagnostics(''' |
| var a = 1; |
| var t = [ |
| a = 1, |
| 2, |
| 3, |
| ]; |
| '''); |
| } |
| |
| test_initializer_untypedMap() async { |
| await resolveTestCodeWithDiagnostics(''' |
| var a = 1; |
| var t = { |
| (a = 1) : |
| (a = 2), |
| }; |
| '''); |
| } |
| |
| test_override_conflictFieldType() async { |
| await resolveTestCodeWithDiagnostics(''' |
| abstract class A { |
| int aaa = 0; |
| // ^^^ |
| // [context 1] The member being overridden. |
| } |
| abstract class B { |
| String aaa = '0'; |
| // ^^^ |
| // [context 2] The member being overridden. |
| } |
| class C implements A, B { |
| var aaa; |
| // ^^^ |
| // [diag.invalidOverride][context 1] 'C.aaa' ('dynamic Function()') isn't a valid override of 'A.aaa' ('int Function()'). |
| // [diag.invalidOverride][context 2] 'C.aaa' ('dynamic Function()') isn't a valid override of 'B.aaa' ('String Function()'). |
| } |
| '''); |
| } |
| |
| test_override_conflictParameterType_method() async { |
| await resolveTestCodeWithDiagnostics(''' |
| abstract class A { |
| void mmm(int a); |
| } |
| abstract class B { |
| void mmm(String a); |
| } |
| class C implements A, B { |
| void mmm(a) {} |
| // ^^^ |
| // [diag.noCombinedSuperSignature] Can't infer missing types in 'C' from overridden methods: A.mmm (void Function(int)), B.mmm (void Function(String)). |
| } |
| '''); |
| } |
| |
| 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 resolveTestCodeWithDiagnostics(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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic vPlusIntInt (nameOffset:4) (firstTokenOffset:4) (offset:4) |
| element: <testLibrary>::@topLevelVariable::vPlusIntInt |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| #F4 hasImplicitType hasInitializer isOriginDeclaration isStatic vPlusIntDouble (nameOffset:29) (firstTokenOffset:29) (offset:29) |
| element: <testLibrary>::@topLevelVariable::vPlusIntDouble |
| inducedGetter: #F5 |
| inducedSetter: #F6 |
| #F7 hasImplicitType hasInitializer isOriginDeclaration isStatic vPlusDoubleInt (nameOffset:59) (firstTokenOffset:59) (offset:59) |
| element: <testLibrary>::@topLevelVariable::vPlusDoubleInt |
| inducedGetter: #F8 |
| inducedSetter: #F9 |
| #F10 hasImplicitType hasInitializer isOriginDeclaration isStatic vPlusDoubleDouble (nameOffset:89) (firstTokenOffset:89) (offset:89) |
| element: <testLibrary>::@topLevelVariable::vPlusDoubleDouble |
| inducedGetter: #F11 |
| inducedSetter: #F12 |
| #F13 hasImplicitType hasInitializer isOriginDeclaration isStatic vMinusIntInt (nameOffset:124) (firstTokenOffset:124) (offset:124) |
| element: <testLibrary>::@topLevelVariable::vMinusIntInt |
| inducedGetter: #F14 |
| inducedSetter: #F15 |
| #F16 hasImplicitType hasInitializer isOriginDeclaration isStatic vMinusIntDouble (nameOffset:150) (firstTokenOffset:150) (offset:150) |
| element: <testLibrary>::@topLevelVariable::vMinusIntDouble |
| inducedGetter: #F17 |
| inducedSetter: #F18 |
| #F19 hasImplicitType hasInitializer isOriginDeclaration isStatic vMinusDoubleInt (nameOffset:181) (firstTokenOffset:181) (offset:181) |
| element: <testLibrary>::@topLevelVariable::vMinusDoubleInt |
| inducedGetter: #F20 |
| inducedSetter: #F21 |
| #F22 hasImplicitType hasInitializer isOriginDeclaration isStatic vMinusDoubleDouble (nameOffset:212) (firstTokenOffset:212) (offset:212) |
| element: <testLibrary>::@topLevelVariable::vMinusDoubleDouble |
| inducedGetter: #F23 |
| inducedSetter: #F24 |
| getters |
| #F2 isComplete isOriginVariable isStatic vPlusIntInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@getter::vPlusIntInt |
| inducingVariable: #F1 |
| #F5 isComplete isOriginVariable isStatic vPlusIntDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:29) |
| element: <testLibrary>::@getter::vPlusIntDouble |
| inducingVariable: #F4 |
| #F8 isComplete isOriginVariable isStatic vPlusDoubleInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:59) |
| element: <testLibrary>::@getter::vPlusDoubleInt |
| inducingVariable: #F7 |
| #F11 isComplete isOriginVariable isStatic vPlusDoubleDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:89) |
| element: <testLibrary>::@getter::vPlusDoubleDouble |
| inducingVariable: #F10 |
| #F14 isComplete isOriginVariable isStatic vMinusIntInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:124) |
| element: <testLibrary>::@getter::vMinusIntInt |
| inducingVariable: #F13 |
| #F17 isComplete isOriginVariable isStatic vMinusIntDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:150) |
| element: <testLibrary>::@getter::vMinusIntDouble |
| inducingVariable: #F16 |
| #F20 isComplete isOriginVariable isStatic vMinusDoubleInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:181) |
| element: <testLibrary>::@getter::vMinusDoubleInt |
| inducingVariable: #F19 |
| #F23 isComplete isOriginVariable isStatic vMinusDoubleDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:212) |
| element: <testLibrary>::@getter::vMinusDoubleDouble |
| inducingVariable: #F22 |
| setters |
| #F3 isComplete isOriginVariable isStatic vPlusIntInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::vPlusIntInt |
| inducingVariable: #F1 |
| formalParameters |
| #F25 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::vPlusIntInt::@formalParameter::value |
| #F6 isComplete isOriginVariable isStatic vPlusIntDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:29) |
| element: <testLibrary>::@setter::vPlusIntDouble |
| inducingVariable: #F4 |
| formalParameters |
| #F26 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:29) |
| element: <testLibrary>::@setter::vPlusIntDouble::@formalParameter::value |
| #F9 isComplete isOriginVariable isStatic vPlusDoubleInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:59) |
| element: <testLibrary>::@setter::vPlusDoubleInt |
| inducingVariable: #F7 |
| formalParameters |
| #F27 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:59) |
| element: <testLibrary>::@setter::vPlusDoubleInt::@formalParameter::value |
| #F12 isComplete isOriginVariable isStatic vPlusDoubleDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:89) |
| element: <testLibrary>::@setter::vPlusDoubleDouble |
| inducingVariable: #F10 |
| formalParameters |
| #F28 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:89) |
| element: <testLibrary>::@setter::vPlusDoubleDouble::@formalParameter::value |
| #F15 isComplete isOriginVariable isStatic vMinusIntInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:124) |
| element: <testLibrary>::@setter::vMinusIntInt |
| inducingVariable: #F13 |
| formalParameters |
| #F29 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:124) |
| element: <testLibrary>::@setter::vMinusIntInt::@formalParameter::value |
| #F18 isComplete isOriginVariable isStatic vMinusIntDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:150) |
| element: <testLibrary>::@setter::vMinusIntDouble |
| inducingVariable: #F16 |
| formalParameters |
| #F30 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:150) |
| element: <testLibrary>::@setter::vMinusIntDouble::@formalParameter::value |
| #F21 isComplete isOriginVariable isStatic vMinusDoubleInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:181) |
| element: <testLibrary>::@setter::vMinusDoubleInt |
| inducingVariable: #F19 |
| formalParameters |
| #F31 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:181) |
| element: <testLibrary>::@setter::vMinusDoubleInt::@formalParameter::value |
| #F24 isComplete isOriginVariable isStatic vMinusDoubleDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:212) |
| element: <testLibrary>::@setter::vMinusDoubleDouble |
| inducingVariable: #F22 |
| formalParameters |
| #F32 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:212) |
| element: <testLibrary>::@setter::vMinusDoubleDouble::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vPlusIntInt |
| reference: <testLibrary>::@topLevelVariable::vPlusIntInt |
| firstFragment: #F1 |
| type: int |
| getter: <testLibrary>::@getter::vPlusIntInt |
| setter: <testLibrary>::@setter::vPlusIntInt |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vPlusIntDouble |
| reference: <testLibrary>::@topLevelVariable::vPlusIntDouble |
| firstFragment: #F4 |
| type: double |
| getter: <testLibrary>::@getter::vPlusIntDouble |
| setter: <testLibrary>::@setter::vPlusIntDouble |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vPlusDoubleInt |
| reference: <testLibrary>::@topLevelVariable::vPlusDoubleInt |
| firstFragment: #F7 |
| type: double |
| getter: <testLibrary>::@getter::vPlusDoubleInt |
| setter: <testLibrary>::@setter::vPlusDoubleInt |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vPlusDoubleDouble |
| reference: <testLibrary>::@topLevelVariable::vPlusDoubleDouble |
| firstFragment: #F10 |
| type: double |
| getter: <testLibrary>::@getter::vPlusDoubleDouble |
| setter: <testLibrary>::@setter::vPlusDoubleDouble |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vMinusIntInt |
| reference: <testLibrary>::@topLevelVariable::vMinusIntInt |
| firstFragment: #F13 |
| type: int |
| getter: <testLibrary>::@getter::vMinusIntInt |
| setter: <testLibrary>::@setter::vMinusIntInt |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vMinusIntDouble |
| reference: <testLibrary>::@topLevelVariable::vMinusIntDouble |
| firstFragment: #F16 |
| type: double |
| getter: <testLibrary>::@getter::vMinusIntDouble |
| setter: <testLibrary>::@setter::vMinusIntDouble |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vMinusDoubleInt |
| reference: <testLibrary>::@topLevelVariable::vMinusDoubleInt |
| firstFragment: #F19 |
| type: double |
| getter: <testLibrary>::@getter::vMinusDoubleInt |
| setter: <testLibrary>::@setter::vMinusDoubleInt |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vMinusDoubleDouble |
| reference: <testLibrary>::@topLevelVariable::vMinusDoubleDouble |
| firstFragment: #F22 |
| type: double |
| getter: <testLibrary>::@getter::vMinusDoubleDouble |
| setter: <testLibrary>::@setter::vMinusDoubleDouble |
| getters |
| isOriginVariable isStatic vPlusIntInt |
| reference: <testLibrary>::@getter::vPlusIntInt |
| firstFragment: #F2 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::vPlusIntInt |
| isOriginVariable isStatic vPlusIntDouble |
| reference: <testLibrary>::@getter::vPlusIntDouble |
| firstFragment: #F5 |
| returnType: double |
| variable: <testLibrary>::@topLevelVariable::vPlusIntDouble |
| isOriginVariable isStatic vPlusDoubleInt |
| reference: <testLibrary>::@getter::vPlusDoubleInt |
| firstFragment: #F8 |
| returnType: double |
| variable: <testLibrary>::@topLevelVariable::vPlusDoubleInt |
| isOriginVariable isStatic vPlusDoubleDouble |
| reference: <testLibrary>::@getter::vPlusDoubleDouble |
| firstFragment: #F11 |
| returnType: double |
| variable: <testLibrary>::@topLevelVariable::vPlusDoubleDouble |
| isOriginVariable isStatic vMinusIntInt |
| reference: <testLibrary>::@getter::vMinusIntInt |
| firstFragment: #F14 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::vMinusIntInt |
| isOriginVariable isStatic vMinusIntDouble |
| reference: <testLibrary>::@getter::vMinusIntDouble |
| firstFragment: #F17 |
| returnType: double |
| variable: <testLibrary>::@topLevelVariable::vMinusIntDouble |
| isOriginVariable isStatic vMinusDoubleInt |
| reference: <testLibrary>::@getter::vMinusDoubleInt |
| firstFragment: #F20 |
| returnType: double |
| variable: <testLibrary>::@topLevelVariable::vMinusDoubleInt |
| isOriginVariable isStatic vMinusDoubleDouble |
| reference: <testLibrary>::@getter::vMinusDoubleDouble |
| firstFragment: #F23 |
| returnType: double |
| variable: <testLibrary>::@topLevelVariable::vMinusDoubleDouble |
| setters |
| isOriginVariable isStatic vPlusIntInt |
| reference: <testLibrary>::@setter::vPlusIntInt |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F25 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vPlusIntInt |
| isOriginVariable isStatic vPlusIntDouble |
| reference: <testLibrary>::@setter::vPlusIntDouble |
| firstFragment: #F6 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F26 |
| type: double |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vPlusIntDouble |
| isOriginVariable isStatic vPlusDoubleInt |
| reference: <testLibrary>::@setter::vPlusDoubleInt |
| firstFragment: #F9 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F27 |
| type: double |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vPlusDoubleInt |
| isOriginVariable isStatic vPlusDoubleDouble |
| reference: <testLibrary>::@setter::vPlusDoubleDouble |
| firstFragment: #F12 |
| formalParameters |
| #E3 requiredPositional value |
| firstFragment: #F28 |
| type: double |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vPlusDoubleDouble |
| isOriginVariable isStatic vMinusIntInt |
| reference: <testLibrary>::@setter::vMinusIntInt |
| firstFragment: #F15 |
| formalParameters |
| #E4 requiredPositional value |
| firstFragment: #F29 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vMinusIntInt |
| isOriginVariable isStatic vMinusIntDouble |
| reference: <testLibrary>::@setter::vMinusIntDouble |
| firstFragment: #F18 |
| formalParameters |
| #E5 requiredPositional value |
| firstFragment: #F30 |
| type: double |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vMinusIntDouble |
| isOriginVariable isStatic vMinusDoubleInt |
| reference: <testLibrary>::@setter::vMinusDoubleInt |
| firstFragment: #F21 |
| formalParameters |
| #E6 requiredPositional value |
| firstFragment: #F31 |
| type: double |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vMinusDoubleInt |
| isOriginVariable isStatic vMinusDoubleDouble |
| reference: <testLibrary>::@setter::vMinusDoubleDouble |
| firstFragment: #F24 |
| formalParameters |
| #E7 requiredPositional value |
| firstFragment: #F32 |
| type: double |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vMinusDoubleDouble |
| '''); |
| } |
| |
| test_initializer_as() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var V = 1 as num; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic V (nameOffset:4) (firstTokenOffset:4) (offset:4) |
| element: <testLibrary>::@topLevelVariable::V |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| getters |
| #F2 isComplete isOriginVariable isStatic V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@getter::V |
| inducingVariable: #F1 |
| setters |
| #F3 isComplete isOriginVariable isStatic V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::V |
| inducingVariable: #F1 |
| formalParameters |
| #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::V::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer V |
| reference: <testLibrary>::@topLevelVariable::V |
| firstFragment: #F1 |
| type: num |
| getter: <testLibrary>::@getter::V |
| setter: <testLibrary>::@setter::V |
| getters |
| isOriginVariable isStatic V |
| reference: <testLibrary>::@getter::V |
| firstFragment: #F2 |
| returnType: num |
| variable: <testLibrary>::@topLevelVariable::V |
| setters |
| isOriginVariable isStatic V |
| reference: <testLibrary>::@setter::V |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F4 |
| type: num |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::V |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic a (nameOffset:4) (firstTokenOffset:4) (offset:4) |
| element: <testLibrary>::@topLevelVariable::a |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| #F4 hasImplicitType hasInitializer isOriginDeclaration isStatic t1 (nameOffset:15) (firstTokenOffset:15) (offset:15) |
| element: <testLibrary>::@topLevelVariable::t1 |
| inducedGetter: #F5 |
| inducedSetter: #F6 |
| #F7 hasImplicitType hasInitializer isOriginDeclaration isStatic t2 (nameOffset:33) (firstTokenOffset:33) (offset:33) |
| element: <testLibrary>::@topLevelVariable::t2 |
| inducedGetter: #F8 |
| inducedSetter: #F9 |
| getters |
| #F2 isComplete isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@getter::a |
| inducingVariable: #F1 |
| #F5 isComplete isOriginVariable isStatic t1 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@getter::t1 |
| inducingVariable: #F4 |
| #F8 isComplete isOriginVariable isStatic t2 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:33) |
| element: <testLibrary>::@getter::t2 |
| inducingVariable: #F7 |
| setters |
| #F3 isComplete isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::a |
| inducingVariable: #F1 |
| formalParameters |
| #F10 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::a::@formalParameter::value |
| #F6 isComplete isOriginVariable isStatic t1 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@setter::t1 |
| inducingVariable: #F4 |
| formalParameters |
| #F11 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@setter::t1::@formalParameter::value |
| #F9 isComplete isOriginVariable isStatic t2 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:33) |
| element: <testLibrary>::@setter::t2 |
| inducingVariable: #F7 |
| formalParameters |
| #F12 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:33) |
| element: <testLibrary>::@setter::t2::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer a |
| reference: <testLibrary>::@topLevelVariable::a |
| firstFragment: #F1 |
| type: int |
| getter: <testLibrary>::@getter::a |
| setter: <testLibrary>::@setter::a |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer t1 |
| reference: <testLibrary>::@topLevelVariable::t1 |
| firstFragment: #F4 |
| type: int |
| getter: <testLibrary>::@getter::t1 |
| setter: <testLibrary>::@setter::t1 |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer t2 |
| reference: <testLibrary>::@topLevelVariable::t2 |
| firstFragment: #F7 |
| type: int |
| getter: <testLibrary>::@getter::t2 |
| setter: <testLibrary>::@setter::t2 |
| getters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@getter::a |
| firstFragment: #F2 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::a |
| isOriginVariable isStatic t1 |
| reference: <testLibrary>::@getter::t1 |
| firstFragment: #F5 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::t1 |
| isOriginVariable isStatic t2 |
| reference: <testLibrary>::@getter::t2 |
| firstFragment: #F8 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::t2 |
| setters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@setter::a |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F10 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::a |
| isOriginVariable isStatic t1 |
| reference: <testLibrary>::@setter::t1 |
| firstFragment: #F6 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F11 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::t1 |
| isOriginVariable isStatic t2 |
| reference: <testLibrary>::@setter::t2 |
| firstFragment: #F9 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F12 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::t2 |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic a (nameOffset:4) (firstTokenOffset:4) (offset:4) |
| element: <testLibrary>::@topLevelVariable::a |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| #F4 hasImplicitType hasInitializer isOriginDeclaration isStatic t1 (nameOffset:17) (firstTokenOffset:17) (offset:17) |
| element: <testLibrary>::@topLevelVariable::t1 |
| inducedGetter: #F5 |
| inducedSetter: #F6 |
| #F7 hasImplicitType hasInitializer isOriginDeclaration isStatic t2 (nameOffset:38) (firstTokenOffset:38) (offset:38) |
| element: <testLibrary>::@topLevelVariable::t2 |
| inducedGetter: #F8 |
| inducedSetter: #F9 |
| getters |
| #F2 isComplete isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@getter::a |
| inducingVariable: #F1 |
| #F5 isComplete isOriginVariable isStatic t1 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:17) |
| element: <testLibrary>::@getter::t1 |
| inducingVariable: #F4 |
| #F8 isComplete isOriginVariable isStatic t2 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:38) |
| element: <testLibrary>::@getter::t2 |
| inducingVariable: #F7 |
| setters |
| #F3 isComplete isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::a |
| inducingVariable: #F1 |
| formalParameters |
| #F10 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::a::@formalParameter::value |
| #F6 isComplete isOriginVariable isStatic t1 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:17) |
| element: <testLibrary>::@setter::t1 |
| inducingVariable: #F4 |
| formalParameters |
| #F11 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:17) |
| element: <testLibrary>::@setter::t1::@formalParameter::value |
| #F9 isComplete isOriginVariable isStatic t2 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:38) |
| element: <testLibrary>::@setter::t2 |
| inducingVariable: #F7 |
| formalParameters |
| #F12 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:38) |
| element: <testLibrary>::@setter::t2::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer a |
| reference: <testLibrary>::@topLevelVariable::a |
| firstFragment: #F1 |
| type: List<int> |
| getter: <testLibrary>::@getter::a |
| setter: <testLibrary>::@setter::a |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer t1 |
| reference: <testLibrary>::@topLevelVariable::t1 |
| firstFragment: #F4 |
| type: int |
| getter: <testLibrary>::@getter::t1 |
| setter: <testLibrary>::@setter::t1 |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer t2 |
| reference: <testLibrary>::@topLevelVariable::t2 |
| firstFragment: #F7 |
| type: int |
| getter: <testLibrary>::@getter::t2 |
| setter: <testLibrary>::@setter::t2 |
| getters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@getter::a |
| firstFragment: #F2 |
| returnType: List<int> |
| variable: <testLibrary>::@topLevelVariable::a |
| isOriginVariable isStatic t1 |
| reference: <testLibrary>::@getter::t1 |
| firstFragment: #F5 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::t1 |
| isOriginVariable isStatic t2 |
| reference: <testLibrary>::@getter::t2 |
| firstFragment: #F8 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::t2 |
| setters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@setter::a |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F10 |
| type: List<int> |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::a |
| isOriginVariable isStatic t1 |
| reference: <testLibrary>::@setter::t1 |
| firstFragment: #F6 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F11 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::t1 |
| isOriginVariable isStatic t2 |
| reference: <testLibrary>::@setter::t2 |
| firstFragment: #F9 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F12 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::t2 |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 isOriginDeclaration f (nameOffset:16) (firstTokenOffset:16) (offset:16) |
| element: <testLibrary>::@class::A::@field::f |
| inducedGetter: #F3 |
| inducedSetter: #F4 |
| constructors |
| #F5 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F3 isComplete isOriginVariable f (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::A::@getter::f |
| inducingVariable: #F2 |
| setters |
| #F4 isComplete isOriginVariable f (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::A::@setter::f |
| inducingVariable: #F2 |
| formalParameters |
| #F6 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::A::@setter::f::@formalParameter::value |
| topLevelVariables |
| #F7 hasImplicitType hasInitializer isOriginDeclaration isStatic a (nameOffset:25) (firstTokenOffset:25) (offset:25) |
| element: <testLibrary>::@topLevelVariable::a |
| inducedGetter: #F8 |
| inducedSetter: #F9 |
| #F10 hasImplicitType hasInitializer isOriginDeclaration isStatic t1 (nameOffset:42) (firstTokenOffset:42) (offset:42) |
| element: <testLibrary>::@topLevelVariable::t1 |
| inducedGetter: #F11 |
| inducedSetter: #F12 |
| #F13 hasImplicitType hasInitializer isOriginDeclaration isStatic t2 (nameOffset:62) (firstTokenOffset:62) (offset:62) |
| element: <testLibrary>::@topLevelVariable::t2 |
| inducedGetter: #F14 |
| inducedSetter: #F15 |
| getters |
| #F8 isComplete isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@getter::a |
| inducingVariable: #F7 |
| #F11 isComplete isOriginVariable isStatic t1 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:42) |
| element: <testLibrary>::@getter::t1 |
| inducingVariable: #F10 |
| #F14 isComplete isOriginVariable isStatic t2 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:62) |
| element: <testLibrary>::@getter::t2 |
| inducingVariable: #F13 |
| setters |
| #F9 isComplete isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@setter::a |
| inducingVariable: #F7 |
| formalParameters |
| #F16 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@setter::a::@formalParameter::value |
| #F12 isComplete isOriginVariable isStatic t1 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:42) |
| element: <testLibrary>::@setter::t1 |
| inducingVariable: #F10 |
| formalParameters |
| #F17 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:42) |
| element: <testLibrary>::@setter::t1::@formalParameter::value |
| #F15 isComplete isOriginVariable isStatic t2 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:62) |
| element: <testLibrary>::@setter::t2 |
| inducingVariable: #F13 |
| formalParameters |
| #F18 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:62) |
| element: <testLibrary>::@setter::t2::@formalParameter::value |
| classes |
| hasNonFinalField isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| isOriginDeclaration f |
| reference: <testLibrary>::@class::A::@field::f |
| firstFragment: #F2 |
| type: int |
| getter: <testLibrary>::@class::A::@getter::f |
| setter: <testLibrary>::@class::A::@setter::f |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F5 |
| getters |
| isOriginVariable f |
| reference: <testLibrary>::@class::A::@getter::f |
| firstFragment: #F3 |
| returnType: int |
| variable: <testLibrary>::@class::A::@field::f |
| setters |
| isOriginVariable f |
| reference: <testLibrary>::@class::A::@setter::f |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F6 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::A::@field::f |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer a |
| reference: <testLibrary>::@topLevelVariable::a |
| firstFragment: #F7 |
| type: A |
| getter: <testLibrary>::@getter::a |
| setter: <testLibrary>::@setter::a |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer t1 |
| reference: <testLibrary>::@topLevelVariable::t1 |
| firstFragment: #F10 |
| type: int |
| getter: <testLibrary>::@getter::t1 |
| setter: <testLibrary>::@setter::t1 |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer t2 |
| reference: <testLibrary>::@topLevelVariable::t2 |
| firstFragment: #F13 |
| type: int |
| getter: <testLibrary>::@getter::t2 |
| setter: <testLibrary>::@setter::t2 |
| getters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@getter::a |
| firstFragment: #F8 |
| returnType: A |
| variable: <testLibrary>::@topLevelVariable::a |
| isOriginVariable isStatic t1 |
| reference: <testLibrary>::@getter::t1 |
| firstFragment: #F11 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::t1 |
| isOriginVariable isStatic t2 |
| reference: <testLibrary>::@getter::t2 |
| firstFragment: #F14 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::t2 |
| setters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@setter::a |
| firstFragment: #F9 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F16 |
| type: A |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::a |
| isOriginVariable isStatic t1 |
| reference: <testLibrary>::@setter::t1 |
| firstFragment: #F12 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F17 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::t1 |
| isOriginVariable isStatic t2 |
| reference: <testLibrary>::@setter::t2 |
| firstFragment: #F15 |
| formalParameters |
| #E3 requiredPositional value |
| firstFragment: #F18 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::t2 |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class I (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::I |
| fields |
| #F2 isOriginDeclaration f (nameOffset:16) (firstTokenOffset:16) (offset:16) |
| element: <testLibrary>::@class::I::@field::f |
| inducedGetter: #F3 |
| inducedSetter: #F4 |
| constructors |
| #F5 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::I::@constructor::new |
| typeName: I |
| getters |
| #F3 isComplete isOriginVariable f (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::I::@getter::f |
| inducingVariable: #F2 |
| setters |
| #F4 isComplete isOriginVariable f (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::I::@setter::f |
| inducingVariable: #F2 |
| formalParameters |
| #F6 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::I::@setter::f::@formalParameter::value |
| #F7 isAbstract class C (nameOffset:36) (firstTokenOffset:21) (offset:36) |
| element: <testLibrary>::@class::C |
| constructors |
| #F8 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:36) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| topLevelVariables |
| #F9 isOriginDeclaration isStatic c (nameOffset:56) (firstTokenOffset:56) (offset:56) |
| element: <testLibrary>::@topLevelVariable::c |
| inducedGetter: #F10 |
| inducedSetter: #F11 |
| #F12 hasImplicitType hasInitializer isOriginDeclaration isStatic t1 (nameOffset:63) (firstTokenOffset:63) (offset:63) |
| element: <testLibrary>::@topLevelVariable::t1 |
| inducedGetter: #F13 |
| inducedSetter: #F14 |
| #F15 hasImplicitType hasInitializer isOriginDeclaration isStatic t2 (nameOffset:83) (firstTokenOffset:83) (offset:83) |
| element: <testLibrary>::@topLevelVariable::t2 |
| inducedGetter: #F16 |
| inducedSetter: #F17 |
| getters |
| #F10 isComplete isOriginVariable isStatic c (nameOffset:<null>) (firstTokenOffset:<null>) (offset:56) |
| element: <testLibrary>::@getter::c |
| inducingVariable: #F9 |
| #F13 isComplete isOriginVariable isStatic t1 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:63) |
| element: <testLibrary>::@getter::t1 |
| inducingVariable: #F12 |
| #F16 isComplete isOriginVariable isStatic t2 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:83) |
| element: <testLibrary>::@getter::t2 |
| inducingVariable: #F15 |
| setters |
| #F11 isComplete isOriginVariable isStatic c (nameOffset:<null>) (firstTokenOffset:<null>) (offset:56) |
| element: <testLibrary>::@setter::c |
| inducingVariable: #F9 |
| formalParameters |
| #F18 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:56) |
| element: <testLibrary>::@setter::c::@formalParameter::value |
| #F14 isComplete isOriginVariable isStatic t1 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:63) |
| element: <testLibrary>::@setter::t1 |
| inducingVariable: #F12 |
| formalParameters |
| #F19 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:63) |
| element: <testLibrary>::@setter::t1::@formalParameter::value |
| #F17 isComplete isOriginVariable isStatic t2 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:83) |
| element: <testLibrary>::@setter::t2 |
| inducingVariable: #F15 |
| formalParameters |
| #F20 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:83) |
| element: <testLibrary>::@setter::t2::@formalParameter::value |
| classes |
| hasNonFinalField isSimplyBounded class I |
| reference: <testLibrary>::@class::I |
| firstFragment: #F1 |
| fields |
| isOriginDeclaration f |
| reference: <testLibrary>::@class::I::@field::f |
| firstFragment: #F2 |
| type: int |
| getter: <testLibrary>::@class::I::@getter::f |
| setter: <testLibrary>::@class::I::@setter::f |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::I::@constructor::new |
| firstFragment: #F5 |
| getters |
| isOriginVariable f |
| reference: <testLibrary>::@class::I::@getter::f |
| firstFragment: #F3 |
| returnType: int |
| variable: <testLibrary>::@class::I::@field::f |
| setters |
| isOriginVariable f |
| reference: <testLibrary>::@class::I::@setter::f |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F6 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::I::@field::f |
| isAbstract isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F7 |
| interfaces |
| I |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F8 |
| topLevelVariables |
| isOriginDeclaration isStatic c |
| reference: <testLibrary>::@topLevelVariable::c |
| firstFragment: #F9 |
| type: C |
| getter: <testLibrary>::@getter::c |
| setter: <testLibrary>::@setter::c |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer t1 |
| reference: <testLibrary>::@topLevelVariable::t1 |
| firstFragment: #F12 |
| type: int |
| getter: <testLibrary>::@getter::t1 |
| setter: <testLibrary>::@setter::t1 |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer t2 |
| reference: <testLibrary>::@topLevelVariable::t2 |
| firstFragment: #F15 |
| type: int |
| getter: <testLibrary>::@getter::t2 |
| setter: <testLibrary>::@setter::t2 |
| getters |
| isOriginVariable isStatic c |
| reference: <testLibrary>::@getter::c |
| firstFragment: #F10 |
| returnType: C |
| variable: <testLibrary>::@topLevelVariable::c |
| isOriginVariable isStatic t1 |
| reference: <testLibrary>::@getter::t1 |
| firstFragment: #F13 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::t1 |
| isOriginVariable isStatic t2 |
| reference: <testLibrary>::@getter::t2 |
| firstFragment: #F16 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::t2 |
| setters |
| isOriginVariable isStatic c |
| reference: <testLibrary>::@setter::c |
| firstFragment: #F11 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F18 |
| type: C |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::c |
| isOriginVariable isStatic t1 |
| reference: <testLibrary>::@setter::t1 |
| firstFragment: #F14 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F19 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::t1 |
| isOriginVariable isStatic t2 |
| reference: <testLibrary>::@setter::t2 |
| firstFragment: #F17 |
| formalParameters |
| #E3 requiredPositional value |
| firstFragment: #F20 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::t2 |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class I (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::I |
| fields |
| #F2 isOriginDeclaration f (nameOffset:16) (firstTokenOffset:16) (offset:16) |
| element: <testLibrary>::@class::I::@field::f |
| inducedGetter: #F3 |
| inducedSetter: #F4 |
| constructors |
| #F5 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::I::@constructor::new |
| typeName: I |
| getters |
| #F3 isComplete isOriginVariable f (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::I::@getter::f |
| inducingVariable: #F2 |
| setters |
| #F4 isComplete isOriginVariable f (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::I::@setter::f |
| inducingVariable: #F2 |
| formalParameters |
| #F6 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::I::@setter::f::@formalParameter::value |
| #F7 isAbstract class C (nameOffset:36) (firstTokenOffset:21) (offset:36) |
| element: <testLibrary>::@class::C |
| constructors |
| #F8 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:36) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| topLevelVariables |
| #F9 hasImplicitType hasInitializer isOriginDeclaration isStatic t1 (nameOffset:76) (firstTokenOffset:76) (offset:76) |
| element: <testLibrary>::@topLevelVariable::t1 |
| inducedGetter: #F10 |
| inducedSetter: #F11 |
| #F12 hasImplicitType hasInitializer isOriginDeclaration isStatic t2 (nameOffset:101) (firstTokenOffset:101) (offset:101) |
| element: <testLibrary>::@topLevelVariable::t2 |
| inducedGetter: #F13 |
| inducedSetter: #F14 |
| getters |
| #F10 isComplete isOriginVariable isStatic t1 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:76) |
| element: <testLibrary>::@getter::t1 |
| inducingVariable: #F9 |
| #F13 isComplete isOriginVariable isStatic t2 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:101) |
| element: <testLibrary>::@getter::t2 |
| inducingVariable: #F12 |
| setters |
| #F11 isComplete isOriginVariable isStatic t1 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:76) |
| element: <testLibrary>::@setter::t1 |
| inducingVariable: #F9 |
| formalParameters |
| #F15 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:76) |
| element: <testLibrary>::@setter::t1::@formalParameter::value |
| #F14 isComplete isOriginVariable isStatic t2 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:101) |
| element: <testLibrary>::@setter::t2 |
| inducingVariable: #F12 |
| formalParameters |
| #F16 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:101) |
| element: <testLibrary>::@setter::t2::@formalParameter::value |
| functions |
| #F17 isComplete isOriginDeclaration isStatic getC (nameOffset:56) (firstTokenOffset:54) (offset:56) |
| element: <testLibrary>::@function::getC |
| classes |
| hasNonFinalField isSimplyBounded class I |
| reference: <testLibrary>::@class::I |
| firstFragment: #F1 |
| fields |
| isOriginDeclaration f |
| reference: <testLibrary>::@class::I::@field::f |
| firstFragment: #F2 |
| type: int |
| getter: <testLibrary>::@class::I::@getter::f |
| setter: <testLibrary>::@class::I::@setter::f |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::I::@constructor::new |
| firstFragment: #F5 |
| getters |
| isOriginVariable f |
| reference: <testLibrary>::@class::I::@getter::f |
| firstFragment: #F3 |
| returnType: int |
| variable: <testLibrary>::@class::I::@field::f |
| setters |
| isOriginVariable f |
| reference: <testLibrary>::@class::I::@setter::f |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F6 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::I::@field::f |
| isAbstract isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F7 |
| interfaces |
| I |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F8 |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer t1 |
| reference: <testLibrary>::@topLevelVariable::t1 |
| firstFragment: #F9 |
| type: int |
| getter: <testLibrary>::@getter::t1 |
| setter: <testLibrary>::@setter::t1 |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer t2 |
| reference: <testLibrary>::@topLevelVariable::t2 |
| firstFragment: #F12 |
| type: int |
| getter: <testLibrary>::@getter::t2 |
| setter: <testLibrary>::@setter::t2 |
| getters |
| isOriginVariable isStatic t1 |
| reference: <testLibrary>::@getter::t1 |
| firstFragment: #F10 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::t1 |
| isOriginVariable isStatic t2 |
| reference: <testLibrary>::@getter::t2 |
| firstFragment: #F13 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::t2 |
| setters |
| isOriginVariable isStatic t1 |
| reference: <testLibrary>::@setter::t1 |
| firstFragment: #F11 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F15 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::t1 |
| isOriginVariable isStatic t2 |
| reference: <testLibrary>::@setter::t2 |
| firstFragment: #F14 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F16 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::t2 |
| functions |
| isOriginDeclaration isStatic getC |
| reference: <testLibrary>::@function::getC |
| firstFragment: #F17 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| libraryImports |
| dart:async |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic uValue (nameOffset:80) (firstTokenOffset:80) (offset:80) |
| element: <testLibrary>::@topLevelVariable::uValue |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| #F4 hasImplicitType hasInitializer isOriginDeclaration isStatic uFuture (nameOffset:121) (firstTokenOffset:121) (offset:121) |
| element: <testLibrary>::@topLevelVariable::uFuture |
| inducedGetter: #F5 |
| inducedSetter: #F6 |
| getters |
| #F2 isComplete isOriginVariable isStatic uValue (nameOffset:<null>) (firstTokenOffset:<null>) (offset:80) |
| element: <testLibrary>::@getter::uValue |
| inducingVariable: #F1 |
| #F5 isComplete isOriginVariable isStatic uFuture (nameOffset:<null>) (firstTokenOffset:<null>) (offset:121) |
| element: <testLibrary>::@getter::uFuture |
| inducingVariable: #F4 |
| setters |
| #F3 isComplete isOriginVariable isStatic uValue (nameOffset:<null>) (firstTokenOffset:<null>) (offset:80) |
| element: <testLibrary>::@setter::uValue |
| inducingVariable: #F1 |
| formalParameters |
| #F7 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:80) |
| element: <testLibrary>::@setter::uValue::@formalParameter::value |
| #F6 isComplete isOriginVariable isStatic uFuture (nameOffset:<null>) (firstTokenOffset:<null>) (offset:121) |
| element: <testLibrary>::@setter::uFuture |
| inducingVariable: #F4 |
| formalParameters |
| #F8 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:121) |
| element: <testLibrary>::@setter::uFuture::@formalParameter::value |
| functions |
| #F9 isComplete isOriginDeclaration isStatic fValue (nameOffset:25) (firstTokenOffset:21) (offset:25) |
| element: <testLibrary>::@function::fValue |
| #F10 isAsynchronous isComplete isOriginDeclaration isStatic fFuture (nameOffset:53) (firstTokenOffset:41) (offset:53) |
| element: <testLibrary>::@function::fFuture |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer uValue |
| reference: <testLibrary>::@topLevelVariable::uValue |
| firstFragment: #F1 |
| type: Future<int> Function() |
| getter: <testLibrary>::@getter::uValue |
| setter: <testLibrary>::@setter::uValue |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer uFuture |
| reference: <testLibrary>::@topLevelVariable::uFuture |
| firstFragment: #F4 |
| type: Future<int> Function() |
| getter: <testLibrary>::@getter::uFuture |
| setter: <testLibrary>::@setter::uFuture |
| getters |
| isOriginVariable isStatic uValue |
| reference: <testLibrary>::@getter::uValue |
| firstFragment: #F2 |
| returnType: Future<int> Function() |
| variable: <testLibrary>::@topLevelVariable::uValue |
| isOriginVariable isStatic uFuture |
| reference: <testLibrary>::@getter::uFuture |
| firstFragment: #F5 |
| returnType: Future<int> Function() |
| variable: <testLibrary>::@topLevelVariable::uFuture |
| setters |
| isOriginVariable isStatic uValue |
| reference: <testLibrary>::@setter::uValue |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F7 |
| type: Future<int> Function() |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::uValue |
| isOriginVariable isStatic uFuture |
| reference: <testLibrary>::@setter::uFuture |
| firstFragment: #F6 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F8 |
| type: Future<int> Function() |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::uFuture |
| functions |
| isOriginDeclaration isStatic fValue |
| reference: <testLibrary>::@function::fValue |
| firstFragment: #F9 |
| returnType: int |
| isOriginDeclaration isStatic fFuture |
| reference: <testLibrary>::@function::fFuture |
| firstFragment: #F10 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic vBitXor (nameOffset:4) (firstTokenOffset:4) (offset:4) |
| element: <testLibrary>::@topLevelVariable::vBitXor |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| #F4 hasImplicitType hasInitializer isOriginDeclaration isStatic vBitAnd (nameOffset:25) (firstTokenOffset:25) (offset:25) |
| element: <testLibrary>::@topLevelVariable::vBitAnd |
| inducedGetter: #F5 |
| inducedSetter: #F6 |
| #F7 hasImplicitType hasInitializer isOriginDeclaration isStatic vBitOr (nameOffset:46) (firstTokenOffset:46) (offset:46) |
| element: <testLibrary>::@topLevelVariable::vBitOr |
| inducedGetter: #F8 |
| inducedSetter: #F9 |
| #F10 hasImplicitType hasInitializer isOriginDeclaration isStatic vBitShiftLeft (nameOffset:66) (firstTokenOffset:66) (offset:66) |
| element: <testLibrary>::@topLevelVariable::vBitShiftLeft |
| inducedGetter: #F11 |
| inducedSetter: #F12 |
| #F13 hasImplicitType hasInitializer isOriginDeclaration isStatic vBitShiftRight (nameOffset:94) (firstTokenOffset:94) (offset:94) |
| element: <testLibrary>::@topLevelVariable::vBitShiftRight |
| inducedGetter: #F14 |
| inducedSetter: #F15 |
| getters |
| #F2 isComplete isOriginVariable isStatic vBitXor (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@getter::vBitXor |
| inducingVariable: #F1 |
| #F5 isComplete isOriginVariable isStatic vBitAnd (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@getter::vBitAnd |
| inducingVariable: #F4 |
| #F8 isComplete isOriginVariable isStatic vBitOr (nameOffset:<null>) (firstTokenOffset:<null>) (offset:46) |
| element: <testLibrary>::@getter::vBitOr |
| inducingVariable: #F7 |
| #F11 isComplete isOriginVariable isStatic vBitShiftLeft (nameOffset:<null>) (firstTokenOffset:<null>) (offset:66) |
| element: <testLibrary>::@getter::vBitShiftLeft |
| inducingVariable: #F10 |
| #F14 isComplete isOriginVariable isStatic vBitShiftRight (nameOffset:<null>) (firstTokenOffset:<null>) (offset:94) |
| element: <testLibrary>::@getter::vBitShiftRight |
| inducingVariable: #F13 |
| setters |
| #F3 isComplete isOriginVariable isStatic vBitXor (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::vBitXor |
| inducingVariable: #F1 |
| formalParameters |
| #F16 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::vBitXor::@formalParameter::value |
| #F6 isComplete isOriginVariable isStatic vBitAnd (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@setter::vBitAnd |
| inducingVariable: #F4 |
| formalParameters |
| #F17 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@setter::vBitAnd::@formalParameter::value |
| #F9 isComplete isOriginVariable isStatic vBitOr (nameOffset:<null>) (firstTokenOffset:<null>) (offset:46) |
| element: <testLibrary>::@setter::vBitOr |
| inducingVariable: #F7 |
| formalParameters |
| #F18 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:46) |
| element: <testLibrary>::@setter::vBitOr::@formalParameter::value |
| #F12 isComplete isOriginVariable isStatic vBitShiftLeft (nameOffset:<null>) (firstTokenOffset:<null>) (offset:66) |
| element: <testLibrary>::@setter::vBitShiftLeft |
| inducingVariable: #F10 |
| formalParameters |
| #F19 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:66) |
| element: <testLibrary>::@setter::vBitShiftLeft::@formalParameter::value |
| #F15 isComplete isOriginVariable isStatic vBitShiftRight (nameOffset:<null>) (firstTokenOffset:<null>) (offset:94) |
| element: <testLibrary>::@setter::vBitShiftRight |
| inducingVariable: #F13 |
| formalParameters |
| #F20 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:94) |
| element: <testLibrary>::@setter::vBitShiftRight::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vBitXor |
| reference: <testLibrary>::@topLevelVariable::vBitXor |
| firstFragment: #F1 |
| type: int |
| getter: <testLibrary>::@getter::vBitXor |
| setter: <testLibrary>::@setter::vBitXor |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vBitAnd |
| reference: <testLibrary>::@topLevelVariable::vBitAnd |
| firstFragment: #F4 |
| type: int |
| getter: <testLibrary>::@getter::vBitAnd |
| setter: <testLibrary>::@setter::vBitAnd |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vBitOr |
| reference: <testLibrary>::@topLevelVariable::vBitOr |
| firstFragment: #F7 |
| type: int |
| getter: <testLibrary>::@getter::vBitOr |
| setter: <testLibrary>::@setter::vBitOr |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vBitShiftLeft |
| reference: <testLibrary>::@topLevelVariable::vBitShiftLeft |
| firstFragment: #F10 |
| type: int |
| getter: <testLibrary>::@getter::vBitShiftLeft |
| setter: <testLibrary>::@setter::vBitShiftLeft |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vBitShiftRight |
| reference: <testLibrary>::@topLevelVariable::vBitShiftRight |
| firstFragment: #F13 |
| type: int |
| getter: <testLibrary>::@getter::vBitShiftRight |
| setter: <testLibrary>::@setter::vBitShiftRight |
| getters |
| isOriginVariable isStatic vBitXor |
| reference: <testLibrary>::@getter::vBitXor |
| firstFragment: #F2 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::vBitXor |
| isOriginVariable isStatic vBitAnd |
| reference: <testLibrary>::@getter::vBitAnd |
| firstFragment: #F5 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::vBitAnd |
| isOriginVariable isStatic vBitOr |
| reference: <testLibrary>::@getter::vBitOr |
| firstFragment: #F8 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::vBitOr |
| isOriginVariable isStatic vBitShiftLeft |
| reference: <testLibrary>::@getter::vBitShiftLeft |
| firstFragment: #F11 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::vBitShiftLeft |
| isOriginVariable isStatic vBitShiftRight |
| reference: <testLibrary>::@getter::vBitShiftRight |
| firstFragment: #F14 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::vBitShiftRight |
| setters |
| isOriginVariable isStatic vBitXor |
| reference: <testLibrary>::@setter::vBitXor |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F16 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vBitXor |
| isOriginVariable isStatic vBitAnd |
| reference: <testLibrary>::@setter::vBitAnd |
| firstFragment: #F6 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F17 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vBitAnd |
| isOriginVariable isStatic vBitOr |
| reference: <testLibrary>::@setter::vBitOr |
| firstFragment: #F9 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F18 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vBitOr |
| isOriginVariable isStatic vBitShiftLeft |
| reference: <testLibrary>::@setter::vBitShiftLeft |
| firstFragment: #F12 |
| formalParameters |
| #E3 requiredPositional value |
| firstFragment: #F19 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vBitShiftLeft |
| isOriginVariable isStatic vBitShiftRight |
| reference: <testLibrary>::@setter::vBitShiftRight |
| firstFragment: #F15 |
| formalParameters |
| #E4 requiredPositional value |
| firstFragment: #F20 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vBitShiftRight |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 isOriginDeclaration a (nameOffset:16) (firstTokenOffset:16) (offset:16) |
| element: <testLibrary>::@class::A::@field::a |
| inducedGetter: #F3 |
| inducedSetter: #F4 |
| constructors |
| #F5 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F3 isComplete isOriginVariable a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::A::@getter::a |
| inducingVariable: #F2 |
| setters |
| #F4 isComplete isOriginVariable a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::A::@setter::a |
| inducingVariable: #F2 |
| formalParameters |
| #F6 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::A::@setter::a::@formalParameter::value |
| methods |
| #F7 isComplete isOriginDeclaration m (nameOffset:26) (firstTokenOffset:21) (offset:26) |
| element: <testLibrary>::@class::A::@method::m |
| topLevelVariables |
| #F8 hasImplicitType hasInitializer isOriginDeclaration isStatic vSetField (nameOffset:39) (firstTokenOffset:39) (offset:39) |
| element: <testLibrary>::@topLevelVariable::vSetField |
| inducedGetter: #F9 |
| inducedSetter: #F10 |
| #F11 hasImplicitType hasInitializer isOriginDeclaration isStatic vInvokeMethod (nameOffset:71) (firstTokenOffset:71) (offset:71) |
| element: <testLibrary>::@topLevelVariable::vInvokeMethod |
| inducedGetter: #F12 |
| inducedSetter: #F13 |
| #F14 hasImplicitType hasInitializer isOriginDeclaration isStatic vBoth (nameOffset:105) (firstTokenOffset:105) (offset:105) |
| element: <testLibrary>::@topLevelVariable::vBoth |
| inducedGetter: #F15 |
| inducedSetter: #F16 |
| getters |
| #F9 isComplete isOriginVariable isStatic vSetField (nameOffset:<null>) (firstTokenOffset:<null>) (offset:39) |
| element: <testLibrary>::@getter::vSetField |
| inducingVariable: #F8 |
| #F12 isComplete isOriginVariable isStatic vInvokeMethod (nameOffset:<null>) (firstTokenOffset:<null>) (offset:71) |
| element: <testLibrary>::@getter::vInvokeMethod |
| inducingVariable: #F11 |
| #F15 isComplete isOriginVariable isStatic vBoth (nameOffset:<null>) (firstTokenOffset:<null>) (offset:105) |
| element: <testLibrary>::@getter::vBoth |
| inducingVariable: #F14 |
| setters |
| #F10 isComplete isOriginVariable isStatic vSetField (nameOffset:<null>) (firstTokenOffset:<null>) (offset:39) |
| element: <testLibrary>::@setter::vSetField |
| inducingVariable: #F8 |
| formalParameters |
| #F17 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:39) |
| element: <testLibrary>::@setter::vSetField::@formalParameter::value |
| #F13 isComplete isOriginVariable isStatic vInvokeMethod (nameOffset:<null>) (firstTokenOffset:<null>) (offset:71) |
| element: <testLibrary>::@setter::vInvokeMethod |
| inducingVariable: #F11 |
| formalParameters |
| #F18 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:71) |
| element: <testLibrary>::@setter::vInvokeMethod::@formalParameter::value |
| #F16 isComplete isOriginVariable isStatic vBoth (nameOffset:<null>) (firstTokenOffset:<null>) (offset:105) |
| element: <testLibrary>::@setter::vBoth |
| inducingVariable: #F14 |
| formalParameters |
| #F19 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:105) |
| element: <testLibrary>::@setter::vBoth::@formalParameter::value |
| classes |
| hasNonFinalField isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| isOriginDeclaration a |
| reference: <testLibrary>::@class::A::@field::a |
| firstFragment: #F2 |
| type: int |
| getter: <testLibrary>::@class::A::@getter::a |
| setter: <testLibrary>::@class::A::@setter::a |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F5 |
| getters |
| isOriginVariable a |
| reference: <testLibrary>::@class::A::@getter::a |
| firstFragment: #F3 |
| returnType: int |
| variable: <testLibrary>::@class::A::@field::a |
| setters |
| isOriginVariable a |
| reference: <testLibrary>::@class::A::@setter::a |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F6 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::A::@field::a |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: #F7 |
| returnType: void |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vSetField |
| reference: <testLibrary>::@topLevelVariable::vSetField |
| firstFragment: #F8 |
| type: A |
| getter: <testLibrary>::@getter::vSetField |
| setter: <testLibrary>::@setter::vSetField |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vInvokeMethod |
| reference: <testLibrary>::@topLevelVariable::vInvokeMethod |
| firstFragment: #F11 |
| type: A |
| getter: <testLibrary>::@getter::vInvokeMethod |
| setter: <testLibrary>::@setter::vInvokeMethod |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vBoth |
| reference: <testLibrary>::@topLevelVariable::vBoth |
| firstFragment: #F14 |
| type: A |
| getter: <testLibrary>::@getter::vBoth |
| setter: <testLibrary>::@setter::vBoth |
| getters |
| isOriginVariable isStatic vSetField |
| reference: <testLibrary>::@getter::vSetField |
| firstFragment: #F9 |
| returnType: A |
| variable: <testLibrary>::@topLevelVariable::vSetField |
| isOriginVariable isStatic vInvokeMethod |
| reference: <testLibrary>::@getter::vInvokeMethod |
| firstFragment: #F12 |
| returnType: A |
| variable: <testLibrary>::@topLevelVariable::vInvokeMethod |
| isOriginVariable isStatic vBoth |
| reference: <testLibrary>::@getter::vBoth |
| firstFragment: #F15 |
| returnType: A |
| variable: <testLibrary>::@topLevelVariable::vBoth |
| setters |
| isOriginVariable isStatic vSetField |
| reference: <testLibrary>::@setter::vSetField |
| firstFragment: #F10 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F17 |
| type: A |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vSetField |
| isOriginVariable isStatic vInvokeMethod |
| reference: <testLibrary>::@setter::vInvokeMethod |
| firstFragment: #F13 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F18 |
| type: A |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vInvokeMethod |
| isOriginVariable isStatic vBoth |
| reference: <testLibrary>::@setter::vBoth |
| firstFragment: #F16 |
| formalParameters |
| #E3 requiredPositional value |
| firstFragment: #F19 |
| type: A |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vBoth |
| '''); |
| } |
| |
| /// 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 hasInitializer isOriginDeclaration f (nameOffset:16) (firstTokenOffset:16) (offset:16) |
| element: <testLibrary>::@class::A::@field::f |
| inducedGetter: #F3 |
| inducedSetter: #F4 |
| constructors |
| #F5 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F3 isComplete isOriginVariable f (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::A::@getter::f |
| inducingVariable: #F2 |
| setters |
| #F4 isComplete isOriginVariable f (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::A::@setter::f |
| inducingVariable: #F2 |
| formalParameters |
| #F6 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::A::@setter::f::@formalParameter::value |
| #F7 class B (nameOffset:31) (firstTokenOffset:25) (offset:31) |
| element: <testLibrary>::@class::B |
| fields |
| #F8 isOriginDeclaration a (nameOffset:39) (firstTokenOffset:39) (offset:39) |
| element: <testLibrary>::@class::B::@field::a |
| inducedGetter: #F9 |
| inducedSetter: #F10 |
| constructors |
| #F11 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:31) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| getters |
| #F9 isComplete isOriginVariable a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:39) |
| element: <testLibrary>::@class::B::@getter::a |
| inducingVariable: #F8 |
| setters |
| #F10 isComplete isOriginVariable a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:39) |
| element: <testLibrary>::@class::B::@setter::a |
| inducingVariable: #F8 |
| formalParameters |
| #F12 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:39) |
| element: <testLibrary>::@class::B::@setter::a::@formalParameter::value |
| #F13 class C (nameOffset:50) (firstTokenOffset:44) (offset:50) |
| element: <testLibrary>::@class::C |
| fields |
| #F14 isOriginDeclaration b (nameOffset:58) (firstTokenOffset:58) (offset:58) |
| element: <testLibrary>::@class::C::@field::b |
| inducedGetter: #F15 |
| inducedSetter: #F16 |
| constructors |
| #F17 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:50) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| getters |
| #F15 isComplete isOriginVariable b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:58) |
| element: <testLibrary>::@class::C::@getter::b |
| inducingVariable: #F14 |
| setters |
| #F16 isComplete isOriginVariable b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:58) |
| element: <testLibrary>::@class::C::@setter::b |
| inducingVariable: #F14 |
| formalParameters |
| #F18 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:58) |
| element: <testLibrary>::@class::C::@setter::b::@formalParameter::value |
| #F19 class X (nameOffset:69) (firstTokenOffset:63) (offset:69) |
| element: <testLibrary>::@class::X |
| fields |
| #F20 hasInitializer isOriginDeclaration a (nameOffset:77) (firstTokenOffset:77) (offset:77) |
| element: <testLibrary>::@class::X::@field::a |
| inducedGetter: #F21 |
| inducedSetter: #F22 |
| #F23 hasInitializer isOriginDeclaration b (nameOffset:94) (firstTokenOffset:94) (offset:94) |
| element: <testLibrary>::@class::X::@field::b |
| inducedGetter: #F24 |
| inducedSetter: #F25 |
| #F26 hasInitializer isOriginDeclaration c (nameOffset:111) (firstTokenOffset:111) (offset:111) |
| element: <testLibrary>::@class::X::@field::c |
| inducedGetter: #F27 |
| inducedSetter: #F28 |
| #F29 hasImplicitType hasInitializer isOriginDeclaration t01 (nameOffset:130) (firstTokenOffset:130) (offset:130) |
| element: <testLibrary>::@class::X::@field::t01 |
| inducedGetter: #F30 |
| inducedSetter: #F31 |
| #F32 hasImplicitType hasInitializer isOriginDeclaration t02 (nameOffset:147) (firstTokenOffset:147) (offset:147) |
| element: <testLibrary>::@class::X::@field::t02 |
| inducedGetter: #F33 |
| inducedSetter: #F34 |
| #F35 hasImplicitType hasInitializer isOriginDeclaration t03 (nameOffset:166) (firstTokenOffset:166) (offset:166) |
| element: <testLibrary>::@class::X::@field::t03 |
| inducedGetter: #F36 |
| inducedSetter: #F37 |
| #F38 hasImplicitType hasInitializer isOriginDeclaration t11 (nameOffset:187) (firstTokenOffset:187) (offset:187) |
| element: <testLibrary>::@class::X::@field::t11 |
| inducedGetter: #F39 |
| inducedSetter: #F40 |
| #F41 hasImplicitType hasInitializer isOriginDeclaration t12 (nameOffset:210) (firstTokenOffset:210) (offset:210) |
| element: <testLibrary>::@class::X::@field::t12 |
| inducedGetter: #F42 |
| inducedSetter: #F43 |
| #F44 hasImplicitType hasInitializer isOriginDeclaration t13 (nameOffset:235) (firstTokenOffset:235) (offset:235) |
| element: <testLibrary>::@class::X::@field::t13 |
| inducedGetter: #F45 |
| inducedSetter: #F46 |
| #F47 hasImplicitType hasInitializer isOriginDeclaration t21 (nameOffset:262) (firstTokenOffset:262) (offset:262) |
| element: <testLibrary>::@class::X::@field::t21 |
| inducedGetter: #F48 |
| inducedSetter: #F49 |
| #F50 hasImplicitType hasInitializer isOriginDeclaration t22 (nameOffset:284) (firstTokenOffset:284) (offset:284) |
| element: <testLibrary>::@class::X::@field::t22 |
| inducedGetter: #F51 |
| inducedSetter: #F52 |
| #F53 hasImplicitType hasInitializer isOriginDeclaration t23 (nameOffset:308) (firstTokenOffset:308) (offset:308) |
| element: <testLibrary>::@class::X::@field::t23 |
| inducedGetter: #F54 |
| inducedSetter: #F55 |
| constructors |
| #F56 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:69) |
| element: <testLibrary>::@class::X::@constructor::new |
| typeName: X |
| getters |
| #F21 isComplete isOriginVariable a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:77) |
| element: <testLibrary>::@class::X::@getter::a |
| inducingVariable: #F20 |
| #F24 isComplete isOriginVariable b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:94) |
| element: <testLibrary>::@class::X::@getter::b |
| inducingVariable: #F23 |
| #F27 isComplete isOriginVariable c (nameOffset:<null>) (firstTokenOffset:<null>) (offset:111) |
| element: <testLibrary>::@class::X::@getter::c |
| inducingVariable: #F26 |
| #F30 isComplete isOriginVariable t01 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:130) |
| element: <testLibrary>::@class::X::@getter::t01 |
| inducingVariable: #F29 |
| #F33 isComplete isOriginVariable t02 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:147) |
| element: <testLibrary>::@class::X::@getter::t02 |
| inducingVariable: #F32 |
| #F36 isComplete isOriginVariable t03 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:166) |
| element: <testLibrary>::@class::X::@getter::t03 |
| inducingVariable: #F35 |
| #F39 isComplete isOriginVariable t11 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:187) |
| element: <testLibrary>::@class::X::@getter::t11 |
| inducingVariable: #F38 |
| #F42 isComplete isOriginVariable t12 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:210) |
| element: <testLibrary>::@class::X::@getter::t12 |
| inducingVariable: #F41 |
| #F45 isComplete isOriginVariable t13 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:235) |
| element: <testLibrary>::@class::X::@getter::t13 |
| inducingVariable: #F44 |
| #F48 isComplete isOriginVariable t21 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:262) |
| element: <testLibrary>::@class::X::@getter::t21 |
| inducingVariable: #F47 |
| #F51 isComplete isOriginVariable t22 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:284) |
| element: <testLibrary>::@class::X::@getter::t22 |
| inducingVariable: #F50 |
| #F54 isComplete isOriginVariable t23 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:308) |
| element: <testLibrary>::@class::X::@getter::t23 |
| inducingVariable: #F53 |
| setters |
| #F22 isComplete isOriginVariable a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:77) |
| element: <testLibrary>::@class::X::@setter::a |
| inducingVariable: #F20 |
| formalParameters |
| #F57 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:77) |
| element: <testLibrary>::@class::X::@setter::a::@formalParameter::value |
| #F25 isComplete isOriginVariable b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:94) |
| element: <testLibrary>::@class::X::@setter::b |
| inducingVariable: #F23 |
| formalParameters |
| #F58 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:94) |
| element: <testLibrary>::@class::X::@setter::b::@formalParameter::value |
| #F28 isComplete isOriginVariable c (nameOffset:<null>) (firstTokenOffset:<null>) (offset:111) |
| element: <testLibrary>::@class::X::@setter::c |
| inducingVariable: #F26 |
| formalParameters |
| #F59 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:111) |
| element: <testLibrary>::@class::X::@setter::c::@formalParameter::value |
| #F31 isComplete isOriginVariable t01 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:130) |
| element: <testLibrary>::@class::X::@setter::t01 |
| inducingVariable: #F29 |
| formalParameters |
| #F60 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:130) |
| element: <testLibrary>::@class::X::@setter::t01::@formalParameter::value |
| #F34 isComplete isOriginVariable t02 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:147) |
| element: <testLibrary>::@class::X::@setter::t02 |
| inducingVariable: #F32 |
| formalParameters |
| #F61 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:147) |
| element: <testLibrary>::@class::X::@setter::t02::@formalParameter::value |
| #F37 isComplete isOriginVariable t03 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:166) |
| element: <testLibrary>::@class::X::@setter::t03 |
| inducingVariable: #F35 |
| formalParameters |
| #F62 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:166) |
| element: <testLibrary>::@class::X::@setter::t03::@formalParameter::value |
| #F40 isComplete isOriginVariable t11 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:187) |
| element: <testLibrary>::@class::X::@setter::t11 |
| inducingVariable: #F38 |
| formalParameters |
| #F63 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:187) |
| element: <testLibrary>::@class::X::@setter::t11::@formalParameter::value |
| #F43 isComplete isOriginVariable t12 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:210) |
| element: <testLibrary>::@class::X::@setter::t12 |
| inducingVariable: #F41 |
| formalParameters |
| #F64 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:210) |
| element: <testLibrary>::@class::X::@setter::t12::@formalParameter::value |
| #F46 isComplete isOriginVariable t13 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:235) |
| element: <testLibrary>::@class::X::@setter::t13 |
| inducingVariable: #F44 |
| formalParameters |
| #F65 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:235) |
| element: <testLibrary>::@class::X::@setter::t13::@formalParameter::value |
| #F49 isComplete isOriginVariable t21 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:262) |
| element: <testLibrary>::@class::X::@setter::t21 |
| inducingVariable: #F47 |
| formalParameters |
| #F66 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:262) |
| element: <testLibrary>::@class::X::@setter::t21::@formalParameter::value |
| #F52 isComplete isOriginVariable t22 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:284) |
| element: <testLibrary>::@class::X::@setter::t22 |
| inducingVariable: #F50 |
| formalParameters |
| #F67 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:284) |
| element: <testLibrary>::@class::X::@setter::t22::@formalParameter::value |
| #F55 isComplete isOriginVariable t23 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:308) |
| element: <testLibrary>::@class::X::@setter::t23 |
| inducingVariable: #F53 |
| formalParameters |
| #F68 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:308) |
| element: <testLibrary>::@class::X::@setter::t23::@formalParameter::value |
| functions |
| #F69 isComplete isOriginDeclaration isStatic newA (nameOffset:332) (firstTokenOffset:330) (offset:332) |
| element: <testLibrary>::@function::newA |
| #F70 isComplete isOriginDeclaration isStatic newB (nameOffset:353) (firstTokenOffset:351) (offset:353) |
| element: <testLibrary>::@function::newB |
| #F71 isComplete isOriginDeclaration isStatic newC (nameOffset:374) (firstTokenOffset:372) (offset:374) |
| element: <testLibrary>::@function::newC |
| classes |
| hasNonFinalField isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| hasInitializer isOriginDeclaration f |
| reference: <testLibrary>::@class::A::@field::f |
| firstFragment: #F2 |
| type: int |
| getter: <testLibrary>::@class::A::@getter::f |
| setter: <testLibrary>::@class::A::@setter::f |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F5 |
| getters |
| isOriginVariable f |
| reference: <testLibrary>::@class::A::@getter::f |
| firstFragment: #F3 |
| returnType: int |
| variable: <testLibrary>::@class::A::@field::f |
| setters |
| isOriginVariable f |
| reference: <testLibrary>::@class::A::@setter::f |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F6 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::A::@field::f |
| hasNonFinalField isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F7 |
| fields |
| isOriginDeclaration a |
| reference: <testLibrary>::@class::B::@field::a |
| firstFragment: #F8 |
| type: A |
| getter: <testLibrary>::@class::B::@getter::a |
| setter: <testLibrary>::@class::B::@setter::a |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F11 |
| getters |
| isOriginVariable a |
| reference: <testLibrary>::@class::B::@getter::a |
| firstFragment: #F9 |
| returnType: A |
| variable: <testLibrary>::@class::B::@field::a |
| setters |
| isOriginVariable a |
| reference: <testLibrary>::@class::B::@setter::a |
| firstFragment: #F10 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F12 |
| type: A |
| returnType: void |
| variable: <testLibrary>::@class::B::@field::a |
| hasNonFinalField isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F13 |
| fields |
| isOriginDeclaration b |
| reference: <testLibrary>::@class::C::@field::b |
| firstFragment: #F14 |
| type: B |
| getter: <testLibrary>::@class::C::@getter::b |
| setter: <testLibrary>::@class::C::@setter::b |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F17 |
| getters |
| isOriginVariable b |
| reference: <testLibrary>::@class::C::@getter::b |
| firstFragment: #F15 |
| returnType: B |
| variable: <testLibrary>::@class::C::@field::b |
| setters |
| isOriginVariable b |
| reference: <testLibrary>::@class::C::@setter::b |
| firstFragment: #F16 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F18 |
| type: B |
| returnType: void |
| variable: <testLibrary>::@class::C::@field::b |
| hasNonFinalField isSimplyBounded class X |
| reference: <testLibrary>::@class::X |
| firstFragment: #F19 |
| fields |
| hasInitializer isOriginDeclaration a |
| reference: <testLibrary>::@class::X::@field::a |
| firstFragment: #F20 |
| type: A |
| getter: <testLibrary>::@class::X::@getter::a |
| setter: <testLibrary>::@class::X::@setter::a |
| hasInitializer isOriginDeclaration b |
| reference: <testLibrary>::@class::X::@field::b |
| firstFragment: #F23 |
| type: B |
| getter: <testLibrary>::@class::X::@getter::b |
| setter: <testLibrary>::@class::X::@setter::b |
| hasInitializer isOriginDeclaration c |
| reference: <testLibrary>::@class::X::@field::c |
| firstFragment: #F26 |
| type: C |
| getter: <testLibrary>::@class::X::@getter::c |
| setter: <testLibrary>::@class::X::@setter::c |
| hasImplicitType hasInitializer isOriginDeclaration isTypeInferredFromInitializer t01 |
| reference: <testLibrary>::@class::X::@field::t01 |
| firstFragment: #F29 |
| type: int |
| getter: <testLibrary>::@class::X::@getter::t01 |
| setter: <testLibrary>::@class::X::@setter::t01 |
| hasImplicitType hasInitializer isOriginDeclaration isTypeInferredFromInitializer t02 |
| reference: <testLibrary>::@class::X::@field::t02 |
| firstFragment: #F32 |
| type: int |
| getter: <testLibrary>::@class::X::@getter::t02 |
| setter: <testLibrary>::@class::X::@setter::t02 |
| hasImplicitType hasInitializer isOriginDeclaration isTypeInferredFromInitializer t03 |
| reference: <testLibrary>::@class::X::@field::t03 |
| firstFragment: #F35 |
| type: int |
| getter: <testLibrary>::@class::X::@getter::t03 |
| setter: <testLibrary>::@class::X::@setter::t03 |
| hasImplicitType hasInitializer isOriginDeclaration isTypeInferredFromInitializer t11 |
| reference: <testLibrary>::@class::X::@field::t11 |
| firstFragment: #F38 |
| type: int |
| getter: <testLibrary>::@class::X::@getter::t11 |
| setter: <testLibrary>::@class::X::@setter::t11 |
| hasImplicitType hasInitializer isOriginDeclaration isTypeInferredFromInitializer t12 |
| reference: <testLibrary>::@class::X::@field::t12 |
| firstFragment: #F41 |
| type: int |
| getter: <testLibrary>::@class::X::@getter::t12 |
| setter: <testLibrary>::@class::X::@setter::t12 |
| hasImplicitType hasInitializer isOriginDeclaration isTypeInferredFromInitializer t13 |
| reference: <testLibrary>::@class::X::@field::t13 |
| firstFragment: #F44 |
| type: int |
| getter: <testLibrary>::@class::X::@getter::t13 |
| setter: <testLibrary>::@class::X::@setter::t13 |
| hasImplicitType hasInitializer isOriginDeclaration isTypeInferredFromInitializer t21 |
| reference: <testLibrary>::@class::X::@field::t21 |
| firstFragment: #F47 |
| type: int |
| getter: <testLibrary>::@class::X::@getter::t21 |
| setter: <testLibrary>::@class::X::@setter::t21 |
| hasImplicitType hasInitializer isOriginDeclaration isTypeInferredFromInitializer t22 |
| reference: <testLibrary>::@class::X::@field::t22 |
| firstFragment: #F50 |
| type: int |
| getter: <testLibrary>::@class::X::@getter::t22 |
| setter: <testLibrary>::@class::X::@setter::t22 |
| hasImplicitType hasInitializer isOriginDeclaration isTypeInferredFromInitializer t23 |
| reference: <testLibrary>::@class::X::@field::t23 |
| firstFragment: #F53 |
| type: int |
| getter: <testLibrary>::@class::X::@getter::t23 |
| setter: <testLibrary>::@class::X::@setter::t23 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::X::@constructor::new |
| firstFragment: #F56 |
| getters |
| isOriginVariable a |
| reference: <testLibrary>::@class::X::@getter::a |
| firstFragment: #F21 |
| returnType: A |
| variable: <testLibrary>::@class::X::@field::a |
| isOriginVariable b |
| reference: <testLibrary>::@class::X::@getter::b |
| firstFragment: #F24 |
| returnType: B |
| variable: <testLibrary>::@class::X::@field::b |
| isOriginVariable c |
| reference: <testLibrary>::@class::X::@getter::c |
| firstFragment: #F27 |
| returnType: C |
| variable: <testLibrary>::@class::X::@field::c |
| isOriginVariable t01 |
| reference: <testLibrary>::@class::X::@getter::t01 |
| firstFragment: #F30 |
| returnType: int |
| variable: <testLibrary>::@class::X::@field::t01 |
| isOriginVariable t02 |
| reference: <testLibrary>::@class::X::@getter::t02 |
| firstFragment: #F33 |
| returnType: int |
| variable: <testLibrary>::@class::X::@field::t02 |
| isOriginVariable t03 |
| reference: <testLibrary>::@class::X::@getter::t03 |
| firstFragment: #F36 |
| returnType: int |
| variable: <testLibrary>::@class::X::@field::t03 |
| isOriginVariable t11 |
| reference: <testLibrary>::@class::X::@getter::t11 |
| firstFragment: #F39 |
| returnType: int |
| variable: <testLibrary>::@class::X::@field::t11 |
| isOriginVariable t12 |
| reference: <testLibrary>::@class::X::@getter::t12 |
| firstFragment: #F42 |
| returnType: int |
| variable: <testLibrary>::@class::X::@field::t12 |
| isOriginVariable t13 |
| reference: <testLibrary>::@class::X::@getter::t13 |
| firstFragment: #F45 |
| returnType: int |
| variable: <testLibrary>::@class::X::@field::t13 |
| isOriginVariable t21 |
| reference: <testLibrary>::@class::X::@getter::t21 |
| firstFragment: #F48 |
| returnType: int |
| variable: <testLibrary>::@class::X::@field::t21 |
| isOriginVariable t22 |
| reference: <testLibrary>::@class::X::@getter::t22 |
| firstFragment: #F51 |
| returnType: int |
| variable: <testLibrary>::@class::X::@field::t22 |
| isOriginVariable t23 |
| reference: <testLibrary>::@class::X::@getter::t23 |
| firstFragment: #F54 |
| returnType: int |
| variable: <testLibrary>::@class::X::@field::t23 |
| setters |
| isOriginVariable a |
| reference: <testLibrary>::@class::X::@setter::a |
| firstFragment: #F22 |
| formalParameters |
| #E3 requiredPositional value |
| firstFragment: #F57 |
| type: A |
| returnType: void |
| variable: <testLibrary>::@class::X::@field::a |
| isOriginVariable b |
| reference: <testLibrary>::@class::X::@setter::b |
| firstFragment: #F25 |
| formalParameters |
| #E4 requiredPositional value |
| firstFragment: #F58 |
| type: B |
| returnType: void |
| variable: <testLibrary>::@class::X::@field::b |
| isOriginVariable c |
| reference: <testLibrary>::@class::X::@setter::c |
| firstFragment: #F28 |
| formalParameters |
| #E5 requiredPositional value |
| firstFragment: #F59 |
| type: C |
| returnType: void |
| variable: <testLibrary>::@class::X::@field::c |
| isOriginVariable t01 |
| reference: <testLibrary>::@class::X::@setter::t01 |
| firstFragment: #F31 |
| formalParameters |
| #E6 requiredPositional value |
| firstFragment: #F60 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::X::@field::t01 |
| isOriginVariable t02 |
| reference: <testLibrary>::@class::X::@setter::t02 |
| firstFragment: #F34 |
| formalParameters |
| #E7 requiredPositional value |
| firstFragment: #F61 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::X::@field::t02 |
| isOriginVariable t03 |
| reference: <testLibrary>::@class::X::@setter::t03 |
| firstFragment: #F37 |
| formalParameters |
| #E8 requiredPositional value |
| firstFragment: #F62 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::X::@field::t03 |
| isOriginVariable t11 |
| reference: <testLibrary>::@class::X::@setter::t11 |
| firstFragment: #F40 |
| formalParameters |
| #E9 requiredPositional value |
| firstFragment: #F63 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::X::@field::t11 |
| isOriginVariable t12 |
| reference: <testLibrary>::@class::X::@setter::t12 |
| firstFragment: #F43 |
| formalParameters |
| #E10 requiredPositional value |
| firstFragment: #F64 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::X::@field::t12 |
| isOriginVariable t13 |
| reference: <testLibrary>::@class::X::@setter::t13 |
| firstFragment: #F46 |
| formalParameters |
| #E11 requiredPositional value |
| firstFragment: #F65 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::X::@field::t13 |
| isOriginVariable t21 |
| reference: <testLibrary>::@class::X::@setter::t21 |
| firstFragment: #F49 |
| formalParameters |
| #E12 requiredPositional value |
| firstFragment: #F66 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::X::@field::t21 |
| isOriginVariable t22 |
| reference: <testLibrary>::@class::X::@setter::t22 |
| firstFragment: #F52 |
| formalParameters |
| #E13 requiredPositional value |
| firstFragment: #F67 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::X::@field::t22 |
| isOriginVariable t23 |
| reference: <testLibrary>::@class::X::@setter::t23 |
| firstFragment: #F55 |
| formalParameters |
| #E14 requiredPositional value |
| firstFragment: #F68 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::X::@field::t23 |
| functions |
| isOriginDeclaration isStatic newA |
| reference: <testLibrary>::@function::newA |
| firstFragment: #F69 |
| returnType: A |
| isOriginDeclaration isStatic newB |
| reference: <testLibrary>::@function::newB |
| firstFragment: #F70 |
| returnType: B |
| isOriginDeclaration isStatic newC |
| reference: <testLibrary>::@function::newC |
| firstFragment: #F71 |
| returnType: C |
| '''); |
| } |
| |
| test_initializer_conditional() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var V = true ? 1 : 2.3; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic V (nameOffset:4) (firstTokenOffset:4) (offset:4) |
| element: <testLibrary>::@topLevelVariable::V |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| getters |
| #F2 isComplete isOriginVariable isStatic V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@getter::V |
| inducingVariable: #F1 |
| setters |
| #F3 isComplete isOriginVariable isStatic V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::V |
| inducingVariable: #F1 |
| formalParameters |
| #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::V::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer V |
| reference: <testLibrary>::@topLevelVariable::V |
| firstFragment: #F1 |
| type: num |
| getter: <testLibrary>::@getter::V |
| setter: <testLibrary>::@setter::V |
| getters |
| isOriginVariable isStatic V |
| reference: <testLibrary>::@getter::V |
| firstFragment: #F2 |
| returnType: num |
| variable: <testLibrary>::@topLevelVariable::V |
| setters |
| isOriginVariable isStatic V |
| reference: <testLibrary>::@setter::V |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F4 |
| type: num |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::V |
| '''); |
| } |
| |
| test_initializer_equality() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var vEq = 1 == 2; |
| var vNotEq = 1 != 2; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic vEq (nameOffset:4) (firstTokenOffset:4) (offset:4) |
| element: <testLibrary>::@topLevelVariable::vEq |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| #F4 hasImplicitType hasInitializer isOriginDeclaration isStatic vNotEq (nameOffset:22) (firstTokenOffset:22) (offset:22) |
| element: <testLibrary>::@topLevelVariable::vNotEq |
| inducedGetter: #F5 |
| inducedSetter: #F6 |
| getters |
| #F2 isComplete isOriginVariable isStatic vEq (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@getter::vEq |
| inducingVariable: #F1 |
| #F5 isComplete isOriginVariable isStatic vNotEq (nameOffset:<null>) (firstTokenOffset:<null>) (offset:22) |
| element: <testLibrary>::@getter::vNotEq |
| inducingVariable: #F4 |
| setters |
| #F3 isComplete isOriginVariable isStatic vEq (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::vEq |
| inducingVariable: #F1 |
| formalParameters |
| #F7 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::vEq::@formalParameter::value |
| #F6 isComplete isOriginVariable isStatic vNotEq (nameOffset:<null>) (firstTokenOffset:<null>) (offset:22) |
| element: <testLibrary>::@setter::vNotEq |
| inducingVariable: #F4 |
| formalParameters |
| #F8 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:22) |
| element: <testLibrary>::@setter::vNotEq::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vEq |
| reference: <testLibrary>::@topLevelVariable::vEq |
| firstFragment: #F1 |
| type: bool |
| getter: <testLibrary>::@getter::vEq |
| setter: <testLibrary>::@setter::vEq |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vNotEq |
| reference: <testLibrary>::@topLevelVariable::vNotEq |
| firstFragment: #F4 |
| type: bool |
| getter: <testLibrary>::@getter::vNotEq |
| setter: <testLibrary>::@setter::vNotEq |
| getters |
| isOriginVariable isStatic vEq |
| reference: <testLibrary>::@getter::vEq |
| firstFragment: #F2 |
| returnType: bool |
| variable: <testLibrary>::@topLevelVariable::vEq |
| isOriginVariable isStatic vNotEq |
| reference: <testLibrary>::@getter::vNotEq |
| firstFragment: #F5 |
| returnType: bool |
| variable: <testLibrary>::@topLevelVariable::vNotEq |
| setters |
| isOriginVariable isStatic vEq |
| reference: <testLibrary>::@setter::vEq |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F7 |
| type: bool |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vEq |
| isOriginVariable isStatic vNotEq |
| reference: <testLibrary>::@setter::vNotEq |
| firstFragment: #F6 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F8 |
| type: bool |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vNotEq |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic a (nameOffset:4) (firstTokenOffset:4) (offset:4) |
| element: <testLibrary>::@topLevelVariable::a |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| #F4 hasImplicitType hasInitializer isOriginDeclaration isStatic b (nameOffset:21) (firstTokenOffset:21) (offset:21) |
| element: <testLibrary>::@topLevelVariable::b |
| inducedGetter: #F5 |
| inducedSetter: #F6 |
| getters |
| #F2 isComplete isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@getter::a |
| inducingVariable: #F1 |
| #F5 isComplete isOriginVariable isStatic b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@getter::b |
| inducingVariable: #F4 |
| setters |
| #F3 isComplete isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::a |
| inducingVariable: #F1 |
| formalParameters |
| #F7 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::a::@formalParameter::value |
| #F6 isComplete isOriginVariable isStatic b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@setter::b |
| inducingVariable: #F4 |
| formalParameters |
| #F8 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@setter::b::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic a |
| reference: <testLibrary>::@topLevelVariable::a |
| firstFragment: #F1 |
| typeInferenceError: dependencyCycle |
| arguments: [a, b] |
| type: dynamic |
| getter: <testLibrary>::@getter::a |
| setter: <testLibrary>::@setter::a |
| hasImplicitType hasInitializer isOriginDeclaration isStatic b |
| reference: <testLibrary>::@topLevelVariable::b |
| firstFragment: #F4 |
| typeInferenceError: dependencyCycle |
| arguments: [a, b] |
| type: dynamic |
| getter: <testLibrary>::@getter::b |
| setter: <testLibrary>::@setter::b |
| getters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@getter::a |
| firstFragment: #F2 |
| returnType: dynamic |
| variable: <testLibrary>::@topLevelVariable::a |
| isOriginVariable isStatic b |
| reference: <testLibrary>::@getter::b |
| firstFragment: #F5 |
| returnType: dynamic |
| variable: <testLibrary>::@topLevelVariable::b |
| setters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@setter::a |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F7 |
| type: dynamic |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::a |
| isOriginVariable isStatic b |
| reference: <testLibrary>::@setter::b |
| firstFragment: #F6 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F8 |
| type: dynamic |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::b |
| '''); |
| } |
| |
| test_initializer_error_methodInvocation_cycle_topLevel_self() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var a = a.foo(); |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic a (nameOffset:4) (firstTokenOffset:4) (offset:4) |
| element: <testLibrary>::@topLevelVariable::a |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| getters |
| #F2 isComplete isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@getter::a |
| inducingVariable: #F1 |
| setters |
| #F3 isComplete isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::a |
| inducingVariable: #F1 |
| formalParameters |
| #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::a::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic a |
| reference: <testLibrary>::@topLevelVariable::a |
| firstFragment: #F1 |
| typeInferenceError: dependencyCycle |
| arguments: [a] |
| type: dynamic |
| getter: <testLibrary>::@getter::a |
| setter: <testLibrary>::@setter::a |
| getters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@getter::a |
| firstFragment: #F2 |
| returnType: dynamic |
| variable: <testLibrary>::@topLevelVariable::a |
| setters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@setter::a |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F4 |
| type: dynamic |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::a |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic a (nameOffset:4) (firstTokenOffset:4) (offset:4) |
| element: <testLibrary>::@topLevelVariable::a |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| #F4 hasImplicitType hasInitializer isOriginDeclaration isStatic b0 (nameOffset:22) (firstTokenOffset:22) (offset:22) |
| element: <testLibrary>::@topLevelVariable::b0 |
| inducedGetter: #F5 |
| inducedSetter: #F6 |
| #F7 hasImplicitType hasInitializer isOriginDeclaration isStatic b1 (nameOffset:37) (firstTokenOffset:37) (offset:37) |
| element: <testLibrary>::@topLevelVariable::b1 |
| inducedGetter: #F8 |
| inducedSetter: #F9 |
| getters |
| #F2 isComplete isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@getter::a |
| inducingVariable: #F1 |
| #F5 isComplete isOriginVariable isStatic b0 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:22) |
| element: <testLibrary>::@getter::b0 |
| inducingVariable: #F4 |
| #F8 isComplete isOriginVariable isStatic b1 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:37) |
| element: <testLibrary>::@getter::b1 |
| inducingVariable: #F7 |
| setters |
| #F3 isComplete isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::a |
| inducingVariable: #F1 |
| formalParameters |
| #F10 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::a::@formalParameter::value |
| #F6 isComplete isOriginVariable isStatic b0 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:22) |
| element: <testLibrary>::@setter::b0 |
| inducingVariable: #F4 |
| formalParameters |
| #F11 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:22) |
| element: <testLibrary>::@setter::b0::@formalParameter::value |
| #F9 isComplete isOriginVariable isStatic b1 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:37) |
| element: <testLibrary>::@setter::b1 |
| inducingVariable: #F7 |
| formalParameters |
| #F12 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:37) |
| element: <testLibrary>::@setter::b1::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer a |
| reference: <testLibrary>::@topLevelVariable::a |
| firstFragment: #F1 |
| type: List<num> |
| getter: <testLibrary>::@getter::a |
| setter: <testLibrary>::@setter::a |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer b0 |
| reference: <testLibrary>::@topLevelVariable::b0 |
| firstFragment: #F4 |
| type: num |
| getter: <testLibrary>::@getter::b0 |
| setter: <testLibrary>::@setter::b0 |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer b1 |
| reference: <testLibrary>::@topLevelVariable::b1 |
| firstFragment: #F7 |
| type: num |
| getter: <testLibrary>::@getter::b1 |
| setter: <testLibrary>::@setter::b1 |
| getters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@getter::a |
| firstFragment: #F2 |
| returnType: List<num> |
| variable: <testLibrary>::@topLevelVariable::a |
| isOriginVariable isStatic b0 |
| reference: <testLibrary>::@getter::b0 |
| firstFragment: #F5 |
| returnType: num |
| variable: <testLibrary>::@topLevelVariable::b0 |
| isOriginVariable isStatic b1 |
| reference: <testLibrary>::@getter::b1 |
| firstFragment: #F8 |
| returnType: num |
| variable: <testLibrary>::@topLevelVariable::b1 |
| setters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@setter::a |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F10 |
| type: List<num> |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::a |
| isOriginVariable isStatic b0 |
| reference: <testLibrary>::@setter::b0 |
| firstFragment: #F6 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F11 |
| type: num |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::b0 |
| isOriginVariable isStatic b1 |
| reference: <testLibrary>::@setter::b1 |
| firstFragment: #F9 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F12 |
| type: num |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::b1 |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| libraryImports |
| package:test/a.dart |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic x (nameOffset:21) (firstTokenOffset:21) (offset:21) |
| element: <testLibrary>::@topLevelVariable::x |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| getters |
| #F2 isComplete isOriginVariable isStatic x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@getter::x |
| inducingVariable: #F1 |
| setters |
| #F3 isComplete isOriginVariable isStatic x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@setter::x |
| inducingVariable: #F1 |
| formalParameters |
| #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@setter::x::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer x |
| reference: <testLibrary>::@topLevelVariable::x |
| firstFragment: #F1 |
| type: int |
| getter: <testLibrary>::@getter::x |
| setter: <testLibrary>::@setter::x |
| getters |
| isOriginVariable isStatic x |
| reference: <testLibrary>::@getter::x |
| firstFragment: #F2 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::x |
| setters |
| isOriginVariable isStatic x |
| reference: <testLibrary>::@setter::x |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F4 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::x |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class C (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::C |
| fields |
| #F2 hasInitializer isOriginDeclaration f (nameOffset:16) (firstTokenOffset:16) (offset:16) |
| element: <testLibrary>::@class::C::@field::f |
| inducedGetter: #F3 |
| inducedSetter: #F4 |
| constructors |
| #F5 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| getters |
| #F3 isComplete isOriginVariable f (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::C::@getter::f |
| inducingVariable: #F2 |
| setters |
| #F4 isComplete isOriginVariable f (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::C::@setter::f |
| inducingVariable: #F2 |
| formalParameters |
| #F6 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::C::@setter::f::@formalParameter::value |
| topLevelVariables |
| #F7 hasImplicitType hasInitializer isOriginDeclaration isStatic x (nameOffset:29) (firstTokenOffset:29) (offset:29) |
| element: <testLibrary>::@topLevelVariable::x |
| inducedGetter: #F8 |
| inducedSetter: #F9 |
| getters |
| #F8 isComplete isOriginVariable isStatic x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:29) |
| element: <testLibrary>::@getter::x |
| inducingVariable: #F7 |
| setters |
| #F9 isComplete isOriginVariable isStatic x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:29) |
| element: <testLibrary>::@setter::x |
| inducingVariable: #F7 |
| formalParameters |
| #F10 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:29) |
| element: <testLibrary>::@setter::x::@formalParameter::value |
| classes |
| hasNonFinalField isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F1 |
| fields |
| hasInitializer isOriginDeclaration f |
| reference: <testLibrary>::@class::C::@field::f |
| firstFragment: #F2 |
| type: int |
| getter: <testLibrary>::@class::C::@getter::f |
| setter: <testLibrary>::@class::C::@setter::f |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F5 |
| getters |
| isOriginVariable f |
| reference: <testLibrary>::@class::C::@getter::f |
| firstFragment: #F3 |
| returnType: int |
| variable: <testLibrary>::@class::C::@field::f |
| setters |
| isOriginVariable f |
| reference: <testLibrary>::@class::C::@setter::f |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F6 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::C::@field::f |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer x |
| reference: <testLibrary>::@topLevelVariable::x |
| firstFragment: #F7 |
| type: int |
| getter: <testLibrary>::@getter::x |
| setter: <testLibrary>::@setter::x |
| getters |
| isOriginVariable isStatic x |
| reference: <testLibrary>::@getter::x |
| firstFragment: #F8 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::x |
| setters |
| isOriginVariable isStatic x |
| reference: <testLibrary>::@setter::x |
| firstFragment: #F9 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F10 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::x |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| libraryImports |
| package:test/a.dart |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic x (nameOffset:21) (firstTokenOffset:21) (offset:21) |
| element: <testLibrary>::@topLevelVariable::x |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| getters |
| #F2 isComplete isOriginVariable isStatic x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@getter::x |
| inducingVariable: #F1 |
| setters |
| #F3 isComplete isOriginVariable isStatic x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@setter::x |
| inducingVariable: #F1 |
| formalParameters |
| #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@setter::x::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer x |
| reference: <testLibrary>::@topLevelVariable::x |
| firstFragment: #F1 |
| type: int |
| getter: <testLibrary>::@getter::x |
| setter: <testLibrary>::@setter::x |
| getters |
| isOriginVariable isStatic x |
| reference: <testLibrary>::@getter::x |
| firstFragment: #F2 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::x |
| setters |
| isOriginVariable isStatic x |
| reference: <testLibrary>::@setter::x |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F4 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::x |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| libraryImports |
| package:test/a.dart |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic x (nameOffset:21) (firstTokenOffset:21) (offset:21) |
| element: <testLibrary>::@topLevelVariable::x |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| getters |
| #F2 isComplete isOriginVariable isStatic x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@getter::x |
| inducingVariable: #F1 |
| setters |
| #F3 isComplete isOriginVariable isStatic x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@setter::x |
| inducingVariable: #F1 |
| formalParameters |
| #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@setter::x::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer x |
| reference: <testLibrary>::@topLevelVariable::x |
| firstFragment: #F1 |
| type: int |
| getter: <testLibrary>::@getter::x |
| setter: <testLibrary>::@setter::x |
| getters |
| isOriginVariable isStatic x |
| reference: <testLibrary>::@getter::x |
| firstFragment: #F2 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::x |
| setters |
| isOriginVariable isStatic x |
| reference: <testLibrary>::@setter::x |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F4 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::x |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class C (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::C |
| fields |
| #F2 hasImplicitType hasInitializer isOriginDeclaration f (nameOffset:16) (firstTokenOffset:16) (offset:16) |
| element: <testLibrary>::@class::C::@field::f |
| inducedGetter: #F3 |
| inducedSetter: #F4 |
| constructors |
| #F5 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| getters |
| #F3 isComplete isOriginVariable f (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::C::@getter::f |
| inducingVariable: #F2 |
| setters |
| #F4 isComplete isOriginVariable f (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::C::@setter::f |
| inducingVariable: #F2 |
| formalParameters |
| #F6 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::C::@setter::f::@formalParameter::value |
| topLevelVariables |
| #F7 hasImplicitType hasInitializer isOriginDeclaration isStatic x (nameOffset:29) (firstTokenOffset:29) (offset:29) |
| element: <testLibrary>::@topLevelVariable::x |
| inducedGetter: #F8 |
| inducedSetter: #F9 |
| getters |
| #F8 isComplete isOriginVariable isStatic x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:29) |
| element: <testLibrary>::@getter::x |
| inducingVariable: #F7 |
| setters |
| #F9 isComplete isOriginVariable isStatic x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:29) |
| element: <testLibrary>::@setter::x |
| inducingVariable: #F7 |
| formalParameters |
| #F10 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:29) |
| element: <testLibrary>::@setter::x::@formalParameter::value |
| classes |
| hasNonFinalField isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F1 |
| fields |
| hasImplicitType hasInitializer isOriginDeclaration isTypeInferredFromInitializer f |
| reference: <testLibrary>::@class::C::@field::f |
| firstFragment: #F2 |
| type: int |
| getter: <testLibrary>::@class::C::@getter::f |
| setter: <testLibrary>::@class::C::@setter::f |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F5 |
| getters |
| isOriginVariable f |
| reference: <testLibrary>::@class::C::@getter::f |
| firstFragment: #F3 |
| returnType: int |
| variable: <testLibrary>::@class::C::@field::f |
| setters |
| isOriginVariable f |
| reference: <testLibrary>::@class::C::@setter::f |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F6 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::C::@field::f |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer x |
| reference: <testLibrary>::@topLevelVariable::x |
| firstFragment: #F7 |
| type: int |
| getter: <testLibrary>::@getter::x |
| setter: <testLibrary>::@setter::x |
| getters |
| isOriginVariable isStatic x |
| reference: <testLibrary>::@getter::x |
| firstFragment: #F8 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::x |
| setters |
| isOriginVariable isStatic x |
| reference: <testLibrary>::@setter::x |
| firstFragment: #F9 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F10 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::x |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| libraryImports |
| package:test/a.dart |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic x (nameOffset:21) (firstTokenOffset:21) (offset:21) |
| element: <testLibrary>::@topLevelVariable::x |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| getters |
| #F2 isComplete isOriginVariable isStatic x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@getter::x |
| inducingVariable: #F1 |
| setters |
| #F3 isComplete isOriginVariable isStatic x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@setter::x |
| inducingVariable: #F1 |
| formalParameters |
| #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@setter::x::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer x |
| reference: <testLibrary>::@topLevelVariable::x |
| firstFragment: #F1 |
| type: int |
| getter: <testLibrary>::@getter::x |
| setter: <testLibrary>::@setter::x |
| getters |
| isOriginVariable isStatic x |
| reference: <testLibrary>::@getter::x |
| firstFragment: #F2 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::x |
| setters |
| isOriginVariable isStatic x |
| reference: <testLibrary>::@setter::x |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F4 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::x |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 isOriginDeclaration f (nameOffset:16) (firstTokenOffset:16) (offset:16) |
| element: <testLibrary>::@class::A::@field::f |
| inducedGetter: #F3 |
| inducedSetter: #F4 |
| constructors |
| #F5 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F3 isComplete isOriginVariable f (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::A::@getter::f |
| inducingVariable: #F2 |
| setters |
| #F4 isComplete isOriginVariable f (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::A::@setter::f |
| inducingVariable: #F2 |
| formalParameters |
| #F6 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::A::@setter::f::@formalParameter::value |
| #F7 class B (nameOffset:27) (firstTokenOffset:21) (offset:27) |
| element: <testLibrary>::@class::B |
| fields |
| #F8 hasImplicitType hasInitializer isOriginDeclaration isStatic t (nameOffset:44) (firstTokenOffset:44) (offset:44) |
| element: <testLibrary>::@class::B::@field::t |
| inducedGetter: #F9 |
| inducedSetter: #F10 |
| constructors |
| #F11 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:27) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| getters |
| #F9 isComplete isOriginVariable isStatic t (nameOffset:<null>) (firstTokenOffset:<null>) (offset:44) |
| element: <testLibrary>::@class::B::@getter::t |
| inducingVariable: #F8 |
| setters |
| #F10 isComplete isOriginVariable isStatic t (nameOffset:<null>) (firstTokenOffset:<null>) (offset:44) |
| element: <testLibrary>::@class::B::@setter::t |
| inducingVariable: #F8 |
| formalParameters |
| #F12 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:44) |
| element: <testLibrary>::@class::B::@setter::t::@formalParameter::value |
| classes |
| hasNonFinalField isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| isOriginDeclaration f |
| reference: <testLibrary>::@class::A::@field::f |
| firstFragment: #F2 |
| type: int |
| getter: <testLibrary>::@class::A::@getter::f |
| setter: <testLibrary>::@class::A::@setter::f |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F5 |
| getters |
| isOriginVariable f |
| reference: <testLibrary>::@class::A::@getter::f |
| firstFragment: #F3 |
| returnType: int |
| variable: <testLibrary>::@class::A::@field::f |
| setters |
| isOriginVariable f |
| reference: <testLibrary>::@class::A::@setter::f |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F6 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::A::@field::f |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F7 |
| fields |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer t |
| reference: <testLibrary>::@class::B::@field::t |
| firstFragment: #F8 |
| type: int |
| getter: <testLibrary>::@class::B::@getter::t |
| setter: <testLibrary>::@class::B::@setter::t |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F11 |
| getters |
| isOriginVariable isStatic t |
| reference: <testLibrary>::@class::B::@getter::t |
| firstFragment: #F9 |
| returnType: int |
| variable: <testLibrary>::@class::B::@field::t |
| setters |
| isOriginVariable isStatic t |
| reference: <testLibrary>::@class::B::@setter::t |
| firstFragment: #F10 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F12 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::B::@field::t |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class C (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::C |
| fields |
| #F2 isOriginDeclaration b (nameOffset:17) (firstTokenOffset:17) (offset:17) |
| element: <testLibrary>::@class::C::@field::b |
| inducedGetter: #F3 |
| inducedSetter: #F4 |
| constructors |
| #F5 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| getters |
| #F3 isComplete isOriginVariable b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:17) |
| element: <testLibrary>::@class::C::@getter::b |
| inducingVariable: #F2 |
| setters |
| #F4 isComplete isOriginVariable b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:17) |
| element: <testLibrary>::@class::C::@setter::b |
| inducingVariable: #F2 |
| formalParameters |
| #F6 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:17) |
| element: <testLibrary>::@class::C::@setter::b::@formalParameter::value |
| topLevelVariables |
| #F7 isOriginDeclaration isStatic c (nameOffset:24) (firstTokenOffset:24) (offset:24) |
| element: <testLibrary>::@topLevelVariable::c |
| inducedGetter: #F8 |
| inducedSetter: #F9 |
| #F10 hasImplicitType hasInitializer isOriginDeclaration isStatic x (nameOffset:31) (firstTokenOffset:31) (offset:31) |
| element: <testLibrary>::@topLevelVariable::x |
| inducedGetter: #F11 |
| inducedSetter: #F12 |
| getters |
| #F8 isComplete isOriginVariable isStatic c (nameOffset:<null>) (firstTokenOffset:<null>) (offset:24) |
| element: <testLibrary>::@getter::c |
| inducingVariable: #F7 |
| #F11 isComplete isOriginVariable isStatic x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:31) |
| element: <testLibrary>::@getter::x |
| inducingVariable: #F10 |
| setters |
| #F9 isComplete isOriginVariable isStatic c (nameOffset:<null>) (firstTokenOffset:<null>) (offset:24) |
| element: <testLibrary>::@setter::c |
| inducingVariable: #F7 |
| formalParameters |
| #F13 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:24) |
| element: <testLibrary>::@setter::c::@formalParameter::value |
| #F12 isComplete isOriginVariable isStatic x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:31) |
| element: <testLibrary>::@setter::x |
| inducingVariable: #F10 |
| formalParameters |
| #F14 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:31) |
| element: <testLibrary>::@setter::x::@formalParameter::value |
| classes |
| hasNonFinalField isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F1 |
| fields |
| isOriginDeclaration b |
| reference: <testLibrary>::@class::C::@field::b |
| firstFragment: #F2 |
| type: bool |
| getter: <testLibrary>::@class::C::@getter::b |
| setter: <testLibrary>::@class::C::@setter::b |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F5 |
| getters |
| isOriginVariable b |
| reference: <testLibrary>::@class::C::@getter::b |
| firstFragment: #F3 |
| returnType: bool |
| variable: <testLibrary>::@class::C::@field::b |
| setters |
| isOriginVariable b |
| reference: <testLibrary>::@class::C::@setter::b |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F6 |
| type: bool |
| returnType: void |
| variable: <testLibrary>::@class::C::@field::b |
| topLevelVariables |
| isOriginDeclaration isStatic c |
| reference: <testLibrary>::@topLevelVariable::c |
| firstFragment: #F7 |
| type: C |
| getter: <testLibrary>::@getter::c |
| setter: <testLibrary>::@setter::c |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer x |
| reference: <testLibrary>::@topLevelVariable::x |
| firstFragment: #F10 |
| type: bool |
| getter: <testLibrary>::@getter::x |
| setter: <testLibrary>::@setter::x |
| getters |
| isOriginVariable isStatic c |
| reference: <testLibrary>::@getter::c |
| firstFragment: #F8 |
| returnType: C |
| variable: <testLibrary>::@topLevelVariable::c |
| isOriginVariable isStatic x |
| reference: <testLibrary>::@getter::x |
| firstFragment: #F11 |
| returnType: bool |
| variable: <testLibrary>::@topLevelVariable::x |
| setters |
| isOriginVariable isStatic c |
| reference: <testLibrary>::@setter::c |
| firstFragment: #F9 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F13 |
| type: C |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::c |
| isOriginVariable isStatic x |
| reference: <testLibrary>::@setter::x |
| firstFragment: #F12 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F14 |
| type: bool |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::x |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class I (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::I |
| fields |
| #F2 isOriginDeclaration b (nameOffset:17) (firstTokenOffset:17) (offset:17) |
| element: <testLibrary>::@class::I::@field::b |
| inducedGetter: #F3 |
| inducedSetter: #F4 |
| constructors |
| #F5 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::I::@constructor::new |
| typeName: I |
| getters |
| #F3 isComplete isOriginVariable b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:17) |
| element: <testLibrary>::@class::I::@getter::b |
| inducingVariable: #F2 |
| setters |
| #F4 isComplete isOriginVariable b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:17) |
| element: <testLibrary>::@class::I::@setter::b |
| inducingVariable: #F2 |
| formalParameters |
| #F6 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:17) |
| element: <testLibrary>::@class::I::@setter::b::@formalParameter::value |
| #F7 isAbstract class C (nameOffset:37) (firstTokenOffset:22) (offset:37) |
| element: <testLibrary>::@class::C |
| constructors |
| #F8 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:37) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| topLevelVariables |
| #F9 isOriginDeclaration isStatic c (nameOffset:57) (firstTokenOffset:57) (offset:57) |
| element: <testLibrary>::@topLevelVariable::c |
| inducedGetter: #F10 |
| inducedSetter: #F11 |
| #F12 hasImplicitType hasInitializer isOriginDeclaration isStatic x (nameOffset:64) (firstTokenOffset:64) (offset:64) |
| element: <testLibrary>::@topLevelVariable::x |
| inducedGetter: #F13 |
| inducedSetter: #F14 |
| getters |
| #F10 isComplete isOriginVariable isStatic c (nameOffset:<null>) (firstTokenOffset:<null>) (offset:57) |
| element: <testLibrary>::@getter::c |
| inducingVariable: #F9 |
| #F13 isComplete isOriginVariable isStatic x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:64) |
| element: <testLibrary>::@getter::x |
| inducingVariable: #F12 |
| setters |
| #F11 isComplete isOriginVariable isStatic c (nameOffset:<null>) (firstTokenOffset:<null>) (offset:57) |
| element: <testLibrary>::@setter::c |
| inducingVariable: #F9 |
| formalParameters |
| #F15 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:57) |
| element: <testLibrary>::@setter::c::@formalParameter::value |
| #F14 isComplete isOriginVariable isStatic x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:64) |
| element: <testLibrary>::@setter::x |
| inducingVariable: #F12 |
| formalParameters |
| #F16 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:64) |
| element: <testLibrary>::@setter::x::@formalParameter::value |
| classes |
| hasNonFinalField isSimplyBounded class I |
| reference: <testLibrary>::@class::I |
| firstFragment: #F1 |
| fields |
| isOriginDeclaration b |
| reference: <testLibrary>::@class::I::@field::b |
| firstFragment: #F2 |
| type: bool |
| getter: <testLibrary>::@class::I::@getter::b |
| setter: <testLibrary>::@class::I::@setter::b |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::I::@constructor::new |
| firstFragment: #F5 |
| getters |
| isOriginVariable b |
| reference: <testLibrary>::@class::I::@getter::b |
| firstFragment: #F3 |
| returnType: bool |
| variable: <testLibrary>::@class::I::@field::b |
| setters |
| isOriginVariable b |
| reference: <testLibrary>::@class::I::@setter::b |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F6 |
| type: bool |
| returnType: void |
| variable: <testLibrary>::@class::I::@field::b |
| isAbstract isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F7 |
| interfaces |
| I |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F8 |
| topLevelVariables |
| isOriginDeclaration isStatic c |
| reference: <testLibrary>::@topLevelVariable::c |
| firstFragment: #F9 |
| type: C |
| getter: <testLibrary>::@getter::c |
| setter: <testLibrary>::@setter::c |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer x |
| reference: <testLibrary>::@topLevelVariable::x |
| firstFragment: #F12 |
| type: bool |
| getter: <testLibrary>::@getter::x |
| setter: <testLibrary>::@setter::x |
| getters |
| isOriginVariable isStatic c |
| reference: <testLibrary>::@getter::c |
| firstFragment: #F10 |
| returnType: C |
| variable: <testLibrary>::@topLevelVariable::c |
| isOriginVariable isStatic x |
| reference: <testLibrary>::@getter::x |
| firstFragment: #F13 |
| returnType: bool |
| variable: <testLibrary>::@topLevelVariable::x |
| setters |
| isOriginVariable isStatic c |
| reference: <testLibrary>::@setter::c |
| firstFragment: #F11 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F15 |
| type: C |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::c |
| isOriginVariable isStatic x |
| reference: <testLibrary>::@setter::x |
| firstFragment: #F14 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F16 |
| type: bool |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::x |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class I (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::I |
| fields |
| #F2 isOriginDeclaration b (nameOffset:17) (firstTokenOffset:17) (offset:17) |
| element: <testLibrary>::@class::I::@field::b |
| inducedGetter: #F3 |
| inducedSetter: #F4 |
| constructors |
| #F5 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::I::@constructor::new |
| typeName: I |
| getters |
| #F3 isComplete isOriginVariable b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:17) |
| element: <testLibrary>::@class::I::@getter::b |
| inducingVariable: #F2 |
| setters |
| #F4 isComplete isOriginVariable b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:17) |
| element: <testLibrary>::@class::I::@setter::b |
| inducingVariable: #F2 |
| formalParameters |
| #F6 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:17) |
| element: <testLibrary>::@class::I::@setter::b::@formalParameter::value |
| #F7 isAbstract class C (nameOffset:37) (firstTokenOffset:22) (offset:37) |
| element: <testLibrary>::@class::C |
| constructors |
| #F8 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:37) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| topLevelVariables |
| #F9 hasImplicitType hasInitializer isOriginDeclaration isStatic x (nameOffset:74) (firstTokenOffset:74) (offset:74) |
| element: <testLibrary>::@topLevelVariable::x |
| inducedGetter: #F10 |
| inducedSetter: #F11 |
| getters |
| #F10 isComplete isOriginVariable isStatic x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:74) |
| element: <testLibrary>::@getter::x |
| inducingVariable: #F9 |
| setters |
| #F11 isComplete isOriginVariable isStatic x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:74) |
| element: <testLibrary>::@setter::x |
| inducingVariable: #F9 |
| formalParameters |
| #F12 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:74) |
| element: <testLibrary>::@setter::x::@formalParameter::value |
| functions |
| #F13 isComplete isOriginDeclaration isStatic f (nameOffset:57) (firstTokenOffset:55) (offset:57) |
| element: <testLibrary>::@function::f |
| classes |
| hasNonFinalField isSimplyBounded class I |
| reference: <testLibrary>::@class::I |
| firstFragment: #F1 |
| fields |
| isOriginDeclaration b |
| reference: <testLibrary>::@class::I::@field::b |
| firstFragment: #F2 |
| type: bool |
| getter: <testLibrary>::@class::I::@getter::b |
| setter: <testLibrary>::@class::I::@setter::b |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::I::@constructor::new |
| firstFragment: #F5 |
| getters |
| isOriginVariable b |
| reference: <testLibrary>::@class::I::@getter::b |
| firstFragment: #F3 |
| returnType: bool |
| variable: <testLibrary>::@class::I::@field::b |
| setters |
| isOriginVariable b |
| reference: <testLibrary>::@class::I::@setter::b |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F6 |
| type: bool |
| returnType: void |
| variable: <testLibrary>::@class::I::@field::b |
| isAbstract isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F7 |
| interfaces |
| I |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F8 |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer x |
| reference: <testLibrary>::@topLevelVariable::x |
| firstFragment: #F9 |
| type: bool |
| getter: <testLibrary>::@getter::x |
| setter: <testLibrary>::@setter::x |
| getters |
| isOriginVariable isStatic x |
| reference: <testLibrary>::@getter::x |
| firstFragment: #F10 |
| returnType: bool |
| variable: <testLibrary>::@topLevelVariable::x |
| setters |
| isOriginVariable isStatic x |
| reference: <testLibrary>::@setter::x |
| firstFragment: #F11 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F12 |
| type: bool |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::x |
| functions |
| isOriginDeclaration isStatic f |
| reference: <testLibrary>::@function::f |
| firstFragment: #F13 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| constructors |
| #F2 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| methods |
| #F3 isComplete isOriginDeclaration foo (nameOffset:16) (firstTokenOffset:12) (offset:16) |
| element: <testLibrary>::@class::A::@method::foo |
| #F4 hasExtendsClause class B (nameOffset:36) (firstTokenOffset:30) (offset:36) |
| element: <testLibrary>::@class::B |
| constructors |
| #F5 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:36) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| methods |
| #F6 hasImplicitReturnType isComplete isOriginDeclaration foo (nameOffset:52) (firstTokenOffset:52) (offset:52) |
| element: <testLibrary>::@class::B::@method::foo |
| topLevelVariables |
| #F7 hasImplicitType hasInitializer isOriginDeclaration isStatic x (nameOffset:70) (firstTokenOffset:70) (offset:70) |
| element: <testLibrary>::@topLevelVariable::x |
| inducedGetter: #F8 |
| inducedSetter: #F9 |
| #F10 hasImplicitType hasInitializer isOriginDeclaration isStatic y (nameOffset:89) (firstTokenOffset:89) (offset:89) |
| element: <testLibrary>::@topLevelVariable::y |
| inducedGetter: #F11 |
| inducedSetter: #F12 |
| getters |
| #F8 isComplete isOriginVariable isStatic x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:70) |
| element: <testLibrary>::@getter::x |
| inducingVariable: #F7 |
| #F11 isComplete isOriginVariable isStatic y (nameOffset:<null>) (firstTokenOffset:<null>) (offset:89) |
| element: <testLibrary>::@getter::y |
| inducingVariable: #F10 |
| setters |
| #F9 isComplete isOriginVariable isStatic x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:70) |
| element: <testLibrary>::@setter::x |
| inducingVariable: #F7 |
| formalParameters |
| #F13 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:70) |
| element: <testLibrary>::@setter::x::@formalParameter::value |
| #F12 isComplete isOriginVariable isStatic y (nameOffset:<null>) (firstTokenOffset:<null>) (offset:89) |
| element: <testLibrary>::@setter::y |
| inducingVariable: #F10 |
| formalParameters |
| #F14 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:89) |
| element: <testLibrary>::@setter::y::@formalParameter::value |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F2 |
| methods |
| isOriginDeclaration foo |
| reference: <testLibrary>::@class::A::@method::foo |
| firstFragment: #F3 |
| returnType: int |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F4 |
| supertype: A |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F5 |
| superConstructor: <testLibrary>::@class::A::@constructor::new |
| methods |
| isOriginDeclaration foo |
| reference: <testLibrary>::@class::B::@method::foo |
| firstFragment: #F6 |
| returnType: int |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer x |
| reference: <testLibrary>::@topLevelVariable::x |
| firstFragment: #F7 |
| type: int |
| getter: <testLibrary>::@getter::x |
| setter: <testLibrary>::@setter::x |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer y |
| reference: <testLibrary>::@topLevelVariable::y |
| firstFragment: #F10 |
| type: int |
| getter: <testLibrary>::@getter::y |
| setter: <testLibrary>::@setter::y |
| getters |
| isOriginVariable isStatic x |
| reference: <testLibrary>::@getter::x |
| firstFragment: #F8 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::x |
| isOriginVariable isStatic y |
| reference: <testLibrary>::@getter::y |
| firstFragment: #F11 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::y |
| setters |
| isOriginVariable isStatic x |
| reference: <testLibrary>::@setter::x |
| firstFragment: #F9 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F13 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::x |
| isOriginVariable isStatic y |
| reference: <testLibrary>::@setter::y |
| firstFragment: #F12 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F14 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::y |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| libraryImports |
| dart:async |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic vFuture (nameOffset:25) (firstTokenOffset:25) (offset:25) |
| element: <testLibrary>::@topLevelVariable::vFuture |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| #F4 hasImplicitType hasInitializer isOriginDeclaration isStatic v_noParameters_inferredReturnType (nameOffset:60) (firstTokenOffset:60) (offset:60) |
| element: <testLibrary>::@topLevelVariable::v_noParameters_inferredReturnType |
| inducedGetter: #F5 |
| inducedSetter: #F6 |
| #F7 hasImplicitType hasInitializer isOriginDeclaration isStatic v_hasParameter_withType_inferredReturnType (nameOffset:110) (firstTokenOffset:110) (offset:110) |
| element: <testLibrary>::@topLevelVariable::v_hasParameter_withType_inferredReturnType |
| inducedGetter: #F8 |
| inducedSetter: #F9 |
| #F10 hasImplicitType hasInitializer isOriginDeclaration isStatic v_hasParameter_withType_returnParameter (nameOffset:177) (firstTokenOffset:177) (offset:177) |
| element: <testLibrary>::@topLevelVariable::v_hasParameter_withType_returnParameter |
| inducedGetter: #F11 |
| inducedSetter: #F12 |
| #F13 hasImplicitType hasInitializer isOriginDeclaration isStatic v_async_returnValue (nameOffset:240) (firstTokenOffset:240) (offset:240) |
| element: <testLibrary>::@topLevelVariable::v_async_returnValue |
| inducedGetter: #F14 |
| inducedSetter: #F15 |
| #F16 hasImplicitType hasInitializer isOriginDeclaration isStatic v_async_returnFuture (nameOffset:282) (firstTokenOffset:282) (offset:282) |
| element: <testLibrary>::@topLevelVariable::v_async_returnFuture |
| inducedGetter: #F17 |
| inducedSetter: #F18 |
| getters |
| #F2 isComplete isOriginVariable isStatic vFuture (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@getter::vFuture |
| inducingVariable: #F1 |
| #F5 isComplete isOriginVariable isStatic v_noParameters_inferredReturnType (nameOffset:<null>) (firstTokenOffset:<null>) (offset:60) |
| element: <testLibrary>::@getter::v_noParameters_inferredReturnType |
| inducingVariable: #F4 |
| #F8 isComplete isOriginVariable isStatic v_hasParameter_withType_inferredReturnType (nameOffset:<null>) (firstTokenOffset:<null>) (offset:110) |
| element: <testLibrary>::@getter::v_hasParameter_withType_inferredReturnType |
| inducingVariable: #F7 |
| #F11 isComplete isOriginVariable isStatic v_hasParameter_withType_returnParameter (nameOffset:<null>) (firstTokenOffset:<null>) (offset:177) |
| element: <testLibrary>::@getter::v_hasParameter_withType_returnParameter |
| inducingVariable: #F10 |
| #F14 isComplete isOriginVariable isStatic v_async_returnValue (nameOffset:<null>) (firstTokenOffset:<null>) (offset:240) |
| element: <testLibrary>::@getter::v_async_returnValue |
| inducingVariable: #F13 |
| #F17 isComplete isOriginVariable isStatic v_async_returnFuture (nameOffset:<null>) (firstTokenOffset:<null>) (offset:282) |
| element: <testLibrary>::@getter::v_async_returnFuture |
| inducingVariable: #F16 |
| setters |
| #F3 isComplete isOriginVariable isStatic vFuture (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@setter::vFuture |
| inducingVariable: #F1 |
| formalParameters |
| #F19 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@setter::vFuture::@formalParameter::value |
| #F6 isComplete isOriginVariable isStatic v_noParameters_inferredReturnType (nameOffset:<null>) (firstTokenOffset:<null>) (offset:60) |
| element: <testLibrary>::@setter::v_noParameters_inferredReturnType |
| inducingVariable: #F4 |
| formalParameters |
| #F20 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:60) |
| element: <testLibrary>::@setter::v_noParameters_inferredReturnType::@formalParameter::value |
| #F9 isComplete isOriginVariable isStatic v_hasParameter_withType_inferredReturnType (nameOffset:<null>) (firstTokenOffset:<null>) (offset:110) |
| element: <testLibrary>::@setter::v_hasParameter_withType_inferredReturnType |
| inducingVariable: #F7 |
| formalParameters |
| #F21 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:110) |
| element: <testLibrary>::@setter::v_hasParameter_withType_inferredReturnType::@formalParameter::value |
| #F12 isComplete isOriginVariable isStatic v_hasParameter_withType_returnParameter (nameOffset:<null>) (firstTokenOffset:<null>) (offset:177) |
| element: <testLibrary>::@setter::v_hasParameter_withType_returnParameter |
| inducingVariable: #F10 |
| formalParameters |
| #F22 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:177) |
| element: <testLibrary>::@setter::v_hasParameter_withType_returnParameter::@formalParameter::value |
| #F15 isComplete isOriginVariable isStatic v_async_returnValue (nameOffset:<null>) (firstTokenOffset:<null>) (offset:240) |
| element: <testLibrary>::@setter::v_async_returnValue |
| inducingVariable: #F13 |
| formalParameters |
| #F23 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:240) |
| element: <testLibrary>::@setter::v_async_returnValue::@formalParameter::value |
| #F18 isComplete isOriginVariable isStatic v_async_returnFuture (nameOffset:<null>) (firstTokenOffset:<null>) (offset:282) |
| element: <testLibrary>::@setter::v_async_returnFuture |
| inducingVariable: #F16 |
| formalParameters |
| #F24 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:282) |
| element: <testLibrary>::@setter::v_async_returnFuture::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vFuture |
| reference: <testLibrary>::@topLevelVariable::vFuture |
| firstFragment: #F1 |
| type: Future<int> |
| getter: <testLibrary>::@getter::vFuture |
| setter: <testLibrary>::@setter::vFuture |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer v_noParameters_inferredReturnType |
| reference: <testLibrary>::@topLevelVariable::v_noParameters_inferredReturnType |
| firstFragment: #F4 |
| type: int Function() |
| getter: <testLibrary>::@getter::v_noParameters_inferredReturnType |
| setter: <testLibrary>::@setter::v_noParameters_inferredReturnType |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer v_hasParameter_withType_inferredReturnType |
| reference: <testLibrary>::@topLevelVariable::v_hasParameter_withType_inferredReturnType |
| firstFragment: #F7 |
| type: int Function(String) |
| getter: <testLibrary>::@getter::v_hasParameter_withType_inferredReturnType |
| setter: <testLibrary>::@setter::v_hasParameter_withType_inferredReturnType |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer v_hasParameter_withType_returnParameter |
| reference: <testLibrary>::@topLevelVariable::v_hasParameter_withType_returnParameter |
| firstFragment: #F10 |
| type: String Function(String) |
| getter: <testLibrary>::@getter::v_hasParameter_withType_returnParameter |
| setter: <testLibrary>::@setter::v_hasParameter_withType_returnParameter |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer v_async_returnValue |
| reference: <testLibrary>::@topLevelVariable::v_async_returnValue |
| firstFragment: #F13 |
| type: Future<int> Function() |
| getter: <testLibrary>::@getter::v_async_returnValue |
| setter: <testLibrary>::@setter::v_async_returnValue |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer v_async_returnFuture |
| reference: <testLibrary>::@topLevelVariable::v_async_returnFuture |
| firstFragment: #F16 |
| type: Future<int> Function() |
| getter: <testLibrary>::@getter::v_async_returnFuture |
| setter: <testLibrary>::@setter::v_async_returnFuture |
| getters |
| isOriginVariable isStatic vFuture |
| reference: <testLibrary>::@getter::vFuture |
| firstFragment: #F2 |
| returnType: Future<int> |
| variable: <testLibrary>::@topLevelVariable::vFuture |
| isOriginVariable isStatic v_noParameters_inferredReturnType |
| reference: <testLibrary>::@getter::v_noParameters_inferredReturnType |
| firstFragment: #F5 |
| returnType: int Function() |
| variable: <testLibrary>::@topLevelVariable::v_noParameters_inferredReturnType |
| isOriginVariable isStatic v_hasParameter_withType_inferredReturnType |
| reference: <testLibrary>::@getter::v_hasParameter_withType_inferredReturnType |
| firstFragment: #F8 |
| returnType: int Function(String) |
| variable: <testLibrary>::@topLevelVariable::v_hasParameter_withType_inferredReturnType |
| isOriginVariable isStatic v_hasParameter_withType_returnParameter |
| reference: <testLibrary>::@getter::v_hasParameter_withType_returnParameter |
| firstFragment: #F11 |
| returnType: String Function(String) |
| variable: <testLibrary>::@topLevelVariable::v_hasParameter_withType_returnParameter |
| isOriginVariable isStatic v_async_returnValue |
| reference: <testLibrary>::@getter::v_async_returnValue |
| firstFragment: #F14 |
| returnType: Future<int> Function() |
| variable: <testLibrary>::@topLevelVariable::v_async_returnValue |
| isOriginVariable isStatic v_async_returnFuture |
| reference: <testLibrary>::@getter::v_async_returnFuture |
| firstFragment: #F17 |
| returnType: Future<int> Function() |
| variable: <testLibrary>::@topLevelVariable::v_async_returnFuture |
| setters |
| isOriginVariable isStatic vFuture |
| reference: <testLibrary>::@setter::vFuture |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F19 |
| type: Future<int> |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vFuture |
| isOriginVariable isStatic v_noParameters_inferredReturnType |
| reference: <testLibrary>::@setter::v_noParameters_inferredReturnType |
| firstFragment: #F6 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F20 |
| type: int Function() |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::v_noParameters_inferredReturnType |
| isOriginVariable isStatic v_hasParameter_withType_inferredReturnType |
| reference: <testLibrary>::@setter::v_hasParameter_withType_inferredReturnType |
| firstFragment: #F9 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F21 |
| type: int Function(String) |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::v_hasParameter_withType_inferredReturnType |
| isOriginVariable isStatic v_hasParameter_withType_returnParameter |
| reference: <testLibrary>::@setter::v_hasParameter_withType_returnParameter |
| firstFragment: #F12 |
| formalParameters |
| #E3 requiredPositional value |
| firstFragment: #F22 |
| type: String Function(String) |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::v_hasParameter_withType_returnParameter |
| isOriginVariable isStatic v_async_returnValue |
| reference: <testLibrary>::@setter::v_async_returnValue |
| firstFragment: #F15 |
| formalParameters |
| #E4 requiredPositional value |
| firstFragment: #F23 |
| type: Future<int> Function() |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::v_async_returnValue |
| isOriginVariable isStatic v_async_returnFuture |
| reference: <testLibrary>::@setter::v_async_returnFuture |
| firstFragment: #F18 |
| formalParameters |
| #E5 requiredPositional value |
| firstFragment: #F24 |
| type: Future<int> Function() |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::v_async_returnFuture |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic v (nameOffset:4) (firstTokenOffset:4) (offset:4) |
| element: <testLibrary>::@topLevelVariable::v |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| getters |
| #F2 isComplete isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@getter::v |
| inducingVariable: #F1 |
| setters |
| #F3 isComplete isOriginVariable isStatic v (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::v |
| inducingVariable: #F1 |
| formalParameters |
| #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::v::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer v |
| reference: <testLibrary>::@topLevelVariable::v |
| firstFragment: #F1 |
| type: int |
| getter: <testLibrary>::@getter::v |
| setter: <testLibrary>::@setter::v |
| getters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@getter::v |
| firstFragment: #F2 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::v |
| setters |
| isOriginVariable isStatic v |
| reference: <testLibrary>::@setter::v |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F4 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::v |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic vHasTypeArgument (nameOffset:22) (firstTokenOffset:22) (offset:22) |
| element: <testLibrary>::@topLevelVariable::vHasTypeArgument |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| #F4 hasImplicitType hasInitializer isOriginDeclaration isStatic vNoTypeArgument (nameOffset:55) (firstTokenOffset:55) (offset:55) |
| element: <testLibrary>::@topLevelVariable::vNoTypeArgument |
| inducedGetter: #F5 |
| inducedSetter: #F6 |
| getters |
| #F2 isComplete isOriginVariable isStatic vHasTypeArgument (nameOffset:<null>) (firstTokenOffset:<null>) (offset:22) |
| element: <testLibrary>::@getter::vHasTypeArgument |
| inducingVariable: #F1 |
| #F5 isComplete isOriginVariable isStatic vNoTypeArgument (nameOffset:<null>) (firstTokenOffset:<null>) (offset:55) |
| element: <testLibrary>::@getter::vNoTypeArgument |
| inducingVariable: #F4 |
| setters |
| #F3 isComplete isOriginVariable isStatic vHasTypeArgument (nameOffset:<null>) (firstTokenOffset:<null>) (offset:22) |
| element: <testLibrary>::@setter::vHasTypeArgument |
| inducingVariable: #F1 |
| formalParameters |
| #F7 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:22) |
| element: <testLibrary>::@setter::vHasTypeArgument::@formalParameter::value |
| #F6 isComplete isOriginVariable isStatic vNoTypeArgument (nameOffset:<null>) (firstTokenOffset:<null>) (offset:55) |
| element: <testLibrary>::@setter::vNoTypeArgument |
| inducingVariable: #F4 |
| formalParameters |
| #F8 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:55) |
| element: <testLibrary>::@setter::vNoTypeArgument::@formalParameter::value |
| functions |
| #F9 isComplete isOriginDeclaration isStatic f (nameOffset:2) (firstTokenOffset:0) (offset:2) |
| element: <testLibrary>::@function::f |
| typeParameters |
| #F10 T (nameOffset:4) (firstTokenOffset:4) (offset:4) |
| element: #E0 T |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vHasTypeArgument |
| reference: <testLibrary>::@topLevelVariable::vHasTypeArgument |
| firstFragment: #F1 |
| type: int |
| getter: <testLibrary>::@getter::vHasTypeArgument |
| setter: <testLibrary>::@setter::vHasTypeArgument |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vNoTypeArgument |
| reference: <testLibrary>::@topLevelVariable::vNoTypeArgument |
| firstFragment: #F4 |
| type: dynamic |
| getter: <testLibrary>::@getter::vNoTypeArgument |
| setter: <testLibrary>::@setter::vNoTypeArgument |
| getters |
| isOriginVariable isStatic vHasTypeArgument |
| reference: <testLibrary>::@getter::vHasTypeArgument |
| firstFragment: #F2 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::vHasTypeArgument |
| isOriginVariable isStatic vNoTypeArgument |
| reference: <testLibrary>::@getter::vNoTypeArgument |
| firstFragment: #F5 |
| returnType: dynamic |
| variable: <testLibrary>::@topLevelVariable::vNoTypeArgument |
| setters |
| isOriginVariable isStatic vHasTypeArgument |
| reference: <testLibrary>::@setter::vHasTypeArgument |
| firstFragment: #F3 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F7 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vHasTypeArgument |
| isOriginVariable isStatic vNoTypeArgument |
| reference: <testLibrary>::@setter::vNoTypeArgument |
| firstFragment: #F6 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F8 |
| type: dynamic |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vNoTypeArgument |
| functions |
| isOriginDeclaration isStatic f |
| reference: <testLibrary>::@function::f |
| firstFragment: #F9 |
| typeParameters |
| #E0 T |
| firstFragment: #F10 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic vOkArgumentType (nameOffset:29) (firstTokenOffset:29) (offset:29) |
| element: <testLibrary>::@topLevelVariable::vOkArgumentType |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| #F4 hasImplicitType hasInitializer isOriginDeclaration isStatic vWrongArgumentType (nameOffset:57) (firstTokenOffset:57) (offset:57) |
| element: <testLibrary>::@topLevelVariable::vWrongArgumentType |
| inducedGetter: #F5 |
| inducedSetter: #F6 |
| getters |
| #F2 isComplete isOriginVariable isStatic vOkArgumentType (nameOffset:<null>) (firstTokenOffset:<null>) (offset:29) |
| element: <testLibrary>::@getter::vOkArgumentType |
| inducingVariable: #F1 |
| #F5 isComplete isOriginVariable isStatic vWrongArgumentType (nameOffset:<null>) (firstTokenOffset:<null>) (offset:57) |
| element: <testLibrary>::@getter::vWrongArgumentType |
| inducingVariable: #F4 |
| setters |
| #F3 isComplete isOriginVariable isStatic vOkArgumentType (nameOffset:<null>) (firstTokenOffset:<null>) (offset:29) |
| element: <testLibrary>::@setter::vOkArgumentType |
| inducingVariable: #F1 |
| formalParameters |
| #F7 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:29) |
| element: <testLibrary>::@setter::vOkArgumentType::@formalParameter::value |
| #F6 isComplete isOriginVariable isStatic vWrongArgumentType (nameOffset:<null>) (firstTokenOffset:<null>) (offset:57) |
| element: <testLibrary>::@setter::vWrongArgumentType |
| inducingVariable: #F4 |
| formalParameters |
| #F8 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:57) |
| element: <testLibrary>::@setter::vWrongArgumentType::@formalParameter::value |
| functions |
| #F9 isComplete isOriginDeclaration isStatic f (nameOffset:7) (firstTokenOffset:0) (offset:7) |
| element: <testLibrary>::@function::f |
| formalParameters |
| #F10 requiredPositional isOriginDeclaration p (nameOffset:13) (firstTokenOffset:9) (offset:13) |
| element: <testLibrary>::@function::f::@formalParameter::p |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vOkArgumentType |
| reference: <testLibrary>::@topLevelVariable::vOkArgumentType |
| firstFragment: #F1 |
| type: String |
| getter: <testLibrary>::@getter::vOkArgumentType |
| setter: <testLibrary>::@setter::vOkArgumentType |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vWrongArgumentType |
| reference: <testLibrary>::@topLevelVariable::vWrongArgumentType |
| firstFragment: #F4 |
| type: String |
| getter: <testLibrary>::@getter::vWrongArgumentType |
| setter: <testLibrary>::@setter::vWrongArgumentType |
| getters |
| isOriginVariable isStatic vOkArgumentType |
| reference: <testLibrary>::@getter::vOkArgumentType |
| firstFragment: #F2 |
| returnType: String |
| variable: <testLibrary>::@topLevelVariable::vOkArgumentType |
| isOriginVariable isStatic vWrongArgumentType |
| reference: <testLibrary>::@getter::vWrongArgumentType |
| firstFragment: #F5 |
| returnType: String |
| variable: <testLibrary>::@topLevelVariable::vWrongArgumentType |
| setters |
| isOriginVariable isStatic vOkArgumentType |
| reference: <testLibrary>::@setter::vOkArgumentType |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F7 |
| type: String |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vOkArgumentType |
| isOriginVariable isStatic vWrongArgumentType |
| reference: <testLibrary>::@setter::vWrongArgumentType |
| firstFragment: #F6 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F8 |
| type: String |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vWrongArgumentType |
| functions |
| isOriginDeclaration isStatic f |
| reference: <testLibrary>::@function::f |
| firstFragment: #F9 |
| formalParameters |
| #E2 requiredPositional p |
| firstFragment: #F10 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:101) (firstTokenOffset:95) (offset:101) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 hasImplicitType hasInitializer isOriginDeclaration isStatic staticClassVariable (nameOffset:118) (firstTokenOffset:118) (offset:118) |
| element: <testLibrary>::@class::A::@field::staticClassVariable |
| inducedGetter: #F3 |
| inducedSetter: #F4 |
| #F5 isOriginGetterSetter isStatic staticGetter (nameOffset:<null>) (firstTokenOffset:<null>) (offset:101) |
| element: <testLibrary>::@class::A::@field::staticGetter |
| constructors |
| #F6 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:101) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F3 isComplete isOriginVariable isStatic staticClassVariable (nameOffset:<null>) (firstTokenOffset:<null>) (offset:118) |
| element: <testLibrary>::@class::A::@getter::staticClassVariable |
| inducingVariable: #F2 |
| #F7 isComplete isOriginDeclaration isStatic staticGetter (nameOffset:160) (firstTokenOffset:145) (offset:160) |
| element: <testLibrary>::@class::A::@getter::staticGetter |
| setters |
| #F4 isComplete isOriginVariable isStatic staticClassVariable (nameOffset:<null>) (firstTokenOffset:<null>) (offset:118) |
| element: <testLibrary>::@class::A::@setter::staticClassVariable |
| inducingVariable: #F2 |
| formalParameters |
| #F8 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:118) |
| element: <testLibrary>::@class::A::@setter::staticClassVariable::@formalParameter::value |
| methods |
| #F9 isComplete isOriginDeclaration isStatic staticClassMethod (nameOffset:195) (firstTokenOffset:181) (offset:195) |
| element: <testLibrary>::@class::A::@method::staticClassMethod |
| formalParameters |
| #F10 requiredPositional isOriginDeclaration p (nameOffset:217) (firstTokenOffset:213) (offset:217) |
| element: <testLibrary>::@class::A::@method::staticClassMethod::@formalParameter::p |
| #F11 isComplete isOriginDeclaration instanceClassMethod (nameOffset:238) (firstTokenOffset:231) (offset:238) |
| element: <testLibrary>::@class::A::@method::instanceClassMethod |
| formalParameters |
| #F12 requiredPositional isOriginDeclaration p (nameOffset:262) (firstTokenOffset:258) (offset:262) |
| element: <testLibrary>::@class::A::@method::instanceClassMethod::@formalParameter::p |
| topLevelVariables |
| #F13 hasImplicitType hasInitializer isOriginDeclaration isStatic topLevelVariable (nameOffset:44) (firstTokenOffset:44) (offset:44) |
| element: <testLibrary>::@topLevelVariable::topLevelVariable |
| inducedGetter: #F14 |
| inducedSetter: #F15 |
| #F16 isOriginGetterSetter isStatic topLevelGetter (nameOffset:<null>) (firstTokenOffset:<null>) (offset:74) |
| element: <testLibrary>::@topLevelVariable::topLevelGetter |
| #F17 hasImplicitType hasInitializer isOriginDeclaration isStatic r_topLevelFunction (nameOffset:280) (firstTokenOffset:280) (offset:280) |
| element: <testLibrary>::@topLevelVariable::r_topLevelFunction |
| inducedGetter: #F18 |
| inducedSetter: #F19 |
| #F20 hasImplicitType hasInitializer isOriginDeclaration isStatic r_topLevelVariable (nameOffset:323) (firstTokenOffset:323) (offset:323) |
| element: <testLibrary>::@topLevelVariable::r_topLevelVariable |
| inducedGetter: #F21 |
| inducedSetter: #F22 |
| #F23 hasImplicitType hasInitializer isOriginDeclaration isStatic r_topLevelGetter (nameOffset:366) (firstTokenOffset:366) (offset:366) |
| element: <testLibrary>::@topLevelVariable::r_topLevelGetter |
| inducedGetter: #F24 |
| inducedSetter: #F25 |
| #F26 hasImplicitType hasInitializer isOriginDeclaration isStatic r_staticClassVariable (nameOffset:405) (firstTokenOffset:405) (offset:405) |
| element: <testLibrary>::@topLevelVariable::r_staticClassVariable |
| inducedGetter: #F27 |
| inducedSetter: #F28 |
| #F29 hasImplicitType hasInitializer isOriginDeclaration isStatic r_staticGetter (nameOffset:456) (firstTokenOffset:456) (offset:456) |
| element: <testLibrary>::@topLevelVariable::r_staticGetter |
| inducedGetter: #F30 |
| inducedSetter: #F31 |
| #F32 hasImplicitType hasInitializer isOriginDeclaration isStatic r_staticClassMethod (nameOffset:493) (firstTokenOffset:493) (offset:493) |
| element: <testLibrary>::@topLevelVariable::r_staticClassMethod |
| inducedGetter: #F33 |
| inducedSetter: #F34 |
| #F35 hasImplicitType hasInitializer isOriginDeclaration isStatic instanceOfA (nameOffset:540) (firstTokenOffset:540) (offset:540) |
| element: <testLibrary>::@topLevelVariable::instanceOfA |
| inducedGetter: #F36 |
| inducedSetter: #F37 |
| #F38 hasImplicitType hasInitializer isOriginDeclaration isStatic r_instanceClassMethod (nameOffset:567) (firstTokenOffset:567) (offset:567) |
| element: <testLibrary>::@topLevelVariable::r_instanceClassMethod |
| inducedGetter: #F39 |
| inducedSetter: #F40 |
| getters |
| #F14 isComplete isOriginVariable isStatic topLevelVariable (nameOffset:<null>) (firstTokenOffset:<null>) (offset:44) |
| element: <testLibrary>::@getter::topLevelVariable |
| inducingVariable: #F13 |
| #F41 isComplete isOriginDeclaration isStatic topLevelGetter (nameOffset:74) (firstTokenOffset:66) (offset:74) |
| element: <testLibrary>::@getter::topLevelGetter |
| #F18 isComplete isOriginVariable isStatic r_topLevelFunction (nameOffset:<null>) (firstTokenOffset:<null>) (offset:280) |
| element: <testLibrary>::@getter::r_topLevelFunction |
| inducingVariable: #F17 |
| #F21 isComplete isOriginVariable isStatic r_topLevelVariable (nameOffset:<null>) (firstTokenOffset:<null>) (offset:323) |
| element: <testLibrary>::@getter::r_topLevelVariable |
| inducingVariable: #F20 |
| #F24 isComplete isOriginVariable isStatic r_topLevelGetter (nameOffset:<null>) (firstTokenOffset:<null>) (offset:366) |
| element: <testLibrary>::@getter::r_topLevelGetter |
| inducingVariable: #F23 |
| #F27 isComplete isOriginVariable isStatic r_staticClassVariable (nameOffset:<null>) (firstTokenOffset:<null>) (offset:405) |
| element: <testLibrary>::@getter::r_staticClassVariable |
| inducingVariable: #F26 |
| #F30 isComplete isOriginVariable isStatic r_staticGetter (nameOffset:<null>) (firstTokenOffset:<null>) (offset:456) |
| element: <testLibrary>::@getter::r_staticGetter |
| inducingVariable: #F29 |
| #F33 isComplete isOriginVariable isStatic r_staticClassMethod (nameOffset:<null>) (firstTokenOffset:<null>) (offset:493) |
| element: <testLibrary>::@getter::r_staticClassMethod |
| inducingVariable: #F32 |
| #F36 isComplete isOriginVariable isStatic instanceOfA (nameOffset:<null>) (firstTokenOffset:<null>) (offset:540) |
| element: <testLibrary>::@getter::instanceOfA |
| inducingVariable: #F35 |
| #F39 isComplete isOriginVariable isStatic r_instanceClassMethod (nameOffset:<null>) (firstTokenOffset:<null>) (offset:567) |
| element: <testLibrary>::@getter::r_instanceClassMethod |
| inducingVariable: #F38 |
| setters |
| #F15 isComplete isOriginVariable isStatic topLevelVariable (nameOffset:<null>) (firstTokenOffset:<null>) (offset:44) |
| element: <testLibrary>::@setter::topLevelVariable |
| inducingVariable: #F13 |
| formalParameters |
| #F42 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:44) |
| element: <testLibrary>::@setter::topLevelVariable::@formalParameter::value |
| #F19 isComplete isOriginVariable isStatic r_topLevelFunction (nameOffset:<null>) (firstTokenOffset:<null>) (offset:280) |
| element: <testLibrary>::@setter::r_topLevelFunction |
| inducingVariable: #F17 |
| formalParameters |
| #F43 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:280) |
| element: <testLibrary>::@setter::r_topLevelFunction::@formalParameter::value |
| #F22 isComplete isOriginVariable isStatic r_topLevelVariable (nameOffset:<null>) (firstTokenOffset:<null>) (offset:323) |
| element: <testLibrary>::@setter::r_topLevelVariable |
| inducingVariable: #F20 |
| formalParameters |
| #F44 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:323) |
| element: <testLibrary>::@setter::r_topLevelVariable::@formalParameter::value |
| #F25 isComplete isOriginVariable isStatic r_topLevelGetter (nameOffset:<null>) (firstTokenOffset:<null>) (offset:366) |
| element: <testLibrary>::@setter::r_topLevelGetter |
| inducingVariable: #F23 |
| formalParameters |
| #F45 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:366) |
| element: <testLibrary>::@setter::r_topLevelGetter::@formalParameter::value |
| #F28 isComplete isOriginVariable isStatic r_staticClassVariable (nameOffset:<null>) (firstTokenOffset:<null>) (offset:405) |
| element: <testLibrary>::@setter::r_staticClassVariable |
| inducingVariable: #F26 |
| formalParameters |
| #F46 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:405) |
| element: <testLibrary>::@setter::r_staticClassVariable::@formalParameter::value |
| #F31 isComplete isOriginVariable isStatic r_staticGetter (nameOffset:<null>) (firstTokenOffset:<null>) (offset:456) |
| element: <testLibrary>::@setter::r_staticGetter |
| inducingVariable: #F29 |
| formalParameters |
| #F47 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:456) |
| element: <testLibrary>::@setter::r_staticGetter::@formalParameter::value |
| #F34 isComplete isOriginVariable isStatic r_staticClassMethod (nameOffset:<null>) (firstTokenOffset:<null>) (offset:493) |
| element: <testLibrary>::@setter::r_staticClassMethod |
| inducingVariable: #F32 |
| formalParameters |
| #F48 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:493) |
| element: <testLibrary>::@setter::r_staticClassMethod::@formalParameter::value |
| #F37 isComplete isOriginVariable isStatic instanceOfA (nameOffset:<null>) (firstTokenOffset:<null>) (offset:540) |
| element: <testLibrary>::@setter::instanceOfA |
| inducingVariable: #F35 |
| formalParameters |
| #F49 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:540) |
| element: <testLibrary>::@setter::instanceOfA::@formalParameter::value |
| #F40 isComplete isOriginVariable isStatic r_instanceClassMethod (nameOffset:<null>) (firstTokenOffset:<null>) (offset:567) |
| element: <testLibrary>::@setter::r_instanceClassMethod |
| inducingVariable: #F38 |
| formalParameters |
| #F50 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:567) |
| element: <testLibrary>::@setter::r_instanceClassMethod::@formalParameter::value |
| functions |
| #F51 isComplete isOriginDeclaration isStatic topLevelFunction (nameOffset:7) (firstTokenOffset:0) (offset:7) |
| element: <testLibrary>::@function::topLevelFunction |
| formalParameters |
| #F52 requiredPositional isOriginDeclaration p (nameOffset:28) (firstTokenOffset:24) (offset:28) |
| element: <testLibrary>::@function::topLevelFunction::@formalParameter::p |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer staticClassVariable |
| reference: <testLibrary>::@class::A::@field::staticClassVariable |
| firstFragment: #F2 |
| type: int |
| getter: <testLibrary>::@class::A::@getter::staticClassVariable |
| setter: <testLibrary>::@class::A::@setter::staticClassVariable |
| isOriginGetterSetter isStatic staticGetter |
| reference: <testLibrary>::@class::A::@field::staticGetter |
| firstFragment: #F5 |
| type: int |
| getter: <testLibrary>::@class::A::@getter::staticGetter |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F6 |
| getters |
| isOriginVariable isStatic staticClassVariable |
| reference: <testLibrary>::@class::A::@getter::staticClassVariable |
| firstFragment: #F3 |
| returnType: int |
| variable: <testLibrary>::@class::A::@field::staticClassVariable |
| isOriginDeclaration isStatic staticGetter |
| reference: <testLibrary>::@class::A::@getter::staticGetter |
| firstFragment: #F7 |
| returnType: int |
| variable: <testLibrary>::@class::A::@field::staticGetter |
| setters |
| isOriginVariable isStatic staticClassVariable |
| reference: <testLibrary>::@class::A::@setter::staticClassVariable |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F8 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::A::@field::staticClassVariable |
| methods |
| isOriginDeclaration isStatic staticClassMethod |
| reference: <testLibrary>::@class::A::@method::staticClassMethod |
| firstFragment: #F9 |
| formalParameters |
| #E1 requiredPositional p |
| firstFragment: #F10 |
| type: int |
| returnType: String |
| isOriginDeclaration instanceClassMethod |
| reference: <testLibrary>::@class::A::@method::instanceClassMethod |
| firstFragment: #F11 |
| formalParameters |
| #E2 requiredPositional p |
| firstFragment: #F12 |
| type: int |
| returnType: String |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer topLevelVariable |
| reference: <testLibrary>::@topLevelVariable::topLevelVariable |
| firstFragment: #F13 |
| type: int |
| getter: <testLibrary>::@getter::topLevelVariable |
| setter: <testLibrary>::@setter::topLevelVariable |
| isOriginGetterSetter isStatic topLevelGetter |
| reference: <testLibrary>::@topLevelVariable::topLevelGetter |
| firstFragment: #F16 |
| type: int |
| getter: <testLibrary>::@getter::topLevelGetter |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer r_topLevelFunction |
| reference: <testLibrary>::@topLevelVariable::r_topLevelFunction |
| firstFragment: #F17 |
| type: String Function(int) |
| getter: <testLibrary>::@getter::r_topLevelFunction |
| setter: <testLibrary>::@setter::r_topLevelFunction |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer r_topLevelVariable |
| reference: <testLibrary>::@topLevelVariable::r_topLevelVariable |
| firstFragment: #F20 |
| type: int |
| getter: <testLibrary>::@getter::r_topLevelVariable |
| setter: <testLibrary>::@setter::r_topLevelVariable |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer r_topLevelGetter |
| reference: <testLibrary>::@topLevelVariable::r_topLevelGetter |
| firstFragment: #F23 |
| type: int |
| getter: <testLibrary>::@getter::r_topLevelGetter |
| setter: <testLibrary>::@setter::r_topLevelGetter |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer r_staticClassVariable |
| reference: <testLibrary>::@topLevelVariable::r_staticClassVariable |
| firstFragment: #F26 |
| type: int |
| getter: <testLibrary>::@getter::r_staticClassVariable |
| setter: <testLibrary>::@setter::r_staticClassVariable |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer r_staticGetter |
| reference: <testLibrary>::@topLevelVariable::r_staticGetter |
| firstFragment: #F29 |
| type: int |
| getter: <testLibrary>::@getter::r_staticGetter |
| setter: <testLibrary>::@setter::r_staticGetter |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer r_staticClassMethod |
| reference: <testLibrary>::@topLevelVariable::r_staticClassMethod |
| firstFragment: #F32 |
| type: String Function(int) |
| getter: <testLibrary>::@getter::r_staticClassMethod |
| setter: <testLibrary>::@setter::r_staticClassMethod |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer instanceOfA |
| reference: <testLibrary>::@topLevelVariable::instanceOfA |
| firstFragment: #F35 |
| type: A |
| getter: <testLibrary>::@getter::instanceOfA |
| setter: <testLibrary>::@setter::instanceOfA |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer r_instanceClassMethod |
| reference: <testLibrary>::@topLevelVariable::r_instanceClassMethod |
| firstFragment: #F38 |
| type: String Function(int) |
| getter: <testLibrary>::@getter::r_instanceClassMethod |
| setter: <testLibrary>::@setter::r_instanceClassMethod |
| getters |
| isOriginVariable isStatic topLevelVariable |
| reference: <testLibrary>::@getter::topLevelVariable |
| firstFragment: #F14 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::topLevelVariable |
| isOriginDeclaration isStatic topLevelGetter |
| reference: <testLibrary>::@getter::topLevelGetter |
| firstFragment: #F41 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::topLevelGetter |
| isOriginVariable isStatic r_topLevelFunction |
| reference: <testLibrary>::@getter::r_topLevelFunction |
| firstFragment: #F18 |
| returnType: String Function(int) |
| variable: <testLibrary>::@topLevelVariable::r_topLevelFunction |
| isOriginVariable isStatic r_topLevelVariable |
| reference: <testLibrary>::@getter::r_topLevelVariable |
| firstFragment: #F21 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::r_topLevelVariable |
| isOriginVariable isStatic r_topLevelGetter |
| reference: <testLibrary>::@getter::r_topLevelGetter |
| firstFragment: #F24 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::r_topLevelGetter |
| isOriginVariable isStatic r_staticClassVariable |
| reference: <testLibrary>::@getter::r_staticClassVariable |
| firstFragment: #F27 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::r_staticClassVariable |
| isOriginVariable isStatic r_staticGetter |
| reference: <testLibrary>::@getter::r_staticGetter |
| firstFragment: #F30 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::r_staticGetter |
| isOriginVariable isStatic r_staticClassMethod |
| reference: <testLibrary>::@getter::r_staticClassMethod |
| firstFragment: #F33 |
| returnType: String Function(int) |
| variable: <testLibrary>::@topLevelVariable::r_staticClassMethod |
| isOriginVariable isStatic instanceOfA |
| reference: <testLibrary>::@getter::instanceOfA |
| firstFragment: #F36 |
| returnType: A |
| variable: <testLibrary>::@topLevelVariable::instanceOfA |
| isOriginVariable isStatic r_instanceClassMethod |
| reference: <testLibrary>::@getter::r_instanceClassMethod |
| firstFragment: #F39 |
| returnType: String Function(int) |
| variable: <testLibrary>::@topLevelVariable::r_instanceClassMethod |
| setters |
| isOriginVariable isStatic topLevelVariable |
| reference: <testLibrary>::@setter::topLevelVariable |
| firstFragment: #F15 |
| formalParameters |
| #E3 requiredPositional value |
| firstFragment: #F42 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::topLevelVariable |
| isOriginVariable isStatic r_topLevelFunction |
| reference: <testLibrary>::@setter::r_topLevelFunction |
| firstFragment: #F19 |
| formalParameters |
| #E4 requiredPositional value |
| firstFragment: #F43 |
| type: String Function(int) |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::r_topLevelFunction |
| isOriginVariable isStatic r_topLevelVariable |
| reference: <testLibrary>::@setter::r_topLevelVariable |
| firstFragment: #F22 |
| formalParameters |
| #E5 requiredPositional value |
| firstFragment: #F44 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::r_topLevelVariable |
| isOriginVariable isStatic r_topLevelGetter |
| reference: <testLibrary>::@setter::r_topLevelGetter |
| firstFragment: #F25 |
| formalParameters |
| #E6 requiredPositional value |
| firstFragment: #F45 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::r_topLevelGetter |
| isOriginVariable isStatic r_staticClassVariable |
| reference: <testLibrary>::@setter::r_staticClassVariable |
| firstFragment: #F28 |
| formalParameters |
| #E7 requiredPositional value |
| firstFragment: #F46 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::r_staticClassVariable |
| isOriginVariable isStatic r_staticGetter |
| reference: <testLibrary>::@setter::r_staticGetter |
| firstFragment: #F31 |
| formalParameters |
| #E8 requiredPositional value |
| firstFragment: #F47 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::r_staticGetter |
| isOriginVariable isStatic r_staticClassMethod |
| reference: <testLibrary>::@setter::r_staticClassMethod |
| firstFragment: #F34 |
| formalParameters |
| #E9 requiredPositional value |
| firstFragment: #F48 |
| type: String Function(int) |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::r_staticClassMethod |
| isOriginVariable isStatic instanceOfA |
| reference: <testLibrary>::@setter::instanceOfA |
| firstFragment: #F37 |
| formalParameters |
| #E10 requiredPositional value |
| firstFragment: #F49 |
| type: A |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::instanceOfA |
| isOriginVariable isStatic r_instanceClassMethod |
| reference: <testLibrary>::@setter::r_instanceClassMethod |
| firstFragment: #F40 |
| formalParameters |
| #E11 requiredPositional value |
| firstFragment: #F50 |
| type: String Function(int) |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::r_instanceClassMethod |
| functions |
| isOriginDeclaration isStatic topLevelFunction |
| reference: <testLibrary>::@function::topLevelFunction |
| firstFragment: #F51 |
| formalParameters |
| #E12 requiredPositional p |
| firstFragment: #F52 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 hasImplicitType hasInitializer isOriginDeclaration isStatic a (nameOffset:23) (firstTokenOffset:23) (offset:23) |
| element: <testLibrary>::@class::A::@field::a |
| inducedGetter: #F3 |
| inducedSetter: #F4 |
| constructors |
| #F5 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F3 isComplete isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23) |
| element: <testLibrary>::@class::A::@getter::a |
| inducingVariable: #F2 |
| setters |
| #F4 isComplete isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23) |
| element: <testLibrary>::@class::A::@setter::a |
| inducingVariable: #F2 |
| formalParameters |
| #F6 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23) |
| element: <testLibrary>::@class::A::@setter::a::@formalParameter::value |
| #F7 class B (nameOffset:40) (firstTokenOffset:34) (offset:40) |
| element: <testLibrary>::@class::B |
| fields |
| #F8 hasImplicitType hasInitializer isOriginDeclaration isStatic b (nameOffset:57) (firstTokenOffset:57) (offset:57) |
| element: <testLibrary>::@class::B::@field::b |
| inducedGetter: #F9 |
| inducedSetter: #F10 |
| constructors |
| #F11 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:40) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| getters |
| #F9 isComplete isOriginVariable isStatic b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:57) |
| element: <testLibrary>::@class::B::@getter::b |
| inducingVariable: #F8 |
| setters |
| #F10 isComplete isOriginVariable isStatic b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:57) |
| element: <testLibrary>::@class::B::@setter::b |
| inducingVariable: #F8 |
| formalParameters |
| #F12 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:57) |
| element: <testLibrary>::@class::B::@setter::b::@formalParameter::value |
| topLevelVariables |
| #F13 hasImplicitType hasInitializer isOriginDeclaration isStatic c (nameOffset:72) (firstTokenOffset:72) (offset:72) |
| element: <testLibrary>::@topLevelVariable::c |
| inducedGetter: #F14 |
| inducedSetter: #F15 |
| getters |
| #F14 isComplete isOriginVariable isStatic c (nameOffset:<null>) (firstTokenOffset:<null>) (offset:72) |
| element: <testLibrary>::@getter::c |
| inducingVariable: #F13 |
| setters |
| #F15 isComplete isOriginVariable isStatic c (nameOffset:<null>) (firstTokenOffset:<null>) (offset:72) |
| element: <testLibrary>::@setter::c |
| inducingVariable: #F13 |
| formalParameters |
| #F16 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:72) |
| element: <testLibrary>::@setter::c::@formalParameter::value |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| hasImplicitType hasInitializer isOriginDeclaration isStatic a |
| reference: <testLibrary>::@class::A::@field::a |
| firstFragment: #F2 |
| typeInferenceError: dependencyCycle |
| arguments: [a, b] |
| type: dynamic |
| getter: <testLibrary>::@class::A::@getter::a |
| setter: <testLibrary>::@class::A::@setter::a |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F5 |
| getters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@class::A::@getter::a |
| firstFragment: #F3 |
| returnType: dynamic |
| variable: <testLibrary>::@class::A::@field::a |
| setters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@class::A::@setter::a |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F6 |
| type: dynamic |
| returnType: void |
| variable: <testLibrary>::@class::A::@field::a |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F7 |
| fields |
| hasImplicitType hasInitializer isOriginDeclaration isStatic b |
| reference: <testLibrary>::@class::B::@field::b |
| firstFragment: #F8 |
| typeInferenceError: dependencyCycle |
| arguments: [a, b] |
| type: dynamic |
| getter: <testLibrary>::@class::B::@getter::b |
| setter: <testLibrary>::@class::B::@setter::b |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F11 |
| getters |
| isOriginVariable isStatic b |
| reference: <testLibrary>::@class::B::@getter::b |
| firstFragment: #F9 |
| returnType: dynamic |
| variable: <testLibrary>::@class::B::@field::b |
| setters |
| isOriginVariable isStatic b |
| reference: <testLibrary>::@class::B::@setter::b |
| firstFragment: #F10 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F12 |
| type: dynamic |
| returnType: void |
| variable: <testLibrary>::@class::B::@field::b |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer c |
| reference: <testLibrary>::@topLevelVariable::c |
| firstFragment: #F13 |
| type: dynamic |
| getter: <testLibrary>::@getter::c |
| setter: <testLibrary>::@setter::c |
| getters |
| isOriginVariable isStatic c |
| reference: <testLibrary>::@getter::c |
| firstFragment: #F14 |
| returnType: dynamic |
| variable: <testLibrary>::@topLevelVariable::c |
| setters |
| isOriginVariable isStatic c |
| reference: <testLibrary>::@setter::c |
| firstFragment: #F15 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F16 |
| type: dynamic |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::c |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 hasImplicitType hasInitializer isOriginDeclaration isStatic a (nameOffset:23) (firstTokenOffset:23) (offset:23) |
| element: <testLibrary>::@class::A::@field::a |
| inducedGetter: #F3 |
| inducedSetter: #F4 |
| constructors |
| #F5 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F3 isComplete isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23) |
| element: <testLibrary>::@class::A::@getter::a |
| inducingVariable: #F2 |
| setters |
| #F4 isComplete isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23) |
| element: <testLibrary>::@class::A::@setter::a |
| inducingVariable: #F2 |
| formalParameters |
| #F6 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23) |
| element: <testLibrary>::@class::A::@setter::a::@formalParameter::value |
| topLevelVariables |
| #F7 hasImplicitType hasInitializer isOriginDeclaration isStatic b (nameOffset:36) (firstTokenOffset:36) (offset:36) |
| element: <testLibrary>::@topLevelVariable::b |
| inducedGetter: #F8 |
| inducedSetter: #F9 |
| #F10 hasImplicitType hasInitializer isOriginDeclaration isStatic c (nameOffset:49) (firstTokenOffset:49) (offset:49) |
| element: <testLibrary>::@topLevelVariable::c |
| inducedGetter: #F11 |
| inducedSetter: #F12 |
| getters |
| #F8 isComplete isOriginVariable isStatic b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:36) |
| element: <testLibrary>::@getter::b |
| inducingVariable: #F7 |
| #F11 isComplete isOriginVariable isStatic c (nameOffset:<null>) (firstTokenOffset:<null>) (offset:49) |
| element: <testLibrary>::@getter::c |
| inducingVariable: #F10 |
| setters |
| #F9 isComplete isOriginVariable isStatic b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:36) |
| element: <testLibrary>::@setter::b |
| inducingVariable: #F7 |
| formalParameters |
| #F13 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:36) |
| element: <testLibrary>::@setter::b::@formalParameter::value |
| #F12 isComplete isOriginVariable isStatic c (nameOffset:<null>) (firstTokenOffset:<null>) (offset:49) |
| element: <testLibrary>::@setter::c |
| inducingVariable: #F10 |
| formalParameters |
| #F14 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:49) |
| element: <testLibrary>::@setter::c::@formalParameter::value |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| hasImplicitType hasInitializer isOriginDeclaration isStatic a |
| reference: <testLibrary>::@class::A::@field::a |
| firstFragment: #F2 |
| typeInferenceError: dependencyCycle |
| arguments: [a, b] |
| type: dynamic |
| getter: <testLibrary>::@class::A::@getter::a |
| setter: <testLibrary>::@class::A::@setter::a |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F5 |
| getters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@class::A::@getter::a |
| firstFragment: #F3 |
| returnType: dynamic |
| variable: <testLibrary>::@class::A::@field::a |
| setters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@class::A::@setter::a |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F6 |
| type: dynamic |
| returnType: void |
| variable: <testLibrary>::@class::A::@field::a |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic b |
| reference: <testLibrary>::@topLevelVariable::b |
| firstFragment: #F7 |
| typeInferenceError: dependencyCycle |
| arguments: [a, b] |
| type: dynamic |
| getter: <testLibrary>::@getter::b |
| setter: <testLibrary>::@setter::b |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer c |
| reference: <testLibrary>::@topLevelVariable::c |
| firstFragment: #F10 |
| type: dynamic |
| getter: <testLibrary>::@getter::c |
| setter: <testLibrary>::@setter::c |
| getters |
| isOriginVariable isStatic b |
| reference: <testLibrary>::@getter::b |
| firstFragment: #F8 |
| returnType: dynamic |
| variable: <testLibrary>::@topLevelVariable::b |
| isOriginVariable isStatic c |
| reference: <testLibrary>::@getter::c |
| firstFragment: #F11 |
| returnType: dynamic |
| variable: <testLibrary>::@topLevelVariable::c |
| setters |
| isOriginVariable isStatic b |
| reference: <testLibrary>::@setter::b |
| firstFragment: #F9 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F13 |
| type: dynamic |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::b |
| isOriginVariable isStatic c |
| reference: <testLibrary>::@setter::c |
| firstFragment: #F12 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F14 |
| type: dynamic |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::c |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isFinal isOriginDeclaration isStatic a (nameOffset:6) (firstTokenOffset:6) (offset:6) |
| element: <testLibrary>::@topLevelVariable::a |
| inducedGetter: #F2 |
| #F3 hasImplicitType hasInitializer isFinal isOriginDeclaration isStatic b (nameOffset:19) (firstTokenOffset:19) (offset:19) |
| element: <testLibrary>::@topLevelVariable::b |
| inducedGetter: #F4 |
| #F5 hasImplicitType hasInitializer isFinal isOriginDeclaration isStatic c (nameOffset:32) (firstTokenOffset:32) (offset:32) |
| element: <testLibrary>::@topLevelVariable::c |
| inducedGetter: #F6 |
| #F7 hasImplicitType hasInitializer isFinal isOriginDeclaration isStatic d (nameOffset:45) (firstTokenOffset:45) (offset:45) |
| element: <testLibrary>::@topLevelVariable::d |
| inducedGetter: #F8 |
| getters |
| #F2 isComplete isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@getter::a |
| inducingVariable: #F1 |
| #F4 isComplete isOriginVariable isStatic b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:19) |
| element: <testLibrary>::@getter::b |
| inducingVariable: #F3 |
| #F6 isComplete isOriginVariable isStatic c (nameOffset:<null>) (firstTokenOffset:<null>) (offset:32) |
| element: <testLibrary>::@getter::c |
| inducingVariable: #F5 |
| #F8 isComplete isOriginVariable isStatic d (nameOffset:<null>) (firstTokenOffset:<null>) (offset:45) |
| element: <testLibrary>::@getter::d |
| inducingVariable: #F7 |
| topLevelVariables |
| hasImplicitType hasInitializer isFinal isOriginDeclaration isStatic a |
| reference: <testLibrary>::@topLevelVariable::a |
| firstFragment: #F1 |
| typeInferenceError: dependencyCycle |
| arguments: [a, b, c] |
| type: dynamic |
| getter: <testLibrary>::@getter::a |
| hasImplicitType hasInitializer isFinal isOriginDeclaration isStatic b |
| reference: <testLibrary>::@topLevelVariable::b |
| firstFragment: #F3 |
| typeInferenceError: dependencyCycle |
| arguments: [a, b, c] |
| type: dynamic |
| getter: <testLibrary>::@getter::b |
| hasImplicitType hasInitializer isFinal isOriginDeclaration isStatic c |
| reference: <testLibrary>::@topLevelVariable::c |
| firstFragment: #F5 |
| typeInferenceError: dependencyCycle |
| arguments: [a, b, c] |
| type: dynamic |
| getter: <testLibrary>::@getter::c |
| hasImplicitType hasInitializer isFinal isOriginDeclaration isStatic isTypeInferredFromInitializer d |
| reference: <testLibrary>::@topLevelVariable::d |
| firstFragment: #F7 |
| type: dynamic |
| getter: <testLibrary>::@getter::d |
| getters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@getter::a |
| firstFragment: #F2 |
| returnType: dynamic |
| variable: <testLibrary>::@topLevelVariable::a |
| isOriginVariable isStatic b |
| reference: <testLibrary>::@getter::b |
| firstFragment: #F4 |
| returnType: dynamic |
| variable: <testLibrary>::@topLevelVariable::b |
| isOriginVariable isStatic c |
| reference: <testLibrary>::@getter::c |
| firstFragment: #F6 |
| returnType: dynamic |
| variable: <testLibrary>::@topLevelVariable::c |
| isOriginVariable isStatic d |
| reference: <testLibrary>::@getter::d |
| firstFragment: #F8 |
| returnType: dynamic |
| variable: <testLibrary>::@topLevelVariable::d |
| '''); |
| } |
| |
| test_initializer_identifier_formalParameter() async { |
| // TODO(scheglov): I don't understand this yet |
| } |
| |
| @failingTest |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| constructors |
| #F2 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| topLevelVariables |
| #F3 hasImplicitType hasInitializer isOriginDeclaration isStatic a (nameOffset:15) (firstTokenOffset:15) (offset:15) |
| element: <testLibrary>::@topLevelVariable::a |
| inducedGetter: #F4 |
| inducedSetter: #F5 |
| getters |
| #F4 isComplete isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@getter::a |
| inducingVariable: #F3 |
| setters |
| #F5 isComplete isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@setter::a |
| inducingVariable: #F3 |
| formalParameters |
| #F6 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@setter::a::@formalParameter::value |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F2 |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer a |
| reference: <testLibrary>::@topLevelVariable::a |
| firstFragment: #F3 |
| type: A |
| getter: <testLibrary>::@getter::a |
| setter: <testLibrary>::@setter::a |
| getters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@getter::a |
| firstFragment: #F4 |
| returnType: A |
| variable: <testLibrary>::@topLevelVariable::a |
| setters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@setter::a |
| firstFragment: #F5 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F6 |
| type: A |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::a |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic s (nameOffset:25) (firstTokenOffset:25) (offset:25) |
| element: <testLibrary>::@topLevelVariable::s |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| #F4 hasImplicitType hasInitializer isOriginDeclaration isStatic h (nameOffset:49) (firstTokenOffset:49) (offset:49) |
| element: <testLibrary>::@topLevelVariable::h |
| inducedGetter: #F5 |
| inducedSetter: #F6 |
| getters |
| #F2 isComplete isOriginVariable isStatic s (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@getter::s |
| inducingVariable: #F1 |
| #F5 isComplete isOriginVariable isStatic h (nameOffset:<null>) (firstTokenOffset:<null>) (offset:49) |
| element: <testLibrary>::@getter::h |
| inducingVariable: #F4 |
| setters |
| #F3 isComplete isOriginVariable isStatic s (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@setter::s |
| inducingVariable: #F1 |
| formalParameters |
| #F7 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@setter::s::@formalParameter::value |
| #F6 isComplete isOriginVariable isStatic h (nameOffset:<null>) (firstTokenOffset:<null>) (offset:49) |
| element: <testLibrary>::@setter::h |
| inducingVariable: #F4 |
| formalParameters |
| #F8 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:49) |
| element: <testLibrary>::@setter::h::@formalParameter::value |
| functions |
| #F9 isComplete isOriginDeclaration isStatic f (nameOffset:8) (firstTokenOffset:0) (offset:8) |
| element: <testLibrary>::@function::f |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer s |
| reference: <testLibrary>::@topLevelVariable::s |
| firstFragment: #F1 |
| type: String |
| getter: <testLibrary>::@getter::s |
| setter: <testLibrary>::@setter::s |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer h |
| reference: <testLibrary>::@topLevelVariable::h |
| firstFragment: #F4 |
| type: int |
| getter: <testLibrary>::@getter::h |
| setter: <testLibrary>::@setter::h |
| getters |
| isOriginVariable isStatic s |
| reference: <testLibrary>::@getter::s |
| firstFragment: #F2 |
| returnType: String |
| variable: <testLibrary>::@topLevelVariable::s |
| isOriginVariable isStatic h |
| reference: <testLibrary>::@getter::h |
| firstFragment: #F5 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::h |
| setters |
| isOriginVariable isStatic s |
| reference: <testLibrary>::@setter::s |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F7 |
| type: String |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::s |
| isOriginVariable isStatic h |
| reference: <testLibrary>::@setter::h |
| firstFragment: #F6 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F8 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::h |
| functions |
| isOriginDeclaration isStatic f |
| reference: <testLibrary>::@function::f |
| firstFragment: #F9 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 isOriginDeclaration isStatic d (nameOffset:8) (firstTokenOffset:8) (offset:8) |
| element: <testLibrary>::@topLevelVariable::d |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| #F4 hasImplicitType hasInitializer isOriginDeclaration isStatic s (nameOffset:15) (firstTokenOffset:15) (offset:15) |
| element: <testLibrary>::@topLevelVariable::s |
| inducedGetter: #F5 |
| inducedSetter: #F6 |
| #F7 hasImplicitType hasInitializer isOriginDeclaration isStatic h (nameOffset:37) (firstTokenOffset:37) (offset:37) |
| element: <testLibrary>::@topLevelVariable::h |
| inducedGetter: #F8 |
| inducedSetter: #F9 |
| getters |
| #F2 isComplete isOriginVariable isStatic d (nameOffset:<null>) (firstTokenOffset:<null>) (offset:8) |
| element: <testLibrary>::@getter::d |
| inducingVariable: #F1 |
| #F5 isComplete isOriginVariable isStatic s (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@getter::s |
| inducingVariable: #F4 |
| #F8 isComplete isOriginVariable isStatic h (nameOffset:<null>) (firstTokenOffset:<null>) (offset:37) |
| element: <testLibrary>::@getter::h |
| inducingVariable: #F7 |
| setters |
| #F3 isComplete isOriginVariable isStatic d (nameOffset:<null>) (firstTokenOffset:<null>) (offset:8) |
| element: <testLibrary>::@setter::d |
| inducingVariable: #F1 |
| formalParameters |
| #F10 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:8) |
| element: <testLibrary>::@setter::d::@formalParameter::value |
| #F6 isComplete isOriginVariable isStatic s (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@setter::s |
| inducingVariable: #F4 |
| formalParameters |
| #F11 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@setter::s::@formalParameter::value |
| #F9 isComplete isOriginVariable isStatic h (nameOffset:<null>) (firstTokenOffset:<null>) (offset:37) |
| element: <testLibrary>::@setter::h |
| inducingVariable: #F7 |
| formalParameters |
| #F12 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:37) |
| element: <testLibrary>::@setter::h::@formalParameter::value |
| topLevelVariables |
| isOriginDeclaration isStatic d |
| reference: <testLibrary>::@topLevelVariable::d |
| firstFragment: #F1 |
| type: dynamic |
| getter: <testLibrary>::@getter::d |
| setter: <testLibrary>::@setter::d |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer s |
| reference: <testLibrary>::@topLevelVariable::s |
| firstFragment: #F4 |
| type: String |
| getter: <testLibrary>::@getter::s |
| setter: <testLibrary>::@setter::s |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer h |
| reference: <testLibrary>::@topLevelVariable::h |
| firstFragment: #F7 |
| type: int |
| getter: <testLibrary>::@getter::h |
| setter: <testLibrary>::@setter::h |
| getters |
| isOriginVariable isStatic d |
| reference: <testLibrary>::@getter::d |
| firstFragment: #F2 |
| returnType: dynamic |
| variable: <testLibrary>::@topLevelVariable::d |
| isOriginVariable isStatic s |
| reference: <testLibrary>::@getter::s |
| firstFragment: #F5 |
| returnType: String |
| variable: <testLibrary>::@topLevelVariable::s |
| isOriginVariable isStatic h |
| reference: <testLibrary>::@getter::h |
| firstFragment: #F8 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::h |
| setters |
| isOriginVariable isStatic d |
| reference: <testLibrary>::@setter::d |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F10 |
| type: dynamic |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::d |
| isOriginVariable isStatic s |
| reference: <testLibrary>::@setter::s |
| firstFragment: #F6 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F11 |
| type: String |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::s |
| isOriginVariable isStatic h |
| reference: <testLibrary>::@setter::h |
| firstFragment: #F9 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F12 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::h |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic a (nameOffset:4) (firstTokenOffset:4) (offset:4) |
| element: <testLibrary>::@topLevelVariable::a |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| #F4 hasImplicitType hasInitializer isOriginDeclaration isStatic b (nameOffset:17) (firstTokenOffset:17) (offset:17) |
| element: <testLibrary>::@topLevelVariable::b |
| inducedGetter: #F5 |
| inducedSetter: #F6 |
| getters |
| #F2 isComplete isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@getter::a |
| inducingVariable: #F1 |
| #F5 isComplete isOriginVariable isStatic b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:17) |
| element: <testLibrary>::@getter::b |
| inducingVariable: #F4 |
| setters |
| #F3 isComplete isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::a |
| inducingVariable: #F1 |
| formalParameters |
| #F7 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::a::@formalParameter::value |
| #F6 isComplete isOriginVariable isStatic b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:17) |
| element: <testLibrary>::@setter::b |
| inducingVariable: #F4 |
| formalParameters |
| #F8 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:17) |
| element: <testLibrary>::@setter::b::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer a |
| reference: <testLibrary>::@topLevelVariable::a |
| firstFragment: #F1 |
| type: double |
| getter: <testLibrary>::@getter::a |
| setter: <testLibrary>::@setter::a |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer b |
| reference: <testLibrary>::@topLevelVariable::b |
| firstFragment: #F4 |
| type: bool |
| getter: <testLibrary>::@getter::b |
| setter: <testLibrary>::@setter::b |
| getters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@getter::a |
| firstFragment: #F2 |
| returnType: double |
| variable: <testLibrary>::@topLevelVariable::a |
| isOriginVariable isStatic b |
| reference: <testLibrary>::@getter::b |
| firstFragment: #F5 |
| returnType: bool |
| variable: <testLibrary>::@topLevelVariable::b |
| setters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@setter::a |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F7 |
| type: double |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::a |
| isOriginVariable isStatic b |
| reference: <testLibrary>::@setter::b |
| firstFragment: #F6 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F8 |
| type: bool |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::b |
| '''); |
| } |
| |
| @failingTest |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic vObject (nameOffset:4) (firstTokenOffset:4) (offset:4) |
| element: <testLibrary>::@topLevelVariable::vObject |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| #F4 hasImplicitType hasInitializer isOriginDeclaration isStatic vNum (nameOffset:37) (firstTokenOffset:37) (offset:37) |
| element: <testLibrary>::@topLevelVariable::vNum |
| inducedGetter: #F5 |
| inducedSetter: #F6 |
| #F7 hasImplicitType hasInitializer isOriginDeclaration isStatic vNumEmpty (nameOffset:64) (firstTokenOffset:64) (offset:64) |
| element: <testLibrary>::@topLevelVariable::vNumEmpty |
| inducedGetter: #F8 |
| inducedSetter: #F9 |
| #F10 hasImplicitType hasInitializer isOriginDeclaration isStatic vInt (nameOffset:89) (firstTokenOffset:89) (offset:89) |
| element: <testLibrary>::@topLevelVariable::vInt |
| inducedGetter: #F11 |
| inducedSetter: #F12 |
| getters |
| #F2 isComplete isOriginVariable isStatic vObject (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@getter::vObject |
| inducingVariable: #F1 |
| #F5 isComplete isOriginVariable isStatic vNum (nameOffset:<null>) (firstTokenOffset:<null>) (offset:37) |
| element: <testLibrary>::@getter::vNum |
| inducingVariable: #F4 |
| #F8 isComplete isOriginVariable isStatic vNumEmpty (nameOffset:<null>) (firstTokenOffset:<null>) (offset:64) |
| element: <testLibrary>::@getter::vNumEmpty |
| inducingVariable: #F7 |
| #F11 isComplete isOriginVariable isStatic vInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:89) |
| element: <testLibrary>::@getter::vInt |
| inducingVariable: #F10 |
| setters |
| #F3 isComplete isOriginVariable isStatic vObject (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::vObject |
| inducingVariable: #F1 |
| formalParameters |
| #F13 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::vObject::@formalParameter::value |
| #F6 isComplete isOriginVariable isStatic vNum (nameOffset:<null>) (firstTokenOffset:<null>) (offset:37) |
| element: <testLibrary>::@setter::vNum |
| inducingVariable: #F4 |
| formalParameters |
| #F14 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:37) |
| element: <testLibrary>::@setter::vNum::@formalParameter::value |
| #F9 isComplete isOriginVariable isStatic vNumEmpty (nameOffset:<null>) (firstTokenOffset:<null>) (offset:64) |
| element: <testLibrary>::@setter::vNumEmpty |
| inducingVariable: #F7 |
| formalParameters |
| #F15 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:64) |
| element: <testLibrary>::@setter::vNumEmpty::@formalParameter::value |
| #F12 isComplete isOriginVariable isStatic vInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:89) |
| element: <testLibrary>::@setter::vInt |
| inducingVariable: #F10 |
| formalParameters |
| #F16 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:89) |
| element: <testLibrary>::@setter::vInt::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vObject |
| reference: <testLibrary>::@topLevelVariable::vObject |
| firstFragment: #F1 |
| type: List<Object> |
| getter: <testLibrary>::@getter::vObject |
| setter: <testLibrary>::@setter::vObject |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vNum |
| reference: <testLibrary>::@topLevelVariable::vNum |
| firstFragment: #F4 |
| type: List<num> |
| getter: <testLibrary>::@getter::vNum |
| setter: <testLibrary>::@setter::vNum |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vNumEmpty |
| reference: <testLibrary>::@topLevelVariable::vNumEmpty |
| firstFragment: #F7 |
| type: List<num> |
| getter: <testLibrary>::@getter::vNumEmpty |
| setter: <testLibrary>::@setter::vNumEmpty |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vInt |
| reference: <testLibrary>::@topLevelVariable::vInt |
| firstFragment: #F10 |
| type: List<int> |
| getter: <testLibrary>::@getter::vInt |
| setter: <testLibrary>::@setter::vInt |
| getters |
| isOriginVariable isStatic vObject |
| reference: <testLibrary>::@getter::vObject |
| firstFragment: #F2 |
| returnType: List<Object> |
| variable: <testLibrary>::@topLevelVariable::vObject |
| isOriginVariable isStatic vNum |
| reference: <testLibrary>::@getter::vNum |
| firstFragment: #F5 |
| returnType: List<num> |
| variable: <testLibrary>::@topLevelVariable::vNum |
| isOriginVariable isStatic vNumEmpty |
| reference: <testLibrary>::@getter::vNumEmpty |
| firstFragment: #F8 |
| returnType: List<num> |
| variable: <testLibrary>::@topLevelVariable::vNumEmpty |
| isOriginVariable isStatic vInt |
| reference: <testLibrary>::@getter::vInt |
| firstFragment: #F11 |
| returnType: List<int> |
| variable: <testLibrary>::@topLevelVariable::vInt |
| setters |
| isOriginVariable isStatic vObject |
| reference: <testLibrary>::@setter::vObject |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F13 |
| type: List<Object> |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vObject |
| isOriginVariable isStatic vNum |
| reference: <testLibrary>::@setter::vNum |
| firstFragment: #F6 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F14 |
| type: List<num> |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vNum |
| isOriginVariable isStatic vNumEmpty |
| reference: <testLibrary>::@setter::vNumEmpty |
| firstFragment: #F9 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F15 |
| type: List<num> |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vNumEmpty |
| isOriginVariable isStatic vInt |
| reference: <testLibrary>::@setter::vInt |
| firstFragment: #F12 |
| formalParameters |
| #E3 requiredPositional value |
| firstFragment: #F16 |
| type: List<int> |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vInt |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic vInt (nameOffset:4) (firstTokenOffset:4) (offset:4) |
| element: <testLibrary>::@topLevelVariable::vInt |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| #F4 hasImplicitType hasInitializer isOriginDeclaration isStatic vNum (nameOffset:26) (firstTokenOffset:26) (offset:26) |
| element: <testLibrary>::@topLevelVariable::vNum |
| inducedGetter: #F5 |
| inducedSetter: #F6 |
| #F7 hasImplicitType hasInitializer isOriginDeclaration isStatic vObject (nameOffset:47) (firstTokenOffset:47) (offset:47) |
| element: <testLibrary>::@topLevelVariable::vObject |
| inducedGetter: #F8 |
| inducedSetter: #F9 |
| getters |
| #F2 isComplete isOriginVariable isStatic vInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@getter::vInt |
| inducingVariable: #F1 |
| #F5 isComplete isOriginVariable isStatic vNum (nameOffset:<null>) (firstTokenOffset:<null>) (offset:26) |
| element: <testLibrary>::@getter::vNum |
| inducingVariable: #F4 |
| #F8 isComplete isOriginVariable isStatic vObject (nameOffset:<null>) (firstTokenOffset:<null>) (offset:47) |
| element: <testLibrary>::@getter::vObject |
| inducingVariable: #F7 |
| setters |
| #F3 isComplete isOriginVariable isStatic vInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::vInt |
| inducingVariable: #F1 |
| formalParameters |
| #F10 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::vInt::@formalParameter::value |
| #F6 isComplete isOriginVariable isStatic vNum (nameOffset:<null>) (firstTokenOffset:<null>) (offset:26) |
| element: <testLibrary>::@setter::vNum |
| inducingVariable: #F4 |
| formalParameters |
| #F11 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:26) |
| element: <testLibrary>::@setter::vNum::@formalParameter::value |
| #F9 isComplete isOriginVariable isStatic vObject (nameOffset:<null>) (firstTokenOffset:<null>) (offset:47) |
| element: <testLibrary>::@setter::vObject |
| inducingVariable: #F7 |
| formalParameters |
| #F12 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:47) |
| element: <testLibrary>::@setter::vObject::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vInt |
| reference: <testLibrary>::@topLevelVariable::vInt |
| firstFragment: #F1 |
| type: List<int> |
| getter: <testLibrary>::@getter::vInt |
| setter: <testLibrary>::@setter::vInt |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vNum |
| reference: <testLibrary>::@topLevelVariable::vNum |
| firstFragment: #F4 |
| type: List<num> |
| getter: <testLibrary>::@getter::vNum |
| setter: <testLibrary>::@setter::vNum |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vObject |
| reference: <testLibrary>::@topLevelVariable::vObject |
| firstFragment: #F7 |
| type: List<Object> |
| getter: <testLibrary>::@getter::vObject |
| setter: <testLibrary>::@setter::vObject |
| getters |
| isOriginVariable isStatic vInt |
| reference: <testLibrary>::@getter::vInt |
| firstFragment: #F2 |
| returnType: List<int> |
| variable: <testLibrary>::@topLevelVariable::vInt |
| isOriginVariable isStatic vNum |
| reference: <testLibrary>::@getter::vNum |
| firstFragment: #F5 |
| returnType: List<num> |
| variable: <testLibrary>::@topLevelVariable::vNum |
| isOriginVariable isStatic vObject |
| reference: <testLibrary>::@getter::vObject |
| firstFragment: #F8 |
| returnType: List<Object> |
| variable: <testLibrary>::@topLevelVariable::vObject |
| setters |
| isOriginVariable isStatic vInt |
| reference: <testLibrary>::@setter::vInt |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F10 |
| type: List<int> |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vInt |
| isOriginVariable isStatic vNum |
| reference: <testLibrary>::@setter::vNum |
| firstFragment: #F6 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F11 |
| type: List<num> |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vNum |
| isOriginVariable isStatic vObject |
| reference: <testLibrary>::@setter::vObject |
| firstFragment: #F9 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F12 |
| type: List<Object> |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vObject |
| '''); |
| } |
| |
| @failingTest |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic vObjectObject (nameOffset:4) (firstTokenOffset:4) (offset:4) |
| element: <testLibrary>::@topLevelVariable::vObjectObject |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| #F4 hasImplicitType hasInitializer isOriginDeclaration isStatic vComparableObject (nameOffset:50) (firstTokenOffset:50) (offset:50) |
| element: <testLibrary>::@topLevelVariable::vComparableObject |
| inducedGetter: #F5 |
| inducedSetter: #F6 |
| #F7 hasImplicitType hasInitializer isOriginDeclaration isStatic vNumString (nameOffset:109) (firstTokenOffset:109) (offset:109) |
| element: <testLibrary>::@topLevelVariable::vNumString |
| inducedGetter: #F8 |
| inducedSetter: #F9 |
| #F10 hasImplicitType hasInitializer isOriginDeclaration isStatic vNumStringEmpty (nameOffset:149) (firstTokenOffset:149) (offset:149) |
| element: <testLibrary>::@topLevelVariable::vNumStringEmpty |
| inducedGetter: #F11 |
| inducedSetter: #F12 |
| #F13 hasImplicitType hasInitializer isOriginDeclaration isStatic vIntString (nameOffset:188) (firstTokenOffset:188) (offset:188) |
| element: <testLibrary>::@topLevelVariable::vIntString |
| inducedGetter: #F14 |
| inducedSetter: #F15 |
| getters |
| #F2 isComplete isOriginVariable isStatic vObjectObject (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@getter::vObjectObject |
| inducingVariable: #F1 |
| #F5 isComplete isOriginVariable isStatic vComparableObject (nameOffset:<null>) (firstTokenOffset:<null>) (offset:50) |
| element: <testLibrary>::@getter::vComparableObject |
| inducingVariable: #F4 |
| #F8 isComplete isOriginVariable isStatic vNumString (nameOffset:<null>) (firstTokenOffset:<null>) (offset:109) |
| element: <testLibrary>::@getter::vNumString |
| inducingVariable: #F7 |
| #F11 isComplete isOriginVariable isStatic vNumStringEmpty (nameOffset:<null>) (firstTokenOffset:<null>) (offset:149) |
| element: <testLibrary>::@getter::vNumStringEmpty |
| inducingVariable: #F10 |
| #F14 isComplete isOriginVariable isStatic vIntString (nameOffset:<null>) (firstTokenOffset:<null>) (offset:188) |
| element: <testLibrary>::@getter::vIntString |
| inducingVariable: #F13 |
| setters |
| #F3 isComplete isOriginVariable isStatic vObjectObject (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::vObjectObject |
| inducingVariable: #F1 |
| formalParameters |
| #F16 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::vObjectObject::@formalParameter::value |
| #F6 isComplete isOriginVariable isStatic vComparableObject (nameOffset:<null>) (firstTokenOffset:<null>) (offset:50) |
| element: <testLibrary>::@setter::vComparableObject |
| inducingVariable: #F4 |
| formalParameters |
| #F17 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:50) |
| element: <testLibrary>::@setter::vComparableObject::@formalParameter::value |
| #F9 isComplete isOriginVariable isStatic vNumString (nameOffset:<null>) (firstTokenOffset:<null>) (offset:109) |
| element: <testLibrary>::@setter::vNumString |
| inducingVariable: #F7 |
| formalParameters |
| #F18 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:109) |
| element: <testLibrary>::@setter::vNumString::@formalParameter::value |
| #F12 isComplete isOriginVariable isStatic vNumStringEmpty (nameOffset:<null>) (firstTokenOffset:<null>) (offset:149) |
| element: <testLibrary>::@setter::vNumStringEmpty |
| inducingVariable: #F10 |
| formalParameters |
| #F19 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:149) |
| element: <testLibrary>::@setter::vNumStringEmpty::@formalParameter::value |
| #F15 isComplete isOriginVariable isStatic vIntString (nameOffset:<null>) (firstTokenOffset:<null>) (offset:188) |
| element: <testLibrary>::@setter::vIntString |
| inducingVariable: #F13 |
| formalParameters |
| #F20 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:188) |
| element: <testLibrary>::@setter::vIntString::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vObjectObject |
| reference: <testLibrary>::@topLevelVariable::vObjectObject |
| firstFragment: #F1 |
| type: Map<Object, Object> |
| getter: <testLibrary>::@getter::vObjectObject |
| setter: <testLibrary>::@setter::vObjectObject |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vComparableObject |
| reference: <testLibrary>::@topLevelVariable::vComparableObject |
| firstFragment: #F4 |
| type: Map<Comparable<int>, Object> |
| getter: <testLibrary>::@getter::vComparableObject |
| setter: <testLibrary>::@setter::vComparableObject |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vNumString |
| reference: <testLibrary>::@topLevelVariable::vNumString |
| firstFragment: #F7 |
| type: Map<num, String> |
| getter: <testLibrary>::@getter::vNumString |
| setter: <testLibrary>::@setter::vNumString |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vNumStringEmpty |
| reference: <testLibrary>::@topLevelVariable::vNumStringEmpty |
| firstFragment: #F10 |
| type: Map<num, String> |
| getter: <testLibrary>::@getter::vNumStringEmpty |
| setter: <testLibrary>::@setter::vNumStringEmpty |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vIntString |
| reference: <testLibrary>::@topLevelVariable::vIntString |
| firstFragment: #F13 |
| type: Map<int, String> |
| getter: <testLibrary>::@getter::vIntString |
| setter: <testLibrary>::@setter::vIntString |
| getters |
| isOriginVariable isStatic vObjectObject |
| reference: <testLibrary>::@getter::vObjectObject |
| firstFragment: #F2 |
| returnType: Map<Object, Object> |
| variable: <testLibrary>::@topLevelVariable::vObjectObject |
| isOriginVariable isStatic vComparableObject |
| reference: <testLibrary>::@getter::vComparableObject |
| firstFragment: #F5 |
| returnType: Map<Comparable<int>, Object> |
| variable: <testLibrary>::@topLevelVariable::vComparableObject |
| isOriginVariable isStatic vNumString |
| reference: <testLibrary>::@getter::vNumString |
| firstFragment: #F8 |
| returnType: Map<num, String> |
| variable: <testLibrary>::@topLevelVariable::vNumString |
| isOriginVariable isStatic vNumStringEmpty |
| reference: <testLibrary>::@getter::vNumStringEmpty |
| firstFragment: #F11 |
| returnType: Map<num, String> |
| variable: <testLibrary>::@topLevelVariable::vNumStringEmpty |
| isOriginVariable isStatic vIntString |
| reference: <testLibrary>::@getter::vIntString |
| firstFragment: #F14 |
| returnType: Map<int, String> |
| variable: <testLibrary>::@topLevelVariable::vIntString |
| setters |
| isOriginVariable isStatic vObjectObject |
| reference: <testLibrary>::@setter::vObjectObject |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F16 |
| type: Map<Object, Object> |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vObjectObject |
| isOriginVariable isStatic vComparableObject |
| reference: <testLibrary>::@setter::vComparableObject |
| firstFragment: #F6 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F17 |
| type: Map<Comparable<int>, Object> |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vComparableObject |
| isOriginVariable isStatic vNumString |
| reference: <testLibrary>::@setter::vNumString |
| firstFragment: #F9 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F18 |
| type: Map<num, String> |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vNumString |
| isOriginVariable isStatic vNumStringEmpty |
| reference: <testLibrary>::@setter::vNumStringEmpty |
| firstFragment: #F12 |
| formalParameters |
| #E3 requiredPositional value |
| firstFragment: #F19 |
| type: Map<num, String> |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vNumStringEmpty |
| isOriginVariable isStatic vIntString |
| reference: <testLibrary>::@setter::vIntString |
| firstFragment: #F15 |
| formalParameters |
| #E4 requiredPositional value |
| firstFragment: #F20 |
| type: Map<int, String> |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vIntString |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic vIntString (nameOffset:4) (firstTokenOffset:4) (offset:4) |
| element: <testLibrary>::@topLevelVariable::vIntString |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| #F4 hasImplicitType hasInitializer isOriginDeclaration isStatic vNumString (nameOffset:39) (firstTokenOffset:39) (offset:39) |
| element: <testLibrary>::@topLevelVariable::vNumString |
| inducedGetter: #F5 |
| inducedSetter: #F6 |
| #F7 hasImplicitType hasInitializer isOriginDeclaration isStatic vIntObject (nameOffset:76) (firstTokenOffset:76) (offset:76) |
| element: <testLibrary>::@topLevelVariable::vIntObject |
| inducedGetter: #F8 |
| inducedSetter: #F9 |
| getters |
| #F2 isComplete isOriginVariable isStatic vIntString (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@getter::vIntString |
| inducingVariable: #F1 |
| #F5 isComplete isOriginVariable isStatic vNumString (nameOffset:<null>) (firstTokenOffset:<null>) (offset:39) |
| element: <testLibrary>::@getter::vNumString |
| inducingVariable: #F4 |
| #F8 isComplete isOriginVariable isStatic vIntObject (nameOffset:<null>) (firstTokenOffset:<null>) (offset:76) |
| element: <testLibrary>::@getter::vIntObject |
| inducingVariable: #F7 |
| setters |
| #F3 isComplete isOriginVariable isStatic vIntString (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::vIntString |
| inducingVariable: #F1 |
| formalParameters |
| #F10 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::vIntString::@formalParameter::value |
| #F6 isComplete isOriginVariable isStatic vNumString (nameOffset:<null>) (firstTokenOffset:<null>) (offset:39) |
| element: <testLibrary>::@setter::vNumString |
| inducingVariable: #F4 |
| formalParameters |
| #F11 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:39) |
| element: <testLibrary>::@setter::vNumString::@formalParameter::value |
| #F9 isComplete isOriginVariable isStatic vIntObject (nameOffset:<null>) (firstTokenOffset:<null>) (offset:76) |
| element: <testLibrary>::@setter::vIntObject |
| inducingVariable: #F7 |
| formalParameters |
| #F12 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:76) |
| element: <testLibrary>::@setter::vIntObject::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vIntString |
| reference: <testLibrary>::@topLevelVariable::vIntString |
| firstFragment: #F1 |
| type: Map<int, String> |
| getter: <testLibrary>::@getter::vIntString |
| setter: <testLibrary>::@setter::vIntString |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vNumString |
| reference: <testLibrary>::@topLevelVariable::vNumString |
| firstFragment: #F4 |
| type: Map<num, String> |
| getter: <testLibrary>::@getter::vNumString |
| setter: <testLibrary>::@setter::vNumString |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vIntObject |
| reference: <testLibrary>::@topLevelVariable::vIntObject |
| firstFragment: #F7 |
| type: Map<int, Object> |
| getter: <testLibrary>::@getter::vIntObject |
| setter: <testLibrary>::@setter::vIntObject |
| getters |
| isOriginVariable isStatic vIntString |
| reference: <testLibrary>::@getter::vIntString |
| firstFragment: #F2 |
| returnType: Map<int, String> |
| variable: <testLibrary>::@topLevelVariable::vIntString |
| isOriginVariable isStatic vNumString |
| reference: <testLibrary>::@getter::vNumString |
| firstFragment: #F5 |
| returnType: Map<num, String> |
| variable: <testLibrary>::@topLevelVariable::vNumString |
| isOriginVariable isStatic vIntObject |
| reference: <testLibrary>::@getter::vIntObject |
| firstFragment: #F8 |
| returnType: Map<int, Object> |
| variable: <testLibrary>::@topLevelVariable::vIntObject |
| setters |
| isOriginVariable isStatic vIntString |
| reference: <testLibrary>::@setter::vIntString |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F10 |
| type: Map<int, String> |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vIntString |
| isOriginVariable isStatic vNumString |
| reference: <testLibrary>::@setter::vNumString |
| firstFragment: #F6 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F11 |
| type: Map<num, String> |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vNumString |
| isOriginVariable isStatic vIntObject |
| reference: <testLibrary>::@setter::vIntObject |
| firstFragment: #F9 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F12 |
| type: Map<int, Object> |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vIntObject |
| '''); |
| } |
| |
| @failingTest |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic a (nameOffset:4) (firstTokenOffset:4) (offset:4) |
| element: <testLibrary>::@topLevelVariable::a |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| #F4 hasImplicitType hasInitializer isOriginDeclaration isStatic b (nameOffset:18) (firstTokenOffset:18) (offset:18) |
| element: <testLibrary>::@topLevelVariable::b |
| inducedGetter: #F5 |
| inducedSetter: #F6 |
| #F7 hasImplicitType hasInitializer isOriginDeclaration isStatic vEq (nameOffset:32) (firstTokenOffset:32) (offset:32) |
| element: <testLibrary>::@topLevelVariable::vEq |
| inducedGetter: #F8 |
| inducedSetter: #F9 |
| #F10 hasImplicitType hasInitializer isOriginDeclaration isStatic vAnd (nameOffset:50) (firstTokenOffset:50) (offset:50) |
| element: <testLibrary>::@topLevelVariable::vAnd |
| inducedGetter: #F11 |
| inducedSetter: #F12 |
| #F13 hasImplicitType hasInitializer isOriginDeclaration isStatic vOr (nameOffset:69) (firstTokenOffset:69) (offset:69) |
| element: <testLibrary>::@topLevelVariable::vOr |
| inducedGetter: #F14 |
| inducedSetter: #F15 |
| getters |
| #F2 isComplete isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@getter::a |
| inducingVariable: #F1 |
| #F5 isComplete isOriginVariable isStatic b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:18) |
| element: <testLibrary>::@getter::b |
| inducingVariable: #F4 |
| #F8 isComplete isOriginVariable isStatic vEq (nameOffset:<null>) (firstTokenOffset:<null>) (offset:32) |
| element: <testLibrary>::@getter::vEq |
| inducingVariable: #F7 |
| #F11 isComplete isOriginVariable isStatic vAnd (nameOffset:<null>) (firstTokenOffset:<null>) (offset:50) |
| element: <testLibrary>::@getter::vAnd |
| inducingVariable: #F10 |
| #F14 isComplete isOriginVariable isStatic vOr (nameOffset:<null>) (firstTokenOffset:<null>) (offset:69) |
| element: <testLibrary>::@getter::vOr |
| inducingVariable: #F13 |
| setters |
| #F3 isComplete isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::a |
| inducingVariable: #F1 |
| formalParameters |
| #F16 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::a::@formalParameter::value |
| #F6 isComplete isOriginVariable isStatic b (nameOffset:<null>) (firstTokenOffset:<null>) (offset:18) |
| element: <testLibrary>::@setter::b |
| inducingVariable: #F4 |
| formalParameters |
| #F17 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:18) |
| element: <testLibrary>::@setter::b::@formalParameter::value |
| #F9 isComplete isOriginVariable isStatic vEq (nameOffset:<null>) (firstTokenOffset:<null>) (offset:32) |
| element: <testLibrary>::@setter::vEq |
| inducingVariable: #F7 |
| formalParameters |
| #F18 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:32) |
| element: <testLibrary>::@setter::vEq::@formalParameter::value |
| #F12 isComplete isOriginVariable isStatic vAnd (nameOffset:<null>) (firstTokenOffset:<null>) (offset:50) |
| element: <testLibrary>::@setter::vAnd |
| inducingVariable: #F10 |
| formalParameters |
| #F19 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:50) |
| element: <testLibrary>::@setter::vAnd::@formalParameter::value |
| #F15 isComplete isOriginVariable isStatic vOr (nameOffset:<null>) (firstTokenOffset:<null>) (offset:69) |
| element: <testLibrary>::@setter::vOr |
| inducingVariable: #F13 |
| formalParameters |
| #F20 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:69) |
| element: <testLibrary>::@setter::vOr::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer a |
| reference: <testLibrary>::@topLevelVariable::a |
| firstFragment: #F1 |
| type: bool |
| getter: <testLibrary>::@getter::a |
| setter: <testLibrary>::@setter::a |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer b |
| reference: <testLibrary>::@topLevelVariable::b |
| firstFragment: #F4 |
| type: bool |
| getter: <testLibrary>::@getter::b |
| setter: <testLibrary>::@setter::b |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vEq |
| reference: <testLibrary>::@topLevelVariable::vEq |
| firstFragment: #F7 |
| type: bool |
| getter: <testLibrary>::@getter::vEq |
| setter: <testLibrary>::@setter::vEq |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vAnd |
| reference: <testLibrary>::@topLevelVariable::vAnd |
| firstFragment: #F10 |
| type: bool |
| getter: <testLibrary>::@getter::vAnd |
| setter: <testLibrary>::@setter::vAnd |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vOr |
| reference: <testLibrary>::@topLevelVariable::vOr |
| firstFragment: #F13 |
| type: bool |
| getter: <testLibrary>::@getter::vOr |
| setter: <testLibrary>::@setter::vOr |
| getters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@getter::a |
| firstFragment: #F2 |
| returnType: bool |
| variable: <testLibrary>::@topLevelVariable::a |
| isOriginVariable isStatic b |
| reference: <testLibrary>::@getter::b |
| firstFragment: #F5 |
| returnType: bool |
| variable: <testLibrary>::@topLevelVariable::b |
| isOriginVariable isStatic vEq |
| reference: <testLibrary>::@getter::vEq |
| firstFragment: #F8 |
| returnType: bool |
| variable: <testLibrary>::@topLevelVariable::vEq |
| isOriginVariable isStatic vAnd |
| reference: <testLibrary>::@getter::vAnd |
| firstFragment: #F11 |
| returnType: bool |
| variable: <testLibrary>::@topLevelVariable::vAnd |
| isOriginVariable isStatic vOr |
| reference: <testLibrary>::@getter::vOr |
| firstFragment: #F14 |
| returnType: bool |
| variable: <testLibrary>::@topLevelVariable::vOr |
| setters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@setter::a |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F16 |
| type: bool |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::a |
| isOriginVariable isStatic b |
| reference: <testLibrary>::@setter::b |
| firstFragment: #F6 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F17 |
| type: bool |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::b |
| isOriginVariable isStatic vEq |
| reference: <testLibrary>::@setter::vEq |
| firstFragment: #F9 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F18 |
| type: bool |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vEq |
| isOriginVariable isStatic vAnd |
| reference: <testLibrary>::@setter::vAnd |
| firstFragment: #F12 |
| formalParameters |
| #E3 requiredPositional value |
| firstFragment: #F19 |
| type: bool |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vAnd |
| isOriginVariable isStatic vOr |
| reference: <testLibrary>::@setter::vOr |
| firstFragment: #F15 |
| formalParameters |
| #E4 requiredPositional value |
| firstFragment: #F20 |
| type: bool |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vOr |
| '''); |
| } |
| |
| @failingTest |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| constructors |
| #F2 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| methods |
| #F3 isComplete isOriginDeclaration m (nameOffset:19) (firstTokenOffset:12) (offset:19) |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| #F4 requiredPositional isOriginDeclaration p (nameOffset:25) (firstTokenOffset:21) (offset:25) |
| element: <testLibrary>::@class::A::@method::m::@formalParameter::p |
| topLevelVariables |
| #F5 hasImplicitType hasInitializer isOriginDeclaration isStatic instanceOfA (nameOffset:43) (firstTokenOffset:43) (offset:43) |
| element: <testLibrary>::@topLevelVariable::instanceOfA |
| inducedGetter: #F6 |
| inducedSetter: #F7 |
| #F8 hasImplicitType hasInitializer isOriginDeclaration isStatic v1 (nameOffset:70) (firstTokenOffset:70) (offset:70) |
| element: <testLibrary>::@topLevelVariable::v1 |
| inducedGetter: #F9 |
| inducedSetter: #F10 |
| #F11 hasImplicitType hasInitializer isOriginDeclaration isStatic v2 (nameOffset:96) (firstTokenOffset:96) (offset:96) |
| element: <testLibrary>::@topLevelVariable::v2 |
| inducedGetter: #F12 |
| inducedSetter: #F13 |
| getters |
| #F6 isComplete isOriginVariable isStatic instanceOfA (nameOffset:<null>) (firstTokenOffset:<null>) (offset:43) |
| element: <testLibrary>::@getter::instanceOfA |
| inducingVariable: #F5 |
| #F9 isComplete isOriginVariable isStatic v1 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:70) |
| element: <testLibrary>::@getter::v1 |
| inducingVariable: #F8 |
| #F12 isComplete isOriginVariable isStatic v2 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:96) |
| element: <testLibrary>::@getter::v2 |
| inducingVariable: #F11 |
| setters |
| #F7 isComplete isOriginVariable isStatic instanceOfA (nameOffset:<null>) (firstTokenOffset:<null>) (offset:43) |
| element: <testLibrary>::@setter::instanceOfA |
| inducingVariable: #F5 |
| formalParameters |
| #F14 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:43) |
| element: <testLibrary>::@setter::instanceOfA::@formalParameter::value |
| #F10 isComplete isOriginVariable isStatic v1 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:70) |
| element: <testLibrary>::@setter::v1 |
| inducingVariable: #F8 |
| formalParameters |
| #F15 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:70) |
| element: <testLibrary>::@setter::v1::@formalParameter::value |
| #F13 isComplete isOriginVariable isStatic v2 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:96) |
| element: <testLibrary>::@setter::v2 |
| inducingVariable: #F11 |
| formalParameters |
| #F16 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:96) |
| element: <testLibrary>::@setter::v2::@formalParameter::value |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F2 |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional p |
| firstFragment: #F4 |
| type: int |
| returnType: String |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer instanceOfA |
| reference: <testLibrary>::@topLevelVariable::instanceOfA |
| firstFragment: #F5 |
| type: A |
| getter: <testLibrary>::@getter::instanceOfA |
| setter: <testLibrary>::@setter::instanceOfA |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer v1 |
| reference: <testLibrary>::@topLevelVariable::v1 |
| firstFragment: #F8 |
| type: String |
| getter: <testLibrary>::@getter::v1 |
| setter: <testLibrary>::@setter::v1 |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer v2 |
| reference: <testLibrary>::@topLevelVariable::v2 |
| firstFragment: #F11 |
| type: String |
| getter: <testLibrary>::@getter::v2 |
| setter: <testLibrary>::@setter::v2 |
| getters |
| isOriginVariable isStatic instanceOfA |
| reference: <testLibrary>::@getter::instanceOfA |
| firstFragment: #F6 |
| returnType: A |
| variable: <testLibrary>::@topLevelVariable::instanceOfA |
| isOriginVariable isStatic v1 |
| reference: <testLibrary>::@getter::v1 |
| firstFragment: #F9 |
| returnType: String |
| variable: <testLibrary>::@topLevelVariable::v1 |
| isOriginVariable isStatic v2 |
| reference: <testLibrary>::@getter::v2 |
| firstFragment: #F12 |
| returnType: String |
| variable: <testLibrary>::@topLevelVariable::v2 |
| setters |
| isOriginVariable isStatic instanceOfA |
| reference: <testLibrary>::@setter::instanceOfA |
| firstFragment: #F7 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F14 |
| type: A |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::instanceOfA |
| isOriginVariable isStatic v1 |
| reference: <testLibrary>::@setter::v1 |
| firstFragment: #F10 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F15 |
| type: String |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::v1 |
| isOriginVariable isStatic v2 |
| reference: <testLibrary>::@setter::v2 |
| firstFragment: #F13 |
| formalParameters |
| #E3 requiredPositional value |
| firstFragment: #F16 |
| type: String |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::v2 |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic vModuloIntInt (nameOffset:4) (firstTokenOffset:4) (offset:4) |
| element: <testLibrary>::@topLevelVariable::vModuloIntInt |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| #F4 hasImplicitType hasInitializer isOriginDeclaration isStatic vModuloIntDouble (nameOffset:31) (firstTokenOffset:31) (offset:31) |
| element: <testLibrary>::@topLevelVariable::vModuloIntDouble |
| inducedGetter: #F5 |
| inducedSetter: #F6 |
| #F7 hasImplicitType hasInitializer isOriginDeclaration isStatic vMultiplyIntInt (nameOffset:63) (firstTokenOffset:63) (offset:63) |
| element: <testLibrary>::@topLevelVariable::vMultiplyIntInt |
| inducedGetter: #F8 |
| inducedSetter: #F9 |
| #F10 hasImplicitType hasInitializer isOriginDeclaration isStatic vMultiplyIntDouble (nameOffset:92) (firstTokenOffset:92) (offset:92) |
| element: <testLibrary>::@topLevelVariable::vMultiplyIntDouble |
| inducedGetter: #F11 |
| inducedSetter: #F12 |
| #F13 hasImplicitType hasInitializer isOriginDeclaration isStatic vMultiplyDoubleInt (nameOffset:126) (firstTokenOffset:126) (offset:126) |
| element: <testLibrary>::@topLevelVariable::vMultiplyDoubleInt |
| inducedGetter: #F14 |
| inducedSetter: #F15 |
| #F16 hasImplicitType hasInitializer isOriginDeclaration isStatic vMultiplyDoubleDouble (nameOffset:160) (firstTokenOffset:160) (offset:160) |
| element: <testLibrary>::@topLevelVariable::vMultiplyDoubleDouble |
| inducedGetter: #F17 |
| inducedSetter: #F18 |
| #F19 hasImplicitType hasInitializer isOriginDeclaration isStatic vDivideIntInt (nameOffset:199) (firstTokenOffset:199) (offset:199) |
| element: <testLibrary>::@topLevelVariable::vDivideIntInt |
| inducedGetter: #F20 |
| inducedSetter: #F21 |
| #F22 hasImplicitType hasInitializer isOriginDeclaration isStatic vDivideIntDouble (nameOffset:226) (firstTokenOffset:226) (offset:226) |
| element: <testLibrary>::@topLevelVariable::vDivideIntDouble |
| inducedGetter: #F23 |
| inducedSetter: #F24 |
| #F25 hasImplicitType hasInitializer isOriginDeclaration isStatic vDivideDoubleInt (nameOffset:258) (firstTokenOffset:258) (offset:258) |
| element: <testLibrary>::@topLevelVariable::vDivideDoubleInt |
| inducedGetter: #F26 |
| inducedSetter: #F27 |
| #F28 hasImplicitType hasInitializer isOriginDeclaration isStatic vDivideDoubleDouble (nameOffset:290) (firstTokenOffset:290) (offset:290) |
| element: <testLibrary>::@topLevelVariable::vDivideDoubleDouble |
| inducedGetter: #F29 |
| inducedSetter: #F30 |
| #F31 hasImplicitType hasInitializer isOriginDeclaration isStatic vFloorDivide (nameOffset:327) (firstTokenOffset:327) (offset:327) |
| element: <testLibrary>::@topLevelVariable::vFloorDivide |
| inducedGetter: #F32 |
| inducedSetter: #F33 |
| getters |
| #F2 isComplete isOriginVariable isStatic vModuloIntInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@getter::vModuloIntInt |
| inducingVariable: #F1 |
| #F5 isComplete isOriginVariable isStatic vModuloIntDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:31) |
| element: <testLibrary>::@getter::vModuloIntDouble |
| inducingVariable: #F4 |
| #F8 isComplete isOriginVariable isStatic vMultiplyIntInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:63) |
| element: <testLibrary>::@getter::vMultiplyIntInt |
| inducingVariable: #F7 |
| #F11 isComplete isOriginVariable isStatic vMultiplyIntDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:92) |
| element: <testLibrary>::@getter::vMultiplyIntDouble |
| inducingVariable: #F10 |
| #F14 isComplete isOriginVariable isStatic vMultiplyDoubleInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:126) |
| element: <testLibrary>::@getter::vMultiplyDoubleInt |
| inducingVariable: #F13 |
| #F17 isComplete isOriginVariable isStatic vMultiplyDoubleDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:160) |
| element: <testLibrary>::@getter::vMultiplyDoubleDouble |
| inducingVariable: #F16 |
| #F20 isComplete isOriginVariable isStatic vDivideIntInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:199) |
| element: <testLibrary>::@getter::vDivideIntInt |
| inducingVariable: #F19 |
| #F23 isComplete isOriginVariable isStatic vDivideIntDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:226) |
| element: <testLibrary>::@getter::vDivideIntDouble |
| inducingVariable: #F22 |
| #F26 isComplete isOriginVariable isStatic vDivideDoubleInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:258) |
| element: <testLibrary>::@getter::vDivideDoubleInt |
| inducingVariable: #F25 |
| #F29 isComplete isOriginVariable isStatic vDivideDoubleDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:290) |
| element: <testLibrary>::@getter::vDivideDoubleDouble |
| inducingVariable: #F28 |
| #F32 isComplete isOriginVariable isStatic vFloorDivide (nameOffset:<null>) (firstTokenOffset:<null>) (offset:327) |
| element: <testLibrary>::@getter::vFloorDivide |
| inducingVariable: #F31 |
| setters |
| #F3 isComplete isOriginVariable isStatic vModuloIntInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::vModuloIntInt |
| inducingVariable: #F1 |
| formalParameters |
| #F34 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::vModuloIntInt::@formalParameter::value |
| #F6 isComplete isOriginVariable isStatic vModuloIntDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:31) |
| element: <testLibrary>::@setter::vModuloIntDouble |
| inducingVariable: #F4 |
| formalParameters |
| #F35 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:31) |
| element: <testLibrary>::@setter::vModuloIntDouble::@formalParameter::value |
| #F9 isComplete isOriginVariable isStatic vMultiplyIntInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:63) |
| element: <testLibrary>::@setter::vMultiplyIntInt |
| inducingVariable: #F7 |
| formalParameters |
| #F36 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:63) |
| element: <testLibrary>::@setter::vMultiplyIntInt::@formalParameter::value |
| #F12 isComplete isOriginVariable isStatic vMultiplyIntDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:92) |
| element: <testLibrary>::@setter::vMultiplyIntDouble |
| inducingVariable: #F10 |
| formalParameters |
| #F37 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:92) |
| element: <testLibrary>::@setter::vMultiplyIntDouble::@formalParameter::value |
| #F15 isComplete isOriginVariable isStatic vMultiplyDoubleInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:126) |
| element: <testLibrary>::@setter::vMultiplyDoubleInt |
| inducingVariable: #F13 |
| formalParameters |
| #F38 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:126) |
| element: <testLibrary>::@setter::vMultiplyDoubleInt::@formalParameter::value |
| #F18 isComplete isOriginVariable isStatic vMultiplyDoubleDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:160) |
| element: <testLibrary>::@setter::vMultiplyDoubleDouble |
| inducingVariable: #F16 |
| formalParameters |
| #F39 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:160) |
| element: <testLibrary>::@setter::vMultiplyDoubleDouble::@formalParameter::value |
| #F21 isComplete isOriginVariable isStatic vDivideIntInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:199) |
| element: <testLibrary>::@setter::vDivideIntInt |
| inducingVariable: #F19 |
| formalParameters |
| #F40 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:199) |
| element: <testLibrary>::@setter::vDivideIntInt::@formalParameter::value |
| #F24 isComplete isOriginVariable isStatic vDivideIntDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:226) |
| element: <testLibrary>::@setter::vDivideIntDouble |
| inducingVariable: #F22 |
| formalParameters |
| #F41 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:226) |
| element: <testLibrary>::@setter::vDivideIntDouble::@formalParameter::value |
| #F27 isComplete isOriginVariable isStatic vDivideDoubleInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:258) |
| element: <testLibrary>::@setter::vDivideDoubleInt |
| inducingVariable: #F25 |
| formalParameters |
| #F42 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:258) |
| element: <testLibrary>::@setter::vDivideDoubleInt::@formalParameter::value |
| #F30 isComplete isOriginVariable isStatic vDivideDoubleDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:290) |
| element: <testLibrary>::@setter::vDivideDoubleDouble |
| inducingVariable: #F28 |
| formalParameters |
| #F43 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:290) |
| element: <testLibrary>::@setter::vDivideDoubleDouble::@formalParameter::value |
| #F33 isComplete isOriginVariable isStatic vFloorDivide (nameOffset:<null>) (firstTokenOffset:<null>) (offset:327) |
| element: <testLibrary>::@setter::vFloorDivide |
| inducingVariable: #F31 |
| formalParameters |
| #F44 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:327) |
| element: <testLibrary>::@setter::vFloorDivide::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vModuloIntInt |
| reference: <testLibrary>::@topLevelVariable::vModuloIntInt |
| firstFragment: #F1 |
| type: int |
| getter: <testLibrary>::@getter::vModuloIntInt |
| setter: <testLibrary>::@setter::vModuloIntInt |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vModuloIntDouble |
| reference: <testLibrary>::@topLevelVariable::vModuloIntDouble |
| firstFragment: #F4 |
| type: double |
| getter: <testLibrary>::@getter::vModuloIntDouble |
| setter: <testLibrary>::@setter::vModuloIntDouble |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vMultiplyIntInt |
| reference: <testLibrary>::@topLevelVariable::vMultiplyIntInt |
| firstFragment: #F7 |
| type: int |
| getter: <testLibrary>::@getter::vMultiplyIntInt |
| setter: <testLibrary>::@setter::vMultiplyIntInt |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vMultiplyIntDouble |
| reference: <testLibrary>::@topLevelVariable::vMultiplyIntDouble |
| firstFragment: #F10 |
| type: double |
| getter: <testLibrary>::@getter::vMultiplyIntDouble |
| setter: <testLibrary>::@setter::vMultiplyIntDouble |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vMultiplyDoubleInt |
| reference: <testLibrary>::@topLevelVariable::vMultiplyDoubleInt |
| firstFragment: #F13 |
| type: double |
| getter: <testLibrary>::@getter::vMultiplyDoubleInt |
| setter: <testLibrary>::@setter::vMultiplyDoubleInt |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vMultiplyDoubleDouble |
| reference: <testLibrary>::@topLevelVariable::vMultiplyDoubleDouble |
| firstFragment: #F16 |
| type: double |
| getter: <testLibrary>::@getter::vMultiplyDoubleDouble |
| setter: <testLibrary>::@setter::vMultiplyDoubleDouble |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vDivideIntInt |
| reference: <testLibrary>::@topLevelVariable::vDivideIntInt |
| firstFragment: #F19 |
| type: double |
| getter: <testLibrary>::@getter::vDivideIntInt |
| setter: <testLibrary>::@setter::vDivideIntInt |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vDivideIntDouble |
| reference: <testLibrary>::@topLevelVariable::vDivideIntDouble |
| firstFragment: #F22 |
| type: double |
| getter: <testLibrary>::@getter::vDivideIntDouble |
| setter: <testLibrary>::@setter::vDivideIntDouble |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vDivideDoubleInt |
| reference: <testLibrary>::@topLevelVariable::vDivideDoubleInt |
| firstFragment: #F25 |
| type: double |
| getter: <testLibrary>::@getter::vDivideDoubleInt |
| setter: <testLibrary>::@setter::vDivideDoubleInt |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vDivideDoubleDouble |
| reference: <testLibrary>::@topLevelVariable::vDivideDoubleDouble |
| firstFragment: #F28 |
| type: double |
| getter: <testLibrary>::@getter::vDivideDoubleDouble |
| setter: <testLibrary>::@setter::vDivideDoubleDouble |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vFloorDivide |
| reference: <testLibrary>::@topLevelVariable::vFloorDivide |
| firstFragment: #F31 |
| type: int |
| getter: <testLibrary>::@getter::vFloorDivide |
| setter: <testLibrary>::@setter::vFloorDivide |
| getters |
| isOriginVariable isStatic vModuloIntInt |
| reference: <testLibrary>::@getter::vModuloIntInt |
| firstFragment: #F2 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::vModuloIntInt |
| isOriginVariable isStatic vModuloIntDouble |
| reference: <testLibrary>::@getter::vModuloIntDouble |
| firstFragment: #F5 |
| returnType: double |
| variable: <testLibrary>::@topLevelVariable::vModuloIntDouble |
| isOriginVariable isStatic vMultiplyIntInt |
| reference: <testLibrary>::@getter::vMultiplyIntInt |
| firstFragment: #F8 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::vMultiplyIntInt |
| isOriginVariable isStatic vMultiplyIntDouble |
| reference: <testLibrary>::@getter::vMultiplyIntDouble |
| firstFragment: #F11 |
| returnType: double |
| variable: <testLibrary>::@topLevelVariable::vMultiplyIntDouble |
| isOriginVariable isStatic vMultiplyDoubleInt |
| reference: <testLibrary>::@getter::vMultiplyDoubleInt |
| firstFragment: #F14 |
| returnType: double |
| variable: <testLibrary>::@topLevelVariable::vMultiplyDoubleInt |
| isOriginVariable isStatic vMultiplyDoubleDouble |
| reference: <testLibrary>::@getter::vMultiplyDoubleDouble |
| firstFragment: #F17 |
| returnType: double |
| variable: <testLibrary>::@topLevelVariable::vMultiplyDoubleDouble |
| isOriginVariable isStatic vDivideIntInt |
| reference: <testLibrary>::@getter::vDivideIntInt |
| firstFragment: #F20 |
| returnType: double |
| variable: <testLibrary>::@topLevelVariable::vDivideIntInt |
| isOriginVariable isStatic vDivideIntDouble |
| reference: <testLibrary>::@getter::vDivideIntDouble |
| firstFragment: #F23 |
| returnType: double |
| variable: <testLibrary>::@topLevelVariable::vDivideIntDouble |
| isOriginVariable isStatic vDivideDoubleInt |
| reference: <testLibrary>::@getter::vDivideDoubleInt |
| firstFragment: #F26 |
| returnType: double |
| variable: <testLibrary>::@topLevelVariable::vDivideDoubleInt |
| isOriginVariable isStatic vDivideDoubleDouble |
| reference: <testLibrary>::@getter::vDivideDoubleDouble |
| firstFragment: #F29 |
| returnType: double |
| variable: <testLibrary>::@topLevelVariable::vDivideDoubleDouble |
| isOriginVariable isStatic vFloorDivide |
| reference: <testLibrary>::@getter::vFloorDivide |
| firstFragment: #F32 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::vFloorDivide |
| setters |
| isOriginVariable isStatic vModuloIntInt |
| reference: <testLibrary>::@setter::vModuloIntInt |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F34 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vModuloIntInt |
| isOriginVariable isStatic vModuloIntDouble |
| reference: <testLibrary>::@setter::vModuloIntDouble |
| firstFragment: #F6 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F35 |
| type: double |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vModuloIntDouble |
| isOriginVariable isStatic vMultiplyIntInt |
| reference: <testLibrary>::@setter::vMultiplyIntInt |
| firstFragment: #F9 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F36 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vMultiplyIntInt |
| isOriginVariable isStatic vMultiplyIntDouble |
| reference: <testLibrary>::@setter::vMultiplyIntDouble |
| firstFragment: #F12 |
| formalParameters |
| #E3 requiredPositional value |
| firstFragment: #F37 |
| type: double |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vMultiplyIntDouble |
| isOriginVariable isStatic vMultiplyDoubleInt |
| reference: <testLibrary>::@setter::vMultiplyDoubleInt |
| firstFragment: #F15 |
| formalParameters |
| #E4 requiredPositional value |
| firstFragment: #F38 |
| type: double |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vMultiplyDoubleInt |
| isOriginVariable isStatic vMultiplyDoubleDouble |
| reference: <testLibrary>::@setter::vMultiplyDoubleDouble |
| firstFragment: #F18 |
| formalParameters |
| #E5 requiredPositional value |
| firstFragment: #F39 |
| type: double |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vMultiplyDoubleDouble |
| isOriginVariable isStatic vDivideIntInt |
| reference: <testLibrary>::@setter::vDivideIntInt |
| firstFragment: #F21 |
| formalParameters |
| #E6 requiredPositional value |
| firstFragment: #F40 |
| type: double |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vDivideIntInt |
| isOriginVariable isStatic vDivideIntDouble |
| reference: <testLibrary>::@setter::vDivideIntDouble |
| firstFragment: #F24 |
| formalParameters |
| #E7 requiredPositional value |
| firstFragment: #F41 |
| type: double |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vDivideIntDouble |
| isOriginVariable isStatic vDivideDoubleInt |
| reference: <testLibrary>::@setter::vDivideDoubleInt |
| firstFragment: #F27 |
| formalParameters |
| #E8 requiredPositional value |
| firstFragment: #F42 |
| type: double |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vDivideDoubleInt |
| isOriginVariable isStatic vDivideDoubleDouble |
| reference: <testLibrary>::@setter::vDivideDoubleDouble |
| firstFragment: #F30 |
| formalParameters |
| #E9 requiredPositional value |
| firstFragment: #F43 |
| type: double |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vDivideDoubleDouble |
| isOriginVariable isStatic vFloorDivide |
| reference: <testLibrary>::@setter::vFloorDivide |
| firstFragment: #F33 |
| formalParameters |
| #E10 requiredPositional value |
| firstFragment: #F44 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vFloorDivide |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic a (nameOffset:4) (firstTokenOffset:4) (offset:4) |
| element: <testLibrary>::@topLevelVariable::a |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| #F4 hasImplicitType hasInitializer isOriginDeclaration isStatic vEq (nameOffset:15) (firstTokenOffset:15) (offset:15) |
| element: <testLibrary>::@topLevelVariable::vEq |
| inducedGetter: #F5 |
| inducedSetter: #F6 |
| #F7 hasImplicitType hasInitializer isOriginDeclaration isStatic vNotEq (nameOffset:46) (firstTokenOffset:46) (offset:46) |
| element: <testLibrary>::@topLevelVariable::vNotEq |
| inducedGetter: #F8 |
| inducedSetter: #F9 |
| getters |
| #F2 isComplete isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@getter::a |
| inducingVariable: #F1 |
| #F5 isComplete isOriginVariable isStatic vEq (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@getter::vEq |
| inducingVariable: #F4 |
| #F8 isComplete isOriginVariable isStatic vNotEq (nameOffset:<null>) (firstTokenOffset:<null>) (offset:46) |
| element: <testLibrary>::@getter::vNotEq |
| inducingVariable: #F7 |
| setters |
| #F3 isComplete isOriginVariable isStatic a (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::a |
| inducingVariable: #F1 |
| formalParameters |
| #F10 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::a::@formalParameter::value |
| #F6 isComplete isOriginVariable isStatic vEq (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@setter::vEq |
| inducingVariable: #F4 |
| formalParameters |
| #F11 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@setter::vEq::@formalParameter::value |
| #F9 isComplete isOriginVariable isStatic vNotEq (nameOffset:<null>) (firstTokenOffset:<null>) (offset:46) |
| element: <testLibrary>::@setter::vNotEq |
| inducingVariable: #F7 |
| formalParameters |
| #F12 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:46) |
| element: <testLibrary>::@setter::vNotEq::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer a |
| reference: <testLibrary>::@topLevelVariable::a |
| firstFragment: #F1 |
| type: int |
| getter: <testLibrary>::@getter::a |
| setter: <testLibrary>::@setter::a |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vEq |
| reference: <testLibrary>::@topLevelVariable::vEq |
| firstFragment: #F4 |
| type: bool |
| getter: <testLibrary>::@getter::vEq |
| setter: <testLibrary>::@setter::vEq |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vNotEq |
| reference: <testLibrary>::@topLevelVariable::vNotEq |
| firstFragment: #F7 |
| type: bool |
| getter: <testLibrary>::@getter::vNotEq |
| setter: <testLibrary>::@setter::vNotEq |
| getters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@getter::a |
| firstFragment: #F2 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::a |
| isOriginVariable isStatic vEq |
| reference: <testLibrary>::@getter::vEq |
| firstFragment: #F5 |
| returnType: bool |
| variable: <testLibrary>::@topLevelVariable::vEq |
| isOriginVariable isStatic vNotEq |
| reference: <testLibrary>::@getter::vNotEq |
| firstFragment: #F8 |
| returnType: bool |
| variable: <testLibrary>::@topLevelVariable::vNotEq |
| setters |
| isOriginVariable isStatic a |
| reference: <testLibrary>::@setter::a |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F10 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::a |
| isOriginVariable isStatic vEq |
| reference: <testLibrary>::@setter::vEq |
| firstFragment: #F6 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F11 |
| type: bool |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vEq |
| isOriginVariable isStatic vNotEq |
| reference: <testLibrary>::@setter::vNotEq |
| firstFragment: #F9 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F12 |
| type: bool |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vNotEq |
| '''); |
| } |
| |
| test_initializer_parenthesized() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var V = (42); |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic V (nameOffset:4) (firstTokenOffset:4) (offset:4) |
| element: <testLibrary>::@topLevelVariable::V |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| getters |
| #F2 isComplete isOriginVariable isStatic V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@getter::V |
| inducingVariable: #F1 |
| setters |
| #F3 isComplete isOriginVariable isStatic V (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::V |
| inducingVariable: #F1 |
| formalParameters |
| #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::V::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer V |
| reference: <testLibrary>::@topLevelVariable::V |
| firstFragment: #F1 |
| type: int |
| getter: <testLibrary>::@getter::V |
| setter: <testLibrary>::@setter::V |
| getters |
| isOriginVariable isStatic V |
| reference: <testLibrary>::@getter::V |
| firstFragment: #F2 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::V |
| setters |
| isOriginVariable isStatic V |
| reference: <testLibrary>::@setter::V |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F4 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::V |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic vInt (nameOffset:4) (firstTokenOffset:4) (offset:4) |
| element: <testLibrary>::@topLevelVariable::vInt |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| #F4 hasImplicitType hasInitializer isOriginDeclaration isStatic vDouble (nameOffset:18) (firstTokenOffset:18) (offset:18) |
| element: <testLibrary>::@topLevelVariable::vDouble |
| inducedGetter: #F5 |
| inducedSetter: #F6 |
| #F7 hasImplicitType hasInitializer isOriginDeclaration isStatic vIncInt (nameOffset:37) (firstTokenOffset:37) (offset:37) |
| element: <testLibrary>::@topLevelVariable::vIncInt |
| inducedGetter: #F8 |
| inducedSetter: #F9 |
| #F10 hasImplicitType hasInitializer isOriginDeclaration isStatic vDecInt (nameOffset:59) (firstTokenOffset:59) (offset:59) |
| element: <testLibrary>::@topLevelVariable::vDecInt |
| inducedGetter: #F11 |
| inducedSetter: #F12 |
| #F13 hasImplicitType hasInitializer isOriginDeclaration isStatic vIncDouble (nameOffset:81) (firstTokenOffset:81) (offset:81) |
| element: <testLibrary>::@topLevelVariable::vIncDouble |
| inducedGetter: #F14 |
| inducedSetter: #F15 |
| #F16 hasImplicitType hasInitializer isOriginDeclaration isStatic vDecDouble (nameOffset:109) (firstTokenOffset:109) (offset:109) |
| element: <testLibrary>::@topLevelVariable::vDecDouble |
| inducedGetter: #F17 |
| inducedSetter: #F18 |
| getters |
| #F2 isComplete isOriginVariable isStatic vInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@getter::vInt |
| inducingVariable: #F1 |
| #F5 isComplete isOriginVariable isStatic vDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:18) |
| element: <testLibrary>::@getter::vDouble |
| inducingVariable: #F4 |
| #F8 isComplete isOriginVariable isStatic vIncInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:37) |
| element: <testLibrary>::@getter::vIncInt |
| inducingVariable: #F7 |
| #F11 isComplete isOriginVariable isStatic vDecInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:59) |
| element: <testLibrary>::@getter::vDecInt |
| inducingVariable: #F10 |
| #F14 isComplete isOriginVariable isStatic vIncDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:81) |
| element: <testLibrary>::@getter::vIncDouble |
| inducingVariable: #F13 |
| #F17 isComplete isOriginVariable isStatic vDecDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:109) |
| element: <testLibrary>::@getter::vDecDouble |
| inducingVariable: #F16 |
| setters |
| #F3 isComplete isOriginVariable isStatic vInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::vInt |
| inducingVariable: #F1 |
| formalParameters |
| #F19 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::vInt::@formalParameter::value |
| #F6 isComplete isOriginVariable isStatic vDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:18) |
| element: <testLibrary>::@setter::vDouble |
| inducingVariable: #F4 |
| formalParameters |
| #F20 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:18) |
| element: <testLibrary>::@setter::vDouble::@formalParameter::value |
| #F9 isComplete isOriginVariable isStatic vIncInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:37) |
| element: <testLibrary>::@setter::vIncInt |
| inducingVariable: #F7 |
| formalParameters |
| #F21 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:37) |
| element: <testLibrary>::@setter::vIncInt::@formalParameter::value |
| #F12 isComplete isOriginVariable isStatic vDecInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:59) |
| element: <testLibrary>::@setter::vDecInt |
| inducingVariable: #F10 |
| formalParameters |
| #F22 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:59) |
| element: <testLibrary>::@setter::vDecInt::@formalParameter::value |
| #F15 isComplete isOriginVariable isStatic vIncDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:81) |
| element: <testLibrary>::@setter::vIncDouble |
| inducingVariable: #F13 |
| formalParameters |
| #F23 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:81) |
| element: <testLibrary>::@setter::vIncDouble::@formalParameter::value |
| #F18 isComplete isOriginVariable isStatic vDecDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:109) |
| element: <testLibrary>::@setter::vDecDouble |
| inducingVariable: #F16 |
| formalParameters |
| #F24 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:109) |
| element: <testLibrary>::@setter::vDecDouble::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vInt |
| reference: <testLibrary>::@topLevelVariable::vInt |
| firstFragment: #F1 |
| type: int |
| getter: <testLibrary>::@getter::vInt |
| setter: <testLibrary>::@setter::vInt |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vDouble |
| reference: <testLibrary>::@topLevelVariable::vDouble |
| firstFragment: #F4 |
| type: double |
| getter: <testLibrary>::@getter::vDouble |
| setter: <testLibrary>::@setter::vDouble |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vIncInt |
| reference: <testLibrary>::@topLevelVariable::vIncInt |
| firstFragment: #F7 |
| type: int |
| getter: <testLibrary>::@getter::vIncInt |
| setter: <testLibrary>::@setter::vIncInt |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vDecInt |
| reference: <testLibrary>::@topLevelVariable::vDecInt |
| firstFragment: #F10 |
| type: int |
| getter: <testLibrary>::@getter::vDecInt |
| setter: <testLibrary>::@setter::vDecInt |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vIncDouble |
| reference: <testLibrary>::@topLevelVariable::vIncDouble |
| firstFragment: #F13 |
| type: double |
| getter: <testLibrary>::@getter::vIncDouble |
| setter: <testLibrary>::@setter::vIncDouble |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vDecDouble |
| reference: <testLibrary>::@topLevelVariable::vDecDouble |
| firstFragment: #F16 |
| type: double |
| getter: <testLibrary>::@getter::vDecDouble |
| setter: <testLibrary>::@setter::vDecDouble |
| getters |
| isOriginVariable isStatic vInt |
| reference: <testLibrary>::@getter::vInt |
| firstFragment: #F2 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::vInt |
| isOriginVariable isStatic vDouble |
| reference: <testLibrary>::@getter::vDouble |
| firstFragment: #F5 |
| returnType: double |
| variable: <testLibrary>::@topLevelVariable::vDouble |
| isOriginVariable isStatic vIncInt |
| reference: <testLibrary>::@getter::vIncInt |
| firstFragment: #F8 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::vIncInt |
| isOriginVariable isStatic vDecInt |
| reference: <testLibrary>::@getter::vDecInt |
| firstFragment: #F11 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::vDecInt |
| isOriginVariable isStatic vIncDouble |
| reference: <testLibrary>::@getter::vIncDouble |
| firstFragment: #F14 |
| returnType: double |
| variable: <testLibrary>::@topLevelVariable::vIncDouble |
| isOriginVariable isStatic vDecDouble |
| reference: <testLibrary>::@getter::vDecDouble |
| firstFragment: #F17 |
| returnType: double |
| variable: <testLibrary>::@topLevelVariable::vDecDouble |
| setters |
| isOriginVariable isStatic vInt |
| reference: <testLibrary>::@setter::vInt |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F19 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vInt |
| isOriginVariable isStatic vDouble |
| reference: <testLibrary>::@setter::vDouble |
| firstFragment: #F6 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F20 |
| type: double |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vDouble |
| isOriginVariable isStatic vIncInt |
| reference: <testLibrary>::@setter::vIncInt |
| firstFragment: #F9 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F21 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vIncInt |
| isOriginVariable isStatic vDecInt |
| reference: <testLibrary>::@setter::vDecInt |
| firstFragment: #F12 |
| formalParameters |
| #E3 requiredPositional value |
| firstFragment: #F22 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vDecInt |
| isOriginVariable isStatic vIncDouble |
| reference: <testLibrary>::@setter::vIncDouble |
| firstFragment: #F15 |
| formalParameters |
| #E4 requiredPositional value |
| firstFragment: #F23 |
| type: double |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vIncDouble |
| isOriginVariable isStatic vDecDouble |
| reference: <testLibrary>::@setter::vDecDouble |
| firstFragment: #F18 |
| formalParameters |
| #E5 requiredPositional value |
| firstFragment: #F24 |
| type: double |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vDecDouble |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic vInt (nameOffset:4) (firstTokenOffset:4) (offset:4) |
| element: <testLibrary>::@topLevelVariable::vInt |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| #F4 hasImplicitType hasInitializer isOriginDeclaration isStatic vDouble (nameOffset:20) (firstTokenOffset:20) (offset:20) |
| element: <testLibrary>::@topLevelVariable::vDouble |
| inducedGetter: #F5 |
| inducedSetter: #F6 |
| #F7 hasImplicitType hasInitializer isOriginDeclaration isStatic vIncInt (nameOffset:41) (firstTokenOffset:41) (offset:41) |
| element: <testLibrary>::@topLevelVariable::vIncInt |
| inducedGetter: #F8 |
| inducedSetter: #F9 |
| #F10 hasImplicitType hasInitializer isOriginDeclaration isStatic vDecInt (nameOffset:66) (firstTokenOffset:66) (offset:66) |
| element: <testLibrary>::@topLevelVariable::vDecInt |
| inducedGetter: #F11 |
| inducedSetter: #F12 |
| #F13 hasImplicitType hasInitializer isOriginDeclaration isStatic vIncDouble (nameOffset:91) (firstTokenOffset:91) (offset:91) |
| element: <testLibrary>::@topLevelVariable::vIncDouble |
| inducedGetter: #F14 |
| inducedSetter: #F15 |
| #F16 hasImplicitType hasInitializer isOriginDeclaration isStatic vDecDouble (nameOffset:122) (firstTokenOffset:122) (offset:122) |
| element: <testLibrary>::@topLevelVariable::vDecDouble |
| inducedGetter: #F17 |
| inducedSetter: #F18 |
| getters |
| #F2 isComplete isOriginVariable isStatic vInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@getter::vInt |
| inducingVariable: #F1 |
| #F5 isComplete isOriginVariable isStatic vDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:20) |
| element: <testLibrary>::@getter::vDouble |
| inducingVariable: #F4 |
| #F8 isComplete isOriginVariable isStatic vIncInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:41) |
| element: <testLibrary>::@getter::vIncInt |
| inducingVariable: #F7 |
| #F11 isComplete isOriginVariable isStatic vDecInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:66) |
| element: <testLibrary>::@getter::vDecInt |
| inducingVariable: #F10 |
| #F14 isComplete isOriginVariable isStatic vIncDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:91) |
| element: <testLibrary>::@getter::vIncDouble |
| inducingVariable: #F13 |
| #F17 isComplete isOriginVariable isStatic vDecDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:122) |
| element: <testLibrary>::@getter::vDecDouble |
| inducingVariable: #F16 |
| setters |
| #F3 isComplete isOriginVariable isStatic vInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::vInt |
| inducingVariable: #F1 |
| formalParameters |
| #F19 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::vInt::@formalParameter::value |
| #F6 isComplete isOriginVariable isStatic vDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:20) |
| element: <testLibrary>::@setter::vDouble |
| inducingVariable: #F4 |
| formalParameters |
| #F20 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:20) |
| element: <testLibrary>::@setter::vDouble::@formalParameter::value |
| #F9 isComplete isOriginVariable isStatic vIncInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:41) |
| element: <testLibrary>::@setter::vIncInt |
| inducingVariable: #F7 |
| formalParameters |
| #F21 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:41) |
| element: <testLibrary>::@setter::vIncInt::@formalParameter::value |
| #F12 isComplete isOriginVariable isStatic vDecInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:66) |
| element: <testLibrary>::@setter::vDecInt |
| inducingVariable: #F10 |
| formalParameters |
| #F22 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:66) |
| element: <testLibrary>::@setter::vDecInt::@formalParameter::value |
| #F15 isComplete isOriginVariable isStatic vIncDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:91) |
| element: <testLibrary>::@setter::vIncDouble |
| inducingVariable: #F13 |
| formalParameters |
| #F23 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:91) |
| element: <testLibrary>::@setter::vIncDouble::@formalParameter::value |
| #F18 isComplete isOriginVariable isStatic vDecDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:122) |
| element: <testLibrary>::@setter::vDecDouble |
| inducingVariable: #F16 |
| formalParameters |
| #F24 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:122) |
| element: <testLibrary>::@setter::vDecDouble::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vInt |
| reference: <testLibrary>::@topLevelVariable::vInt |
| firstFragment: #F1 |
| type: List<int> |
| getter: <testLibrary>::@getter::vInt |
| setter: <testLibrary>::@setter::vInt |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vDouble |
| reference: <testLibrary>::@topLevelVariable::vDouble |
| firstFragment: #F4 |
| type: List<double> |
| getter: <testLibrary>::@getter::vDouble |
| setter: <testLibrary>::@setter::vDouble |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vIncInt |
| reference: <testLibrary>::@topLevelVariable::vIncInt |
| firstFragment: #F7 |
| type: int |
| getter: <testLibrary>::@getter::vIncInt |
| setter: <testLibrary>::@setter::vIncInt |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vDecInt |
| reference: <testLibrary>::@topLevelVariable::vDecInt |
| firstFragment: #F10 |
| type: int |
| getter: <testLibrary>::@getter::vDecInt |
| setter: <testLibrary>::@setter::vDecInt |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vIncDouble |
| reference: <testLibrary>::@topLevelVariable::vIncDouble |
| firstFragment: #F13 |
| type: double |
| getter: <testLibrary>::@getter::vIncDouble |
| setter: <testLibrary>::@setter::vIncDouble |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vDecDouble |
| reference: <testLibrary>::@topLevelVariable::vDecDouble |
| firstFragment: #F16 |
| type: double |
| getter: <testLibrary>::@getter::vDecDouble |
| setter: <testLibrary>::@setter::vDecDouble |
| getters |
| isOriginVariable isStatic vInt |
| reference: <testLibrary>::@getter::vInt |
| firstFragment: #F2 |
| returnType: List<int> |
| variable: <testLibrary>::@topLevelVariable::vInt |
| isOriginVariable isStatic vDouble |
| reference: <testLibrary>::@getter::vDouble |
| firstFragment: #F5 |
| returnType: List<double> |
| variable: <testLibrary>::@topLevelVariable::vDouble |
| isOriginVariable isStatic vIncInt |
| reference: <testLibrary>::@getter::vIncInt |
| firstFragment: #F8 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::vIncInt |
| isOriginVariable isStatic vDecInt |
| reference: <testLibrary>::@getter::vDecInt |
| firstFragment: #F11 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::vDecInt |
| isOriginVariable isStatic vIncDouble |
| reference: <testLibrary>::@getter::vIncDouble |
| firstFragment: #F14 |
| returnType: double |
| variable: <testLibrary>::@topLevelVariable::vIncDouble |
| isOriginVariable isStatic vDecDouble |
| reference: <testLibrary>::@getter::vDecDouble |
| firstFragment: #F17 |
| returnType: double |
| variable: <testLibrary>::@topLevelVariable::vDecDouble |
| setters |
| isOriginVariable isStatic vInt |
| reference: <testLibrary>::@setter::vInt |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F19 |
| type: List<int> |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vInt |
| isOriginVariable isStatic vDouble |
| reference: <testLibrary>::@setter::vDouble |
| firstFragment: #F6 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F20 |
| type: List<double> |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vDouble |
| isOriginVariable isStatic vIncInt |
| reference: <testLibrary>::@setter::vIncInt |
| firstFragment: #F9 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F21 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vIncInt |
| isOriginVariable isStatic vDecInt |
| reference: <testLibrary>::@setter::vDecInt |
| firstFragment: #F12 |
| formalParameters |
| #E3 requiredPositional value |
| firstFragment: #F22 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vDecInt |
| isOriginVariable isStatic vIncDouble |
| reference: <testLibrary>::@setter::vIncDouble |
| firstFragment: #F15 |
| formalParameters |
| #E4 requiredPositional value |
| firstFragment: #F23 |
| type: double |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vIncDouble |
| isOriginVariable isStatic vDecDouble |
| reference: <testLibrary>::@setter::vDecDouble |
| firstFragment: #F18 |
| formalParameters |
| #E5 requiredPositional value |
| firstFragment: #F24 |
| type: double |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vDecDouble |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic vInt (nameOffset:4) (firstTokenOffset:4) (offset:4) |
| element: <testLibrary>::@topLevelVariable::vInt |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| #F4 hasImplicitType hasInitializer isOriginDeclaration isStatic vDouble (nameOffset:18) (firstTokenOffset:18) (offset:18) |
| element: <testLibrary>::@topLevelVariable::vDouble |
| inducedGetter: #F5 |
| inducedSetter: #F6 |
| #F7 hasImplicitType hasInitializer isOriginDeclaration isStatic vIncInt (nameOffset:37) (firstTokenOffset:37) (offset:37) |
| element: <testLibrary>::@topLevelVariable::vIncInt |
| inducedGetter: #F8 |
| inducedSetter: #F9 |
| #F10 hasImplicitType hasInitializer isOriginDeclaration isStatic vDecInt (nameOffset:59) (firstTokenOffset:59) (offset:59) |
| element: <testLibrary>::@topLevelVariable::vDecInt |
| inducedGetter: #F11 |
| inducedSetter: #F12 |
| #F13 hasImplicitType hasInitializer isOriginDeclaration isStatic vIncDouble (nameOffset:81) (firstTokenOffset:81) (offset:81) |
| element: <testLibrary>::@topLevelVariable::vIncDouble |
| inducedGetter: #F14 |
| inducedSetter: #F15 |
| #F16 hasImplicitType hasInitializer isOriginDeclaration isStatic vDecInt (nameOffset:109) (firstTokenOffset:109) (offset:109) |
| element: <testLibrary>::@topLevelVariable::vDecInt#1 |
| inducedGetter: #F17 |
| inducedSetter: #F18 |
| getters |
| #F2 isComplete isOriginVariable isStatic vInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@getter::vInt |
| inducingVariable: #F1 |
| #F5 isComplete isOriginVariable isStatic vDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:18) |
| element: <testLibrary>::@getter::vDouble |
| inducingVariable: #F4 |
| #F8 isComplete isOriginVariable isStatic vIncInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:37) |
| element: <testLibrary>::@getter::vIncInt |
| inducingVariable: #F7 |
| #F11 isComplete isOriginVariable isStatic vDecInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:59) |
| element: <testLibrary>::@getter::vDecInt |
| inducingVariable: #F10 |
| #F14 isComplete isOriginVariable isStatic vIncDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:81) |
| element: <testLibrary>::@getter::vIncDouble |
| inducingVariable: #F13 |
| #F17 isComplete isOriginVariable isStatic vDecInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:109) |
| element: <testLibrary>::@getter::vDecInt#1 |
| inducingVariable: #F16 |
| setters |
| #F3 isComplete isOriginVariable isStatic vInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::vInt |
| inducingVariable: #F1 |
| formalParameters |
| #F19 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::vInt::@formalParameter::value |
| #F6 isComplete isOriginVariable isStatic vDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:18) |
| element: <testLibrary>::@setter::vDouble |
| inducingVariable: #F4 |
| formalParameters |
| #F20 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:18) |
| element: <testLibrary>::@setter::vDouble::@formalParameter::value |
| #F9 isComplete isOriginVariable isStatic vIncInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:37) |
| element: <testLibrary>::@setter::vIncInt |
| inducingVariable: #F7 |
| formalParameters |
| #F21 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:37) |
| element: <testLibrary>::@setter::vIncInt::@formalParameter::value |
| #F12 isComplete isOriginVariable isStatic vDecInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:59) |
| element: <testLibrary>::@setter::vDecInt |
| inducingVariable: #F10 |
| formalParameters |
| #F22 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:59) |
| element: <testLibrary>::@setter::vDecInt::@formalParameter::value |
| #F15 isComplete isOriginVariable isStatic vIncDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:81) |
| element: <testLibrary>::@setter::vIncDouble |
| inducingVariable: #F13 |
| formalParameters |
| #F23 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:81) |
| element: <testLibrary>::@setter::vIncDouble::@formalParameter::value |
| #F18 isComplete isOriginVariable isStatic vDecInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:109) |
| element: <testLibrary>::@setter::vDecInt#1 |
| inducingVariable: #F16 |
| formalParameters |
| #F24 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:109) |
| element: <testLibrary>::@setter::vDecInt#1::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vInt |
| reference: <testLibrary>::@topLevelVariable::vInt |
| firstFragment: #F1 |
| type: int |
| getter: <testLibrary>::@getter::vInt |
| setter: <testLibrary>::@setter::vInt |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vDouble |
| reference: <testLibrary>::@topLevelVariable::vDouble |
| firstFragment: #F4 |
| type: double |
| getter: <testLibrary>::@getter::vDouble |
| setter: <testLibrary>::@setter::vDouble |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vIncInt |
| reference: <testLibrary>::@topLevelVariable::vIncInt |
| firstFragment: #F7 |
| type: int |
| getter: <testLibrary>::@getter::vIncInt |
| setter: <testLibrary>::@setter::vIncInt |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vDecInt |
| reference: <testLibrary>::@topLevelVariable::vDecInt |
| firstFragment: #F10 |
| type: int |
| getter: <testLibrary>::@getter::vDecInt |
| setter: <testLibrary>::@setter::vDecInt |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vIncDouble |
| reference: <testLibrary>::@topLevelVariable::vIncDouble |
| firstFragment: #F13 |
| type: double |
| getter: <testLibrary>::@getter::vIncDouble |
| setter: <testLibrary>::@setter::vIncDouble |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vDecInt |
| reference: <testLibrary>::@topLevelVariable::vDecInt#1 |
| firstFragment: #F16 |
| type: double |
| getter: <testLibrary>::@getter::vDecInt#1 |
| setter: <testLibrary>::@setter::vDecInt#1 |
| getters |
| isOriginVariable isStatic vInt |
| reference: <testLibrary>::@getter::vInt |
| firstFragment: #F2 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::vInt |
| isOriginVariable isStatic vDouble |
| reference: <testLibrary>::@getter::vDouble |
| firstFragment: #F5 |
| returnType: double |
| variable: <testLibrary>::@topLevelVariable::vDouble |
| isOriginVariable isStatic vIncInt |
| reference: <testLibrary>::@getter::vIncInt |
| firstFragment: #F8 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::vIncInt |
| isOriginVariable isStatic vDecInt |
| reference: <testLibrary>::@getter::vDecInt |
| firstFragment: #F11 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::vDecInt |
| isOriginVariable isStatic vIncDouble |
| reference: <testLibrary>::@getter::vIncDouble |
| firstFragment: #F14 |
| returnType: double |
| variable: <testLibrary>::@topLevelVariable::vIncDouble |
| isOriginVariable isStatic vDecInt |
| reference: <testLibrary>::@getter::vDecInt#1 |
| firstFragment: #F17 |
| returnType: double |
| variable: <testLibrary>::@topLevelVariable::vDecInt#1 |
| setters |
| isOriginVariable isStatic vInt |
| reference: <testLibrary>::@setter::vInt |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F19 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vInt |
| isOriginVariable isStatic vDouble |
| reference: <testLibrary>::@setter::vDouble |
| firstFragment: #F6 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F20 |
| type: double |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vDouble |
| isOriginVariable isStatic vIncInt |
| reference: <testLibrary>::@setter::vIncInt |
| firstFragment: #F9 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F21 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vIncInt |
| isOriginVariable isStatic vDecInt |
| reference: <testLibrary>::@setter::vDecInt |
| firstFragment: #F12 |
| formalParameters |
| #E3 requiredPositional value |
| firstFragment: #F22 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vDecInt |
| isOriginVariable isStatic vIncDouble |
| reference: <testLibrary>::@setter::vIncDouble |
| firstFragment: #F15 |
| formalParameters |
| #E4 requiredPositional value |
| firstFragment: #F23 |
| type: double |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vIncDouble |
| isOriginVariable isStatic vDecInt |
| reference: <testLibrary>::@setter::vDecInt#1 |
| firstFragment: #F18 |
| formalParameters |
| #E5 requiredPositional value |
| firstFragment: #F24 |
| type: double |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vDecInt#1 |
| '''); |
| } |
| |
| @failingTest |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic vInt (nameOffset:4) (firstTokenOffset:4) (offset:4) |
| element: <testLibrary>::@topLevelVariable::vInt |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| #F4 hasImplicitType hasInitializer isOriginDeclaration isStatic vDouble (nameOffset:20) (firstTokenOffset:20) (offset:20) |
| element: <testLibrary>::@topLevelVariable::vDouble |
| inducedGetter: #F5 |
| inducedSetter: #F6 |
| #F7 hasImplicitType hasInitializer isOriginDeclaration isStatic vIncInt (nameOffset:41) (firstTokenOffset:41) (offset:41) |
| element: <testLibrary>::@topLevelVariable::vIncInt |
| inducedGetter: #F8 |
| inducedSetter: #F9 |
| #F10 hasImplicitType hasInitializer isOriginDeclaration isStatic vDecInt (nameOffset:66) (firstTokenOffset:66) (offset:66) |
| element: <testLibrary>::@topLevelVariable::vDecInt |
| inducedGetter: #F11 |
| inducedSetter: #F12 |
| #F13 hasImplicitType hasInitializer isOriginDeclaration isStatic vIncDouble (nameOffset:91) (firstTokenOffset:91) (offset:91) |
| element: <testLibrary>::@topLevelVariable::vIncDouble |
| inducedGetter: #F14 |
| inducedSetter: #F15 |
| #F16 hasImplicitType hasInitializer isOriginDeclaration isStatic vDecInt (nameOffset:122) (firstTokenOffset:122) (offset:122) |
| element: <testLibrary>::@topLevelVariable::vDecInt#1 |
| inducedGetter: #F17 |
| inducedSetter: #F18 |
| getters |
| #F2 isComplete isOriginVariable isStatic vInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@getter::vInt |
| inducingVariable: #F1 |
| #F5 isComplete isOriginVariable isStatic vDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:20) |
| element: <testLibrary>::@getter::vDouble |
| inducingVariable: #F4 |
| #F8 isComplete isOriginVariable isStatic vIncInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:41) |
| element: <testLibrary>::@getter::vIncInt |
| inducingVariable: #F7 |
| #F11 isComplete isOriginVariable isStatic vDecInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:66) |
| element: <testLibrary>::@getter::vDecInt |
| inducingVariable: #F10 |
| #F14 isComplete isOriginVariable isStatic vIncDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:91) |
| element: <testLibrary>::@getter::vIncDouble |
| inducingVariable: #F13 |
| #F17 isComplete isOriginVariable isStatic vDecInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:122) |
| element: <testLibrary>::@getter::vDecInt#1 |
| inducingVariable: #F16 |
| setters |
| #F3 isComplete isOriginVariable isStatic vInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::vInt |
| inducingVariable: #F1 |
| formalParameters |
| #F19 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::vInt::@formalParameter::value |
| #F6 isComplete isOriginVariable isStatic vDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:20) |
| element: <testLibrary>::@setter::vDouble |
| inducingVariable: #F4 |
| formalParameters |
| #F20 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:20) |
| element: <testLibrary>::@setter::vDouble::@formalParameter::value |
| #F9 isComplete isOriginVariable isStatic vIncInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:41) |
| element: <testLibrary>::@setter::vIncInt |
| inducingVariable: #F7 |
| formalParameters |
| #F21 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:41) |
| element: <testLibrary>::@setter::vIncInt::@formalParameter::value |
| #F12 isComplete isOriginVariable isStatic vDecInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:66) |
| element: <testLibrary>::@setter::vDecInt |
| inducingVariable: #F10 |
| formalParameters |
| #F22 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:66) |
| element: <testLibrary>::@setter::vDecInt::@formalParameter::value |
| #F15 isComplete isOriginVariable isStatic vIncDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:91) |
| element: <testLibrary>::@setter::vIncDouble |
| inducingVariable: #F13 |
| formalParameters |
| #F23 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:91) |
| element: <testLibrary>::@setter::vIncDouble::@formalParameter::value |
| #F18 isComplete isOriginVariable isStatic vDecInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:122) |
| element: <testLibrary>::@setter::vDecInt#1 |
| inducingVariable: #F16 |
| formalParameters |
| #F24 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:122) |
| element: <testLibrary>::@setter::vDecInt#1::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vInt |
| reference: <testLibrary>::@topLevelVariable::vInt |
| firstFragment: #F1 |
| type: List<int> |
| getter: <testLibrary>::@getter::vInt |
| setter: <testLibrary>::@setter::vInt |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vDouble |
| reference: <testLibrary>::@topLevelVariable::vDouble |
| firstFragment: #F4 |
| type: List<double> |
| getter: <testLibrary>::@getter::vDouble |
| setter: <testLibrary>::@setter::vDouble |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vIncInt |
| reference: <testLibrary>::@topLevelVariable::vIncInt |
| firstFragment: #F7 |
| type: int |
| getter: <testLibrary>::@getter::vIncInt |
| setter: <testLibrary>::@setter::vIncInt |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vDecInt |
| reference: <testLibrary>::@topLevelVariable::vDecInt |
| firstFragment: #F10 |
| type: int |
| getter: <testLibrary>::@getter::vDecInt |
| setter: <testLibrary>::@setter::vDecInt |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vIncDouble |
| reference: <testLibrary>::@topLevelVariable::vIncDouble |
| firstFragment: #F13 |
| type: double |
| getter: <testLibrary>::@getter::vIncDouble |
| setter: <testLibrary>::@setter::vIncDouble |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vDecInt |
| reference: <testLibrary>::@topLevelVariable::vDecInt#1 |
| firstFragment: #F16 |
| type: double |
| getter: <testLibrary>::@getter::vDecInt#1 |
| setter: <testLibrary>::@setter::vDecInt#1 |
| getters |
| isOriginVariable isStatic vInt |
| reference: <testLibrary>::@getter::vInt |
| firstFragment: #F2 |
| returnType: List<int> |
| variable: <testLibrary>::@topLevelVariable::vInt |
| isOriginVariable isStatic vDouble |
| reference: <testLibrary>::@getter::vDouble |
| firstFragment: #F5 |
| returnType: List<double> |
| variable: <testLibrary>::@topLevelVariable::vDouble |
| isOriginVariable isStatic vIncInt |
| reference: <testLibrary>::@getter::vIncInt |
| firstFragment: #F8 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::vIncInt |
| isOriginVariable isStatic vDecInt |
| reference: <testLibrary>::@getter::vDecInt |
| firstFragment: #F11 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::vDecInt |
| isOriginVariable isStatic vIncDouble |
| reference: <testLibrary>::@getter::vIncDouble |
| firstFragment: #F14 |
| returnType: double |
| variable: <testLibrary>::@topLevelVariable::vIncDouble |
| isOriginVariable isStatic vDecInt |
| reference: <testLibrary>::@getter::vDecInt#1 |
| firstFragment: #F17 |
| returnType: double |
| variable: <testLibrary>::@topLevelVariable::vDecInt#1 |
| setters |
| isOriginVariable isStatic vInt |
| reference: <testLibrary>::@setter::vInt |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F19 |
| type: List<int> |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vInt |
| isOriginVariable isStatic vDouble |
| reference: <testLibrary>::@setter::vDouble |
| firstFragment: #F6 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F20 |
| type: List<double> |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vDouble |
| isOriginVariable isStatic vIncInt |
| reference: <testLibrary>::@setter::vIncInt |
| firstFragment: #F9 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F21 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vIncInt |
| isOriginVariable isStatic vDecInt |
| reference: <testLibrary>::@setter::vDecInt |
| firstFragment: #F12 |
| formalParameters |
| #E3 requiredPositional value |
| firstFragment: #F22 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vDecInt |
| isOriginVariable isStatic vIncDouble |
| reference: <testLibrary>::@setter::vIncDouble |
| firstFragment: #F15 |
| formalParameters |
| #E4 requiredPositional value |
| firstFragment: #F23 |
| type: double |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vIncDouble |
| isOriginVariable isStatic vDecInt |
| reference: <testLibrary>::@setter::vDecInt#1 |
| firstFragment: #F18 |
| formalParameters |
| #E5 requiredPositional value |
| firstFragment: #F24 |
| type: double |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vDecInt#1 |
| '''); |
| } |
| |
| test_initializer_prefix_not() async { |
| var library = await _encodeDecodeLibrary(r''' |
| var vNot = !true; |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic vNot (nameOffset:4) (firstTokenOffset:4) (offset:4) |
| element: <testLibrary>::@topLevelVariable::vNot |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| getters |
| #F2 isComplete isOriginVariable isStatic vNot (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@getter::vNot |
| inducingVariable: #F1 |
| setters |
| #F3 isComplete isOriginVariable isStatic vNot (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::vNot |
| inducingVariable: #F1 |
| formalParameters |
| #F4 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::vNot::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vNot |
| reference: <testLibrary>::@topLevelVariable::vNot |
| firstFragment: #F1 |
| type: bool |
| getter: <testLibrary>::@getter::vNot |
| setter: <testLibrary>::@setter::vNot |
| getters |
| isOriginVariable isStatic vNot |
| reference: <testLibrary>::@getter::vNot |
| firstFragment: #F2 |
| returnType: bool |
| variable: <testLibrary>::@topLevelVariable::vNot |
| setters |
| isOriginVariable isStatic vNot |
| reference: <testLibrary>::@setter::vNot |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F4 |
| type: bool |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vNot |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic vNegateInt (nameOffset:4) (firstTokenOffset:4) (offset:4) |
| element: <testLibrary>::@topLevelVariable::vNegateInt |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| #F4 hasImplicitType hasInitializer isOriginDeclaration isStatic vNegateDouble (nameOffset:25) (firstTokenOffset:25) (offset:25) |
| element: <testLibrary>::@topLevelVariable::vNegateDouble |
| inducedGetter: #F5 |
| inducedSetter: #F6 |
| #F7 hasImplicitType hasInitializer isOriginDeclaration isStatic vComplement (nameOffset:51) (firstTokenOffset:51) (offset:51) |
| element: <testLibrary>::@topLevelVariable::vComplement |
| inducedGetter: #F8 |
| inducedSetter: #F9 |
| getters |
| #F2 isComplete isOriginVariable isStatic vNegateInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@getter::vNegateInt |
| inducingVariable: #F1 |
| #F5 isComplete isOriginVariable isStatic vNegateDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@getter::vNegateDouble |
| inducingVariable: #F4 |
| #F8 isComplete isOriginVariable isStatic vComplement (nameOffset:<null>) (firstTokenOffset:<null>) (offset:51) |
| element: <testLibrary>::@getter::vComplement |
| inducingVariable: #F7 |
| setters |
| #F3 isComplete isOriginVariable isStatic vNegateInt (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::vNegateInt |
| inducingVariable: #F1 |
| formalParameters |
| #F10 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::vNegateInt::@formalParameter::value |
| #F6 isComplete isOriginVariable isStatic vNegateDouble (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@setter::vNegateDouble |
| inducingVariable: #F4 |
| formalParameters |
| #F11 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@setter::vNegateDouble::@formalParameter::value |
| #F9 isComplete isOriginVariable isStatic vComplement (nameOffset:<null>) (firstTokenOffset:<null>) (offset:51) |
| element: <testLibrary>::@setter::vComplement |
| inducingVariable: #F7 |
| formalParameters |
| #F12 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:51) |
| element: <testLibrary>::@setter::vComplement::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vNegateInt |
| reference: <testLibrary>::@topLevelVariable::vNegateInt |
| firstFragment: #F1 |
| type: int |
| getter: <testLibrary>::@getter::vNegateInt |
| setter: <testLibrary>::@setter::vNegateInt |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vNegateDouble |
| reference: <testLibrary>::@topLevelVariable::vNegateDouble |
| firstFragment: #F4 |
| type: double |
| getter: <testLibrary>::@getter::vNegateDouble |
| setter: <testLibrary>::@setter::vNegateDouble |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vComplement |
| reference: <testLibrary>::@topLevelVariable::vComplement |
| firstFragment: #F7 |
| type: int |
| getter: <testLibrary>::@getter::vComplement |
| setter: <testLibrary>::@setter::vComplement |
| getters |
| isOriginVariable isStatic vNegateInt |
| reference: <testLibrary>::@getter::vNegateInt |
| firstFragment: #F2 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::vNegateInt |
| isOriginVariable isStatic vNegateDouble |
| reference: <testLibrary>::@getter::vNegateDouble |
| firstFragment: #F5 |
| returnType: double |
| variable: <testLibrary>::@topLevelVariable::vNegateDouble |
| isOriginVariable isStatic vComplement |
| reference: <testLibrary>::@getter::vComplement |
| firstFragment: #F8 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::vComplement |
| setters |
| isOriginVariable isStatic vNegateInt |
| reference: <testLibrary>::@setter::vNegateInt |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F10 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vNegateInt |
| isOriginVariable isStatic vNegateDouble |
| reference: <testLibrary>::@setter::vNegateDouble |
| firstFragment: #F6 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F11 |
| type: double |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vNegateDouble |
| isOriginVariable isStatic vComplement |
| reference: <testLibrary>::@setter::vComplement |
| firstFragment: #F9 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F12 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vComplement |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class C (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::C |
| fields |
| #F2 isOriginDeclaration isStatic d (nameOffset:21) (firstTokenOffset:21) (offset:21) |
| element: <testLibrary>::@class::C::@field::d |
| inducedGetter: #F3 |
| inducedSetter: #F4 |
| constructors |
| #F5 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| getters |
| #F3 isComplete isOriginVariable isStatic d (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@class::C::@getter::d |
| inducingVariable: #F2 |
| setters |
| #F4 isComplete isOriginVariable isStatic d (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@class::C::@setter::d |
| inducingVariable: #F2 |
| formalParameters |
| #F6 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:21) |
| element: <testLibrary>::@class::C::@setter::d::@formalParameter::value |
| #F7 class D (nameOffset:32) (firstTokenOffset:26) (offset:32) |
| element: <testLibrary>::@class::D |
| fields |
| #F8 isOriginDeclaration i (nameOffset:42) (firstTokenOffset:42) (offset:42) |
| element: <testLibrary>::@class::D::@field::i |
| inducedGetter: #F9 |
| inducedSetter: #F10 |
| constructors |
| #F11 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:32) |
| element: <testLibrary>::@class::D::@constructor::new |
| typeName: D |
| getters |
| #F9 isComplete isOriginVariable i (nameOffset:<null>) (firstTokenOffset:<null>) (offset:42) |
| element: <testLibrary>::@class::D::@getter::i |
| inducingVariable: #F8 |
| setters |
| #F10 isComplete isOriginVariable i (nameOffset:<null>) (firstTokenOffset:<null>) (offset:42) |
| element: <testLibrary>::@class::D::@setter::i |
| inducingVariable: #F8 |
| formalParameters |
| #F12 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:42) |
| element: <testLibrary>::@class::D::@setter::i::@formalParameter::value |
| topLevelVariables |
| #F13 hasImplicitType hasInitializer isFinal isOriginDeclaration isStatic x (nameOffset:53) (firstTokenOffset:53) (offset:53) |
| element: <testLibrary>::@topLevelVariable::x |
| inducedGetter: #F14 |
| getters |
| #F14 isComplete isOriginVariable isStatic x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:53) |
| element: <testLibrary>::@getter::x |
| inducingVariable: #F13 |
| classes |
| isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F1 |
| fields |
| isOriginDeclaration isStatic d |
| reference: <testLibrary>::@class::C::@field::d |
| firstFragment: #F2 |
| type: D |
| getter: <testLibrary>::@class::C::@getter::d |
| setter: <testLibrary>::@class::C::@setter::d |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F5 |
| getters |
| isOriginVariable isStatic d |
| reference: <testLibrary>::@class::C::@getter::d |
| firstFragment: #F3 |
| returnType: D |
| variable: <testLibrary>::@class::C::@field::d |
| setters |
| isOriginVariable isStatic d |
| reference: <testLibrary>::@class::C::@setter::d |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F6 |
| type: D |
| returnType: void |
| variable: <testLibrary>::@class::C::@field::d |
| hasNonFinalField isSimplyBounded class D |
| reference: <testLibrary>::@class::D |
| firstFragment: #F7 |
| fields |
| isOriginDeclaration i |
| reference: <testLibrary>::@class::D::@field::i |
| firstFragment: #F8 |
| type: int |
| getter: <testLibrary>::@class::D::@getter::i |
| setter: <testLibrary>::@class::D::@setter::i |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::D::@constructor::new |
| firstFragment: #F11 |
| getters |
| isOriginVariable i |
| reference: <testLibrary>::@class::D::@getter::i |
| firstFragment: #F9 |
| returnType: int |
| variable: <testLibrary>::@class::D::@field::i |
| setters |
| isOriginVariable i |
| reference: <testLibrary>::@class::D::@setter::i |
| firstFragment: #F10 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F12 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::D::@field::i |
| topLevelVariables |
| hasImplicitType hasInitializer isFinal isOriginDeclaration isStatic isTypeInferredFromInitializer x |
| reference: <testLibrary>::@topLevelVariable::x |
| firstFragment: #F13 |
| type: int |
| getter: <testLibrary>::@getter::x |
| getters |
| isOriginVariable isStatic x |
| reference: <testLibrary>::@getter::x |
| firstFragment: #F14 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::x |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class C (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::C |
| fields |
| #F2 isOriginGetterSetter isStatic d (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::C::@field::d |
| constructors |
| #F3 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| getters |
| #F4 isComplete isOriginDeclaration isStatic d (nameOffset:25) (firstTokenOffset:12) (offset:25) |
| element: <testLibrary>::@class::C::@getter::d |
| #F5 class D (nameOffset:44) (firstTokenOffset:38) (offset:44) |
| element: <testLibrary>::@class::D |
| fields |
| #F6 isOriginDeclaration i (nameOffset:54) (firstTokenOffset:54) (offset:54) |
| element: <testLibrary>::@class::D::@field::i |
| inducedGetter: #F7 |
| inducedSetter: #F8 |
| constructors |
| #F9 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:44) |
| element: <testLibrary>::@class::D::@constructor::new |
| typeName: D |
| getters |
| #F7 isComplete isOriginVariable i (nameOffset:<null>) (firstTokenOffset:<null>) (offset:54) |
| element: <testLibrary>::@class::D::@getter::i |
| inducingVariable: #F6 |
| setters |
| #F8 isComplete isOriginVariable i (nameOffset:<null>) (firstTokenOffset:<null>) (offset:54) |
| element: <testLibrary>::@class::D::@setter::i |
| inducingVariable: #F6 |
| formalParameters |
| #F10 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:54) |
| element: <testLibrary>::@class::D::@setter::i::@formalParameter::value |
| topLevelVariables |
| #F11 hasImplicitType hasInitializer isOriginDeclaration isStatic x (nameOffset:63) (firstTokenOffset:63) (offset:63) |
| element: <testLibrary>::@topLevelVariable::x |
| inducedGetter: #F12 |
| inducedSetter: #F13 |
| getters |
| #F12 isComplete isOriginVariable isStatic x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:63) |
| element: <testLibrary>::@getter::x |
| inducingVariable: #F11 |
| setters |
| #F13 isComplete isOriginVariable isStatic x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:63) |
| element: <testLibrary>::@setter::x |
| inducingVariable: #F11 |
| formalParameters |
| #F14 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:63) |
| element: <testLibrary>::@setter::x::@formalParameter::value |
| classes |
| isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F1 |
| fields |
| isOriginGetterSetter isStatic d |
| reference: <testLibrary>::@class::C::@field::d |
| firstFragment: #F2 |
| type: D |
| getter: <testLibrary>::@class::C::@getter::d |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F3 |
| getters |
| isOriginDeclaration isStatic d |
| reference: <testLibrary>::@class::C::@getter::d |
| firstFragment: #F4 |
| returnType: D |
| variable: <testLibrary>::@class::C::@field::d |
| hasNonFinalField isSimplyBounded class D |
| reference: <testLibrary>::@class::D |
| firstFragment: #F5 |
| fields |
| isOriginDeclaration i |
| reference: <testLibrary>::@class::D::@field::i |
| firstFragment: #F6 |
| type: int |
| getter: <testLibrary>::@class::D::@getter::i |
| setter: <testLibrary>::@class::D::@setter::i |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::D::@constructor::new |
| firstFragment: #F9 |
| getters |
| isOriginVariable i |
| reference: <testLibrary>::@class::D::@getter::i |
| firstFragment: #F7 |
| returnType: int |
| variable: <testLibrary>::@class::D::@field::i |
| setters |
| isOriginVariable i |
| reference: <testLibrary>::@class::D::@setter::i |
| firstFragment: #F8 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F10 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::D::@field::i |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer x |
| reference: <testLibrary>::@topLevelVariable::x |
| firstFragment: #F11 |
| type: int |
| getter: <testLibrary>::@getter::x |
| setter: <testLibrary>::@setter::x |
| getters |
| isOriginVariable isStatic x |
| reference: <testLibrary>::@getter::x |
| firstFragment: #F12 |
| returnType: int |
| variable: <testLibrary>::@topLevelVariable::x |
| setters |
| isOriginVariable isStatic x |
| reference: <testLibrary>::@setter::x |
| firstFragment: #F13 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F14 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::x |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| topLevelVariables |
| #F1 hasImplicitType hasInitializer isOriginDeclaration isStatic vLess (nameOffset:4) (firstTokenOffset:4) (offset:4) |
| element: <testLibrary>::@topLevelVariable::vLess |
| inducedGetter: #F2 |
| inducedSetter: #F3 |
| #F4 hasImplicitType hasInitializer isOriginDeclaration isStatic vLessOrEqual (nameOffset:23) (firstTokenOffset:23) (offset:23) |
| element: <testLibrary>::@topLevelVariable::vLessOrEqual |
| inducedGetter: #F5 |
| inducedSetter: #F6 |
| #F7 hasImplicitType hasInitializer isOriginDeclaration isStatic vGreater (nameOffset:50) (firstTokenOffset:50) (offset:50) |
| element: <testLibrary>::@topLevelVariable::vGreater |
| inducedGetter: #F8 |
| inducedSetter: #F9 |
| #F10 hasImplicitType hasInitializer isOriginDeclaration isStatic vGreaterOrEqual (nameOffset:72) (firstTokenOffset:72) (offset:72) |
| element: <testLibrary>::@topLevelVariable::vGreaterOrEqual |
| inducedGetter: #F11 |
| inducedSetter: #F12 |
| getters |
| #F2 isComplete isOriginVariable isStatic vLess (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@getter::vLess |
| inducingVariable: #F1 |
| #F5 isComplete isOriginVariable isStatic vLessOrEqual (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23) |
| element: <testLibrary>::@getter::vLessOrEqual |
| inducingVariable: #F4 |
| #F8 isComplete isOriginVariable isStatic vGreater (nameOffset:<null>) (firstTokenOffset:<null>) (offset:50) |
| element: <testLibrary>::@getter::vGreater |
| inducingVariable: #F7 |
| #F11 isComplete isOriginVariable isStatic vGreaterOrEqual (nameOffset:<null>) (firstTokenOffset:<null>) (offset:72) |
| element: <testLibrary>::@getter::vGreaterOrEqual |
| inducingVariable: #F10 |
| setters |
| #F3 isComplete isOriginVariable isStatic vLess (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::vLess |
| inducingVariable: #F1 |
| formalParameters |
| #F13 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:4) |
| element: <testLibrary>::@setter::vLess::@formalParameter::value |
| #F6 isComplete isOriginVariable isStatic vLessOrEqual (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23) |
| element: <testLibrary>::@setter::vLessOrEqual |
| inducingVariable: #F4 |
| formalParameters |
| #F14 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23) |
| element: <testLibrary>::@setter::vLessOrEqual::@formalParameter::value |
| #F9 isComplete isOriginVariable isStatic vGreater (nameOffset:<null>) (firstTokenOffset:<null>) (offset:50) |
| element: <testLibrary>::@setter::vGreater |
| inducingVariable: #F7 |
| formalParameters |
| #F15 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:50) |
| element: <testLibrary>::@setter::vGreater::@formalParameter::value |
| #F12 isComplete isOriginVariable isStatic vGreaterOrEqual (nameOffset:<null>) (firstTokenOffset:<null>) (offset:72) |
| element: <testLibrary>::@setter::vGreaterOrEqual |
| inducingVariable: #F10 |
| formalParameters |
| #F16 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:72) |
| element: <testLibrary>::@setter::vGreaterOrEqual::@formalParameter::value |
| topLevelVariables |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vLess |
| reference: <testLibrary>::@topLevelVariable::vLess |
| firstFragment: #F1 |
| type: bool |
| getter: <testLibrary>::@getter::vLess |
| setter: <testLibrary>::@setter::vLess |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vLessOrEqual |
| reference: <testLibrary>::@topLevelVariable::vLessOrEqual |
| firstFragment: #F4 |
| type: bool |
| getter: <testLibrary>::@getter::vLessOrEqual |
| setter: <testLibrary>::@setter::vLessOrEqual |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vGreater |
| reference: <testLibrary>::@topLevelVariable::vGreater |
| firstFragment: #F7 |
| type: bool |
| getter: <testLibrary>::@getter::vGreater |
| setter: <testLibrary>::@setter::vGreater |
| hasImplicitType hasInitializer isOriginDeclaration isStatic isTypeInferredFromInitializer vGreaterOrEqual |
| reference: <testLibrary>::@topLevelVariable::vGreaterOrEqual |
| firstFragment: #F10 |
| type: bool |
| getter: <testLibrary>::@getter::vGreaterOrEqual |
| setter: <testLibrary>::@setter::vGreaterOrEqual |
| getters |
| isOriginVariable isStatic vLess |
| reference: <testLibrary>::@getter::vLess |
| firstFragment: #F2 |
| returnType: bool |
| variable: <testLibrary>::@topLevelVariable::vLess |
| isOriginVariable isStatic vLessOrEqual |
| reference: <testLibrary>::@getter::vLessOrEqual |
| firstFragment: #F5 |
| returnType: bool |
| variable: <testLibrary>::@topLevelVariable::vLessOrEqual |
| isOriginVariable isStatic vGreater |
| reference: <testLibrary>::@getter::vGreater |
| firstFragment: #F8 |
| returnType: bool |
| variable: <testLibrary>::@topLevelVariable::vGreater |
| isOriginVariable isStatic vGreaterOrEqual |
| reference: <testLibrary>::@getter::vGreaterOrEqual |
| firstFragment: #F11 |
| returnType: bool |
| variable: <testLibrary>::@topLevelVariable::vGreaterOrEqual |
| setters |
| isOriginVariable isStatic vLess |
| reference: <testLibrary>::@setter::vLess |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F13 |
| type: bool |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vLess |
| isOriginVariable isStatic vLessOrEqual |
| reference: <testLibrary>::@setter::vLessOrEqual |
| firstFragment: #F6 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F14 |
| type: bool |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vLessOrEqual |
| isOriginVariable isStatic vGreater |
| reference: <testLibrary>::@setter::vGreater |
| firstFragment: #F9 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F15 |
| type: bool |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vGreater |
| isOriginVariable isStatic vGreaterOrEqual |
| reference: <testLibrary>::@setter::vGreaterOrEqual |
| firstFragment: #F12 |
| formalParameters |
| #E3 requiredPositional value |
| firstFragment: #F16 |
| type: bool |
| returnType: void |
| variable: <testLibrary>::@topLevelVariable::vGreaterOrEqual |
| '''); |
| } |
| |
| @failingTest |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAbstract class A (nameOffset:15) (firstTokenOffset:0) (offset:15) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 isOriginDeclaration x (nameOffset:25) (firstTokenOffset:25) (offset:25) |
| element: <testLibrary>::@class::A::@field::x |
| inducedGetter: #F3 |
| inducedSetter: #F4 |
| constructors |
| #F5 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F3 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@class::A::@getter::x |
| inducingVariable: #F2 |
| setters |
| #F4 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@class::A::@setter::x |
| inducingVariable: #F2 |
| formalParameters |
| #F6 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@class::A::@setter::x::@formalParameter::value |
| #F7 class B (nameOffset:36) (firstTokenOffset:30) (offset:36) |
| element: <testLibrary>::@class::B |
| fields |
| #F8 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:36) |
| element: <testLibrary>::@class::B::@field::x |
| constructors |
| #F9 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:36) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| setters |
| #F10 hasImplicitReturnType isComplete isOriginDeclaration x (nameOffset:59) (firstTokenOffset:55) (offset:59) |
| element: <testLibrary>::@class::B::@setter::x |
| formalParameters |
| #F11 requiredPositional hasImplicitType isOriginDeclaration <null-name> (nameOffset:<null>) (firstTokenOffset:61) (offset:61) |
| element: <testLibrary>::@class::B::@setter::x::@formalParameter::<null-name> |
| classes |
| hasNonFinalField isAbstract isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::A::@field::x |
| firstFragment: #F2 |
| type: int |
| getter: <testLibrary>::@class::A::@getter::x |
| setter: <testLibrary>::@class::A::@setter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F5 |
| getters |
| isOriginVariable x |
| reference: <testLibrary>::@class::A::@getter::x |
| firstFragment: #F3 |
| returnType: int |
| variable: <testLibrary>::@class::A::@field::x |
| setters |
| isOriginVariable x |
| reference: <testLibrary>::@class::A::@setter::x |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F6 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::A::@field::x |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F7 |
| interfaces |
| A |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::B::@field::x |
| firstFragment: #F8 |
| type: int |
| setter: <testLibrary>::@class::B::@setter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F9 |
| setters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::B::@setter::x |
| firstFragment: #F10 |
| formalParameters |
| #E1 requiredPositional hasImplicitType <null-name> |
| firstFragment: #F11 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::B::@field::x |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 hasImplicitType hasInitializer isOriginDeclaration f (nameOffset:16) (firstTokenOffset:16) (offset:16) |
| element: <testLibrary>::@class::A::@field::f |
| inducedGetter: #F3 |
| inducedSetter: #F4 |
| constructors |
| #F5 isComplete isOriginDeclaration new (nameOffset:<null>) (firstTokenOffset:25) (offset:25) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| typeNameOffset: 25 |
| formalParameters |
| #F6 optionalPositional hasImplicitType isFinal isOriginDeclaration this.f (nameOffset:33) (firstTokenOffset:28) (offset:33) |
| element: <testLibrary>::@class::A::@constructor::new::@formalParameter::f |
| initializer: expression_0 |
| SimpleStringLiteral |
| literal: 'hello' @37 |
| getters |
| #F3 isComplete isOriginVariable f (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::A::@getter::f |
| inducingVariable: #F2 |
| setters |
| #F4 isComplete isOriginVariable f (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::A::@setter::f |
| inducingVariable: #F2 |
| formalParameters |
| #F7 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::A::@setter::f::@formalParameter::value |
| classes |
| hasNonFinalField isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| hasImplicitType hasInitializer isOriginDeclaration isTypeInferredFromInitializer f |
| reference: <testLibrary>::@class::A::@field::f |
| firstFragment: #F2 |
| type: int |
| getter: <testLibrary>::@class::A::@getter::f |
| setter: <testLibrary>::@class::A::@setter::f |
| constructors |
| isOriginDeclaration new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F5 |
| formalParameters |
| #E0 optionalPositional hasDefaultValue hasImplicitType isFinal this.f |
| firstFragment: #F6 |
| type: int |
| constantInitializer |
| fragment: #F6 |
| expression: expression_0 |
| field: <testLibrary>::@class::A::@field::f |
| getters |
| isOriginVariable f |
| reference: <testLibrary>::@class::A::@getter::f |
| firstFragment: #F3 |
| returnType: int |
| variable: <testLibrary>::@class::A::@field::f |
| setters |
| isOriginVariable f |
| reference: <testLibrary>::@class::A::@setter::f |
| firstFragment: #F4 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F7 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::A::@field::f |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAbstract class A (nameOffset:15) (firstTokenOffset:0) (offset:15) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 isOriginDeclaration x (nameOffset:25) (firstTokenOffset:25) (offset:25) |
| element: <testLibrary>::@class::A::@field::x |
| inducedGetter: #F3 |
| inducedSetter: #F4 |
| #F5 isOriginDeclaration y (nameOffset:34) (firstTokenOffset:34) (offset:34) |
| element: <testLibrary>::@class::A::@field::y |
| inducedGetter: #F6 |
| inducedSetter: #F7 |
| #F8 isOriginDeclaration z (nameOffset:43) (firstTokenOffset:43) (offset:43) |
| element: <testLibrary>::@class::A::@field::z |
| inducedGetter: #F9 |
| inducedSetter: #F10 |
| constructors |
| #F11 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F3 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@class::A::@getter::x |
| inducingVariable: #F2 |
| #F6 isComplete isOriginVariable y (nameOffset:<null>) (firstTokenOffset:<null>) (offset:34) |
| element: <testLibrary>::@class::A::@getter::y |
| inducingVariable: #F5 |
| #F9 isComplete isOriginVariable z (nameOffset:<null>) (firstTokenOffset:<null>) (offset:43) |
| element: <testLibrary>::@class::A::@getter::z |
| inducingVariable: #F8 |
| setters |
| #F4 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@class::A::@setter::x |
| inducingVariable: #F2 |
| formalParameters |
| #F12 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@class::A::@setter::x::@formalParameter::value |
| #F7 isComplete isOriginVariable y (nameOffset:<null>) (firstTokenOffset:<null>) (offset:34) |
| element: <testLibrary>::@class::A::@setter::y |
| inducingVariable: #F5 |
| formalParameters |
| #F13 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:34) |
| element: <testLibrary>::@class::A::@setter::y::@formalParameter::value |
| #F10 isComplete isOriginVariable z (nameOffset:<null>) (firstTokenOffset:<null>) (offset:43) |
| element: <testLibrary>::@class::A::@setter::z |
| inducingVariable: #F8 |
| formalParameters |
| #F14 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:43) |
| element: <testLibrary>::@class::A::@setter::z::@formalParameter::value |
| #F15 class B (nameOffset:54) (firstTokenOffset:48) (offset:54) |
| element: <testLibrary>::@class::B |
| fields |
| #F16 hasImplicitType isOriginDeclaration x (nameOffset:77) (firstTokenOffset:77) (offset:77) |
| element: <testLibrary>::@class::B::@field::x |
| inducedGetter: #F17 |
| inducedSetter: #F18 |
| #F19 isOriginGetterSetter y (nameOffset:<null>) (firstTokenOffset:<null>) (offset:54) |
| element: <testLibrary>::@class::B::@field::y |
| #F20 isOriginGetterSetter z (nameOffset:<null>) (firstTokenOffset:<null>) (offset:54) |
| element: <testLibrary>::@class::B::@field::z |
| constructors |
| #F21 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:54) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| getters |
| #F17 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:77) |
| element: <testLibrary>::@class::B::@getter::x |
| inducingVariable: #F16 |
| #F22 hasImplicitReturnType isComplete isOriginDeclaration y (nameOffset:86) (firstTokenOffset:82) (offset:86) |
| element: <testLibrary>::@class::B::@getter::y |
| setters |
| #F18 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:77) |
| element: <testLibrary>::@class::B::@setter::x |
| inducingVariable: #F16 |
| formalParameters |
| #F23 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:77) |
| element: <testLibrary>::@class::B::@setter::x::@formalParameter::value |
| #F24 hasImplicitReturnType isComplete isOriginDeclaration z (nameOffset:103) (firstTokenOffset:99) (offset:103) |
| element: <testLibrary>::@class::B::@setter::z |
| formalParameters |
| #F25 requiredPositional hasImplicitType isOriginDeclaration _ (nameOffset:105) (firstTokenOffset:105) (offset:105) |
| element: <testLibrary>::@class::B::@setter::z::@formalParameter::_ |
| classes |
| hasNonFinalField isAbstract isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::A::@field::x |
| firstFragment: #F2 |
| type: int |
| getter: <testLibrary>::@class::A::@getter::x |
| setter: <testLibrary>::@class::A::@setter::x |
| isOriginDeclaration y |
| reference: <testLibrary>::@class::A::@field::y |
| firstFragment: #F5 |
| type: int |
| getter: <testLibrary>::@class::A::@getter::y |
| setter: <testLibrary>::@class::A::@setter::y |
| isOriginDeclaration z |
| reference: <testLibrary>::@class::A::@field::z |
| firstFragment: #F8 |
| type: int |
| getter: <testLibrary>::@class::A::@getter::z |
| setter: <testLibrary>::@class::A::@setter::z |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F11 |
| getters |
| isOriginVariable x |
| reference: <testLibrary>::@class::A::@getter::x |
| firstFragment: #F3 |
| returnType: int |
| variable: <testLibrary>::@class::A::@field::x |
| isOriginVariable y |
| reference: <testLibrary>::@class::A::@getter::y |
| firstFragment: #F6 |
| returnType: int |
| variable: <testLibrary>::@class::A::@field::y |
| isOriginVariable z |
| reference: <testLibrary>::@class::A::@getter::z |
| firstFragment: #F9 |
| returnType: int |
| variable: <testLibrary>::@class::A::@field::z |
| setters |
| isOriginVariable x |
| reference: <testLibrary>::@class::A::@setter::x |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F12 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::A::@field::x |
| isOriginVariable y |
| reference: <testLibrary>::@class::A::@setter::y |
| firstFragment: #F7 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F13 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::A::@field::y |
| isOriginVariable z |
| reference: <testLibrary>::@class::A::@setter::z |
| firstFragment: #F10 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F14 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::A::@field::z |
| hasNonFinalField isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F15 |
| interfaces |
| A |
| fields |
| hasImplicitType isOriginDeclaration x |
| reference: <testLibrary>::@class::B::@field::x |
| firstFragment: #F16 |
| type: int |
| getter: <testLibrary>::@class::B::@getter::x |
| setter: <testLibrary>::@class::B::@setter::x |
| isOriginGetterSetter y |
| reference: <testLibrary>::@class::B::@field::y |
| firstFragment: #F19 |
| type: int |
| getter: <testLibrary>::@class::B::@getter::y |
| isOriginGetterSetter z |
| reference: <testLibrary>::@class::B::@field::z |
| firstFragment: #F20 |
| type: int |
| setter: <testLibrary>::@class::B::@setter::z |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F21 |
| getters |
| isOriginVariable x |
| reference: <testLibrary>::@class::B::@getter::x |
| firstFragment: #F17 |
| returnType: int |
| variable: <testLibrary>::@class::B::@field::x |
| isOriginDeclaration y |
| reference: <testLibrary>::@class::B::@getter::y |
| firstFragment: #F22 |
| returnType: int |
| variable: <testLibrary>::@class::B::@field::y |
| setters |
| isOriginVariable x |
| reference: <testLibrary>::@class::B::@setter::x |
| firstFragment: #F18 |
| formalParameters |
| #E3 requiredPositional value |
| firstFragment: #F23 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::B::@field::x |
| isOriginDeclaration z |
| reference: <testLibrary>::@class::B::@setter::z |
| firstFragment: #F24 |
| formalParameters |
| #E4 requiredPositional hasImplicitType _ |
| firstFragment: #F25 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::B::@field::z |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAbstract class A (nameOffset:15) (firstTokenOffset:0) (offset:15) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 isOriginDeclaration x (nameOffset:29) (firstTokenOffset:29) (offset:29) |
| element: <testLibrary>::@class::A::@field::x |
| inducedGetter: #F3 |
| inducedSetter: #F4 |
| constructors |
| #F5 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F3 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:29) |
| element: <testLibrary>::@class::A::@getter::x |
| inducingVariable: #F2 |
| setters |
| #F4 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:29) |
| element: <testLibrary>::@class::A::@setter::x |
| inducingVariable: #F2 |
| formalParameters |
| #F6 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:29) |
| element: <testLibrary>::@class::A::@setter::x::@formalParameter::value |
| #F7 class B (nameOffset:40) (firstTokenOffset:34) (offset:40) |
| element: <testLibrary>::@class::B |
| fields |
| #F8 hasImplicitType hasInitializer isOriginDeclaration x (nameOffset:63) (firstTokenOffset:63) (offset:63) |
| element: <testLibrary>::@class::B::@field::x |
| inducedGetter: #F9 |
| inducedSetter: #F10 |
| constructors |
| #F11 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:40) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| getters |
| #F9 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:63) |
| element: <testLibrary>::@class::B::@getter::x |
| inducingVariable: #F8 |
| setters |
| #F10 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:63) |
| element: <testLibrary>::@class::B::@setter::x |
| inducingVariable: #F8 |
| formalParameters |
| #F12 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:63) |
| element: <testLibrary>::@class::B::@setter::x::@formalParameter::value |
| classes |
| hasNonFinalField isAbstract isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::A::@field::x |
| firstFragment: #F2 |
| type: dynamic |
| getter: <testLibrary>::@class::A::@getter::x |
| setter: <testLibrary>::@class::A::@setter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F5 |
| getters |
| isOriginVariable x |
| reference: <testLibrary>::@class::A::@getter::x |
| firstFragment: #F3 |
| returnType: dynamic |
| variable: <testLibrary>::@class::A::@field::x |
| setters |
| isOriginVariable x |
| reference: <testLibrary>::@class::A::@setter::x |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F6 |
| type: dynamic |
| returnType: void |
| variable: <testLibrary>::@class::A::@field::x |
| hasNonFinalField isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F7 |
| interfaces |
| A |
| fields |
| hasImplicitType hasInitializer isOriginDeclaration x |
| reference: <testLibrary>::@class::B::@field::x |
| firstFragment: #F8 |
| type: dynamic |
| getter: <testLibrary>::@class::B::@getter::x |
| setter: <testLibrary>::@class::B::@setter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F11 |
| getters |
| isOriginVariable x |
| reference: <testLibrary>::@class::B::@getter::x |
| firstFragment: #F9 |
| returnType: dynamic |
| variable: <testLibrary>::@class::B::@field::x |
| setters |
| isOriginVariable x |
| reference: <testLibrary>::@class::B::@setter::x |
| firstFragment: #F10 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F12 |
| type: dynamic |
| returnType: void |
| variable: <testLibrary>::@class::B::@field::x |
| '''); |
| } |
| |
| test_instanceField_fromField_finalFieldTyped_setterNotTyped() async { |
| var library = await _encodeDecodeLibrary(r''' |
| abstract class A { |
| int? foo; |
| } |
| class B implements A { |
| final int foo; |
| set foo(_) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAbstract class A (nameOffset:15) (firstTokenOffset:0) (offset:15) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 isOriginDeclaration foo (nameOffset:26) (firstTokenOffset:26) (offset:26) |
| element: <testLibrary>::@class::A::@field::foo |
| inducedGetter: #F3 |
| inducedSetter: #F4 |
| constructors |
| #F5 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F3 isComplete isOriginVariable foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:26) |
| element: <testLibrary>::@class::A::@getter::foo |
| inducingVariable: #F2 |
| setters |
| #F4 isComplete isOriginVariable foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:26) |
| element: <testLibrary>::@class::A::@setter::foo |
| inducingVariable: #F2 |
| formalParameters |
| #F6 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:26) |
| element: <testLibrary>::@class::A::@setter::foo::@formalParameter::value |
| #F7 class B (nameOffset:39) (firstTokenOffset:33) (offset:39) |
| element: <testLibrary>::@class::B |
| fields |
| #F8 isFinal isOriginDeclaration foo (nameOffset:68) (firstTokenOffset:68) (offset:68) |
| element: <testLibrary>::@class::B::@field::foo |
| inducedGetter: #F9 |
| constructors |
| #F10 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:39) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| getters |
| #F9 isComplete isOriginVariable foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:68) |
| element: <testLibrary>::@class::B::@getter::foo |
| inducingVariable: #F8 |
| setters |
| #F11 hasImplicitReturnType isComplete isOriginDeclaration foo (nameOffset:79) (firstTokenOffset:75) (offset:79) |
| element: <testLibrary>::@class::B::@setter::foo |
| formalParameters |
| #F12 requiredPositional hasImplicitType isOriginDeclaration _ (nameOffset:83) (firstTokenOffset:83) (offset:83) |
| element: <testLibrary>::@class::B::@setter::foo::@formalParameter::_ |
| classes |
| hasNonFinalField isAbstract isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| isOriginDeclaration foo |
| reference: <testLibrary>::@class::A::@field::foo |
| firstFragment: #F2 |
| type: int? |
| getter: <testLibrary>::@class::A::@getter::foo |
| setter: <testLibrary>::@class::A::@setter::foo |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F5 |
| getters |
| isOriginVariable foo |
| reference: <testLibrary>::@class::A::@getter::foo |
| firstFragment: #F3 |
| returnType: int? |
| variable: <testLibrary>::@class::A::@field::foo |
| setters |
| isOriginVariable foo |
| reference: <testLibrary>::@class::A::@setter::foo |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F6 |
| type: int? |
| returnType: void |
| variable: <testLibrary>::@class::A::@field::foo |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F7 |
| interfaces |
| A |
| fields |
| isFinal isOriginDeclaration foo |
| reference: <testLibrary>::@class::B::@field::foo |
| firstFragment: #F8 |
| type: int |
| getter: <testLibrary>::@class::B::@getter::foo |
| setter: <testLibrary>::@class::B::@setter::foo |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F10 |
| getters |
| isOriginVariable foo |
| reference: <testLibrary>::@class::B::@getter::foo |
| firstFragment: #F9 |
| returnType: int |
| variable: <testLibrary>::@class::B::@field::foo |
| setters |
| isOriginDeclaration foo |
| reference: <testLibrary>::@class::B::@setter::foo |
| firstFragment: #F11 |
| formalParameters |
| #E1 requiredPositional hasImplicitType _ |
| firstFragment: #F12 |
| type: int? |
| returnType: void |
| variable: <testLibrary>::@class::B::@field::foo |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAbstract class A (nameOffset:15) (firstTokenOffset:0) (offset:15) |
| element: <testLibrary>::@class::A |
| typeParameters |
| #F2 E (nameOffset:17) (firstTokenOffset:17) (offset:17) |
| element: #E0 E |
| fields |
| #F3 isOriginDeclaration x (nameOffset:26) (firstTokenOffset:26) (offset:26) |
| element: <testLibrary>::@class::A::@field::x |
| inducedGetter: #F4 |
| inducedSetter: #F5 |
| #F6 isOriginDeclaration y (nameOffset:33) (firstTokenOffset:33) (offset:33) |
| element: <testLibrary>::@class::A::@field::y |
| inducedGetter: #F7 |
| inducedSetter: #F8 |
| #F9 isOriginDeclaration z (nameOffset:40) (firstTokenOffset:40) (offset:40) |
| element: <testLibrary>::@class::A::@field::z |
| inducedGetter: #F10 |
| inducedSetter: #F11 |
| constructors |
| #F12 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F4 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:26) |
| element: <testLibrary>::@class::A::@getter::x |
| inducingVariable: #F3 |
| #F7 isComplete isOriginVariable y (nameOffset:<null>) (firstTokenOffset:<null>) (offset:33) |
| element: <testLibrary>::@class::A::@getter::y |
| inducingVariable: #F6 |
| #F10 isComplete isOriginVariable z (nameOffset:<null>) (firstTokenOffset:<null>) (offset:40) |
| element: <testLibrary>::@class::A::@getter::z |
| inducingVariable: #F9 |
| setters |
| #F5 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:26) |
| element: <testLibrary>::@class::A::@setter::x |
| inducingVariable: #F3 |
| formalParameters |
| #F13 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:26) |
| element: <testLibrary>::@class::A::@setter::x::@formalParameter::value |
| #F8 isComplete isOriginVariable y (nameOffset:<null>) (firstTokenOffset:<null>) (offset:33) |
| element: <testLibrary>::@class::A::@setter::y |
| inducingVariable: #F6 |
| formalParameters |
| #F14 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:33) |
| element: <testLibrary>::@class::A::@setter::y::@formalParameter::value |
| #F11 isComplete isOriginVariable z (nameOffset:<null>) (firstTokenOffset:<null>) (offset:40) |
| element: <testLibrary>::@class::A::@setter::z |
| inducingVariable: #F9 |
| formalParameters |
| #F15 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:40) |
| element: <testLibrary>::@class::A::@setter::z::@formalParameter::value |
| #F16 class B (nameOffset:51) (firstTokenOffset:45) (offset:51) |
| element: <testLibrary>::@class::B |
| typeParameters |
| #F17 T (nameOffset:53) (firstTokenOffset:53) (offset:53) |
| element: #E1 T |
| fields |
| #F18 hasImplicitType isOriginDeclaration x (nameOffset:80) (firstTokenOffset:80) (offset:80) |
| element: <testLibrary>::@class::B::@field::x |
| inducedGetter: #F19 |
| inducedSetter: #F20 |
| #F21 isOriginGetterSetter y (nameOffset:<null>) (firstTokenOffset:<null>) (offset:51) |
| element: <testLibrary>::@class::B::@field::y |
| #F22 isOriginGetterSetter z (nameOffset:<null>) (firstTokenOffset:<null>) (offset:51) |
| element: <testLibrary>::@class::B::@field::z |
| constructors |
| #F23 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:51) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| getters |
| #F19 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:80) |
| element: <testLibrary>::@class::B::@getter::x |
| inducingVariable: #F18 |
| #F24 hasImplicitReturnType isComplete isOriginDeclaration y (nameOffset:89) (firstTokenOffset:85) (offset:89) |
| element: <testLibrary>::@class::B::@getter::y |
| setters |
| #F20 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:80) |
| element: <testLibrary>::@class::B::@setter::x |
| inducingVariable: #F18 |
| formalParameters |
| #F25 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:80) |
| element: <testLibrary>::@class::B::@setter::x::@formalParameter::value |
| #F26 hasImplicitReturnType isComplete isOriginDeclaration z (nameOffset:106) (firstTokenOffset:102) (offset:106) |
| element: <testLibrary>::@class::B::@setter::z |
| formalParameters |
| #F27 requiredPositional hasImplicitType isOriginDeclaration _ (nameOffset:108) (firstTokenOffset:108) (offset:108) |
| element: <testLibrary>::@class::B::@setter::z::@formalParameter::_ |
| classes |
| hasNonFinalField isAbstract isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| typeParameters |
| #E0 E |
| firstFragment: #F2 |
| fields |
| hasEnclosingTypeParameterReference isOriginDeclaration x |
| reference: <testLibrary>::@class::A::@field::x |
| firstFragment: #F3 |
| type: E |
| getter: <testLibrary>::@class::A::@getter::x |
| setter: <testLibrary>::@class::A::@setter::x |
| hasEnclosingTypeParameterReference isOriginDeclaration y |
| reference: <testLibrary>::@class::A::@field::y |
| firstFragment: #F6 |
| type: E |
| getter: <testLibrary>::@class::A::@getter::y |
| setter: <testLibrary>::@class::A::@setter::y |
| hasEnclosingTypeParameterReference isOriginDeclaration z |
| reference: <testLibrary>::@class::A::@field::z |
| firstFragment: #F9 |
| type: E |
| getter: <testLibrary>::@class::A::@getter::z |
| setter: <testLibrary>::@class::A::@setter::z |
| constructors |
| hasEnclosingTypeParameterReference isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F12 |
| getters |
| hasEnclosingTypeParameterReference isOriginVariable x |
| reference: <testLibrary>::@class::A::@getter::x |
| firstFragment: #F4 |
| returnType: E |
| variable: <testLibrary>::@class::A::@field::x |
| hasEnclosingTypeParameterReference isOriginVariable y |
| reference: <testLibrary>::@class::A::@getter::y |
| firstFragment: #F7 |
| returnType: E |
| variable: <testLibrary>::@class::A::@field::y |
| hasEnclosingTypeParameterReference isOriginVariable z |
| reference: <testLibrary>::@class::A::@getter::z |
| firstFragment: #F10 |
| returnType: E |
| variable: <testLibrary>::@class::A::@field::z |
| setters |
| hasEnclosingTypeParameterReference isOriginVariable x |
| reference: <testLibrary>::@class::A::@setter::x |
| firstFragment: #F5 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F13 |
| type: E |
| returnType: void |
| variable: <testLibrary>::@class::A::@field::x |
| hasEnclosingTypeParameterReference isOriginVariable y |
| reference: <testLibrary>::@class::A::@setter::y |
| firstFragment: #F8 |
| formalParameters |
| #E3 requiredPositional value |
| firstFragment: #F14 |
| type: E |
| returnType: void |
| variable: <testLibrary>::@class::A::@field::y |
| hasEnclosingTypeParameterReference isOriginVariable z |
| reference: <testLibrary>::@class::A::@setter::z |
| firstFragment: #F11 |
| formalParameters |
| #E4 requiredPositional value |
| firstFragment: #F15 |
| type: E |
| returnType: void |
| variable: <testLibrary>::@class::A::@field::z |
| hasNonFinalField isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F16 |
| typeParameters |
| #E1 T |
| firstFragment: #F17 |
| interfaces |
| A<T> |
| fields |
| hasEnclosingTypeParameterReference hasImplicitType isOriginDeclaration x |
| reference: <testLibrary>::@class::B::@field::x |
| firstFragment: #F18 |
| type: T |
| getter: <testLibrary>::@class::B::@getter::x |
| setter: <testLibrary>::@class::B::@setter::x |
| hasEnclosingTypeParameterReference isOriginGetterSetter y |
| reference: <testLibrary>::@class::B::@field::y |
| firstFragment: #F21 |
| type: T |
| getter: <testLibrary>::@class::B::@getter::y |
| hasEnclosingTypeParameterReference isOriginGetterSetter z |
| reference: <testLibrary>::@class::B::@field::z |
| firstFragment: #F22 |
| type: T |
| setter: <testLibrary>::@class::B::@setter::z |
| constructors |
| hasEnclosingTypeParameterReference isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F23 |
| getters |
| hasEnclosingTypeParameterReference isOriginVariable x |
| reference: <testLibrary>::@class::B::@getter::x |
| firstFragment: #F19 |
| returnType: T |
| variable: <testLibrary>::@class::B::@field::x |
| hasEnclosingTypeParameterReference isOriginDeclaration y |
| reference: <testLibrary>::@class::B::@getter::y |
| firstFragment: #F24 |
| returnType: T |
| variable: <testLibrary>::@class::B::@field::y |
| setters |
| hasEnclosingTypeParameterReference isOriginVariable x |
| reference: <testLibrary>::@class::B::@setter::x |
| firstFragment: #F20 |
| formalParameters |
| #E5 requiredPositional value |
| firstFragment: #F25 |
| type: T |
| returnType: void |
| variable: <testLibrary>::@class::B::@field::x |
| hasEnclosingTypeParameterReference isOriginDeclaration z |
| reference: <testLibrary>::@class::B::@setter::z |
| firstFragment: #F26 |
| formalParameters |
| #E6 requiredPositional hasImplicitType _ |
| firstFragment: #F27 |
| type: T |
| returnType: void |
| variable: <testLibrary>::@class::B::@field::z |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAbstract class A (nameOffset:15) (firstTokenOffset:0) (offset:15) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 hasImplicitType isOriginDeclaration x (nameOffset:25) (firstTokenOffset:25) (offset:25) |
| element: <testLibrary>::@class::A::@field::x |
| inducedGetter: #F3 |
| inducedSetter: #F4 |
| constructors |
| #F5 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F3 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@class::A::@getter::x |
| inducingVariable: #F2 |
| setters |
| #F4 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@class::A::@setter::x |
| inducingVariable: #F2 |
| formalParameters |
| #F6 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@class::A::@setter::x::@formalParameter::value |
| #F7 class B (nameOffset:36) (firstTokenOffset:30) (offset:36) |
| element: <testLibrary>::@class::B |
| fields |
| #F8 hasImplicitType hasInitializer isOriginDeclaration x (nameOffset:59) (firstTokenOffset:59) (offset:59) |
| element: <testLibrary>::@class::B::@field::x |
| inducedGetter: #F9 |
| inducedSetter: #F10 |
| constructors |
| #F11 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:36) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| getters |
| #F9 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:59) |
| element: <testLibrary>::@class::B::@getter::x |
| inducingVariable: #F8 |
| setters |
| #F10 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:59) |
| element: <testLibrary>::@class::B::@setter::x |
| inducingVariable: #F8 |
| formalParameters |
| #F12 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:59) |
| element: <testLibrary>::@class::B::@setter::x::@formalParameter::value |
| classes |
| hasNonFinalField isAbstract isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| hasImplicitType isOriginDeclaration x |
| reference: <testLibrary>::@class::A::@field::x |
| firstFragment: #F2 |
| type: dynamic |
| getter: <testLibrary>::@class::A::@getter::x |
| setter: <testLibrary>::@class::A::@setter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F5 |
| getters |
| isOriginVariable x |
| reference: <testLibrary>::@class::A::@getter::x |
| firstFragment: #F3 |
| returnType: dynamic |
| variable: <testLibrary>::@class::A::@field::x |
| setters |
| isOriginVariable x |
| reference: <testLibrary>::@class::A::@setter::x |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F6 |
| type: dynamic |
| returnType: void |
| variable: <testLibrary>::@class::A::@field::x |
| hasNonFinalField isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F7 |
| interfaces |
| A |
| fields |
| hasImplicitType hasInitializer isOriginDeclaration x |
| reference: <testLibrary>::@class::B::@field::x |
| firstFragment: #F8 |
| type: dynamic |
| getter: <testLibrary>::@class::B::@getter::x |
| setter: <testLibrary>::@class::B::@setter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F11 |
| getters |
| isOriginVariable x |
| reference: <testLibrary>::@class::B::@getter::x |
| firstFragment: #F9 |
| returnType: dynamic |
| variable: <testLibrary>::@class::B::@field::x |
| setters |
| isOriginVariable x |
| reference: <testLibrary>::@class::B::@setter::x |
| firstFragment: #F10 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F12 |
| type: dynamic |
| returnType: void |
| variable: <testLibrary>::@class::B::@field::x |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAbstract class A (nameOffset:15) (firstTokenOffset:0) (offset:15) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 isOriginDeclaration x (nameOffset:25) (firstTokenOffset:25) (offset:25) |
| element: <testLibrary>::@class::A::@field::x |
| inducedGetter: #F3 |
| inducedSetter: #F4 |
| constructors |
| #F5 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F3 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@class::A::@getter::x |
| inducingVariable: #F2 |
| setters |
| #F4 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@class::A::@setter::x |
| inducingVariable: #F2 |
| formalParameters |
| #F6 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:25) |
| element: <testLibrary>::@class::A::@setter::x::@formalParameter::value |
| #F7 class B (nameOffset:36) (firstTokenOffset:30) (offset:36) |
| element: <testLibrary>::@class::B |
| fields |
| #F8 hasImplicitType hasInitializer isOriginDeclaration x (nameOffset:59) (firstTokenOffset:59) (offset:59) |
| element: <testLibrary>::@class::B::@field::x |
| inducedGetter: #F9 |
| inducedSetter: #F10 |
| constructors |
| #F11 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:36) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| getters |
| #F9 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:59) |
| element: <testLibrary>::@class::B::@getter::x |
| inducingVariable: #F8 |
| setters |
| #F10 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:59) |
| element: <testLibrary>::@class::B::@setter::x |
| inducingVariable: #F8 |
| formalParameters |
| #F12 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:59) |
| element: <testLibrary>::@class::B::@setter::x::@formalParameter::value |
| classes |
| hasNonFinalField isAbstract isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::A::@field::x |
| firstFragment: #F2 |
| type: num |
| getter: <testLibrary>::@class::A::@getter::x |
| setter: <testLibrary>::@class::A::@setter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F5 |
| getters |
| isOriginVariable x |
| reference: <testLibrary>::@class::A::@getter::x |
| firstFragment: #F3 |
| returnType: num |
| variable: <testLibrary>::@class::A::@field::x |
| setters |
| isOriginVariable x |
| reference: <testLibrary>::@class::A::@setter::x |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F6 |
| type: num |
| returnType: void |
| variable: <testLibrary>::@class::A::@field::x |
| hasNonFinalField isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F7 |
| interfaces |
| A |
| fields |
| hasImplicitType hasInitializer isOriginDeclaration x |
| reference: <testLibrary>::@class::B::@field::x |
| firstFragment: #F8 |
| type: num |
| getter: <testLibrary>::@class::B::@getter::x |
| setter: <testLibrary>::@class::B::@setter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F11 |
| getters |
| isOriginVariable x |
| reference: <testLibrary>::@class::B::@getter::x |
| firstFragment: #F9 |
| returnType: num |
| variable: <testLibrary>::@class::B::@field::x |
| setters |
| isOriginVariable x |
| reference: <testLibrary>::@class::B::@setter::x |
| firstFragment: #F10 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F12 |
| type: num |
| returnType: void |
| variable: <testLibrary>::@class::B::@field::x |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAbstract class A (nameOffset:15) (firstTokenOffset:0) (offset:15) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@field::x |
| #F3 isOriginGetterSetter y (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@field::y |
| #F4 isOriginGetterSetter z (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@field::z |
| constructors |
| #F5 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F6 isAbstract isOriginDeclaration x (nameOffset:29) (firstTokenOffset:21) (offset:29) |
| element: <testLibrary>::@class::A::@getter::x |
| #F7 isAbstract isOriginDeclaration y (nameOffset:42) (firstTokenOffset:34) (offset:42) |
| element: <testLibrary>::@class::A::@getter::y |
| #F8 isAbstract isOriginDeclaration z (nameOffset:55) (firstTokenOffset:47) (offset:55) |
| element: <testLibrary>::@class::A::@getter::z |
| #F9 class B (nameOffset:66) (firstTokenOffset:60) (offset:66) |
| element: <testLibrary>::@class::B |
| fields |
| #F10 hasImplicitType isOriginDeclaration x (nameOffset:89) (firstTokenOffset:89) (offset:89) |
| element: <testLibrary>::@class::B::@field::x |
| inducedGetter: #F11 |
| inducedSetter: #F12 |
| #F13 isOriginGetterSetter y (nameOffset:<null>) (firstTokenOffset:<null>) (offset:66) |
| element: <testLibrary>::@class::B::@field::y |
| #F14 isOriginGetterSetter z (nameOffset:<null>) (firstTokenOffset:<null>) (offset:66) |
| element: <testLibrary>::@class::B::@field::z |
| constructors |
| #F15 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:66) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| getters |
| #F11 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:89) |
| element: <testLibrary>::@class::B::@getter::x |
| inducingVariable: #F10 |
| #F16 hasImplicitReturnType isComplete isOriginDeclaration y (nameOffset:98) (firstTokenOffset:94) (offset:98) |
| element: <testLibrary>::@class::B::@getter::y |
| setters |
| #F12 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:89) |
| element: <testLibrary>::@class::B::@setter::x |
| inducingVariable: #F10 |
| formalParameters |
| #F17 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:89) |
| element: <testLibrary>::@class::B::@setter::x::@formalParameter::value |
| #F18 hasImplicitReturnType isComplete isOriginDeclaration z (nameOffset:115) (firstTokenOffset:111) (offset:115) |
| element: <testLibrary>::@class::B::@setter::z |
| formalParameters |
| #F19 requiredPositional hasImplicitType isOriginDeclaration _ (nameOffset:117) (firstTokenOffset:117) (offset:117) |
| element: <testLibrary>::@class::B::@setter::z::@formalParameter::_ |
| classes |
| isAbstract isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::A::@field::x |
| firstFragment: #F2 |
| type: int |
| getter: <testLibrary>::@class::A::@getter::x |
| isOriginGetterSetter y |
| reference: <testLibrary>::@class::A::@field::y |
| firstFragment: #F3 |
| type: int |
| getter: <testLibrary>::@class::A::@getter::y |
| isOriginGetterSetter z |
| reference: <testLibrary>::@class::A::@field::z |
| firstFragment: #F4 |
| type: int |
| getter: <testLibrary>::@class::A::@getter::z |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F5 |
| getters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::A::@getter::x |
| firstFragment: #F6 |
| returnType: int |
| variable: <testLibrary>::@class::A::@field::x |
| isOriginDeclaration y |
| reference: <testLibrary>::@class::A::@getter::y |
| firstFragment: #F7 |
| returnType: int |
| variable: <testLibrary>::@class::A::@field::y |
| isOriginDeclaration z |
| reference: <testLibrary>::@class::A::@getter::z |
| firstFragment: #F8 |
| returnType: int |
| variable: <testLibrary>::@class::A::@field::z |
| hasNonFinalField isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F9 |
| interfaces |
| A |
| fields |
| hasImplicitType isOriginDeclaration x |
| reference: <testLibrary>::@class::B::@field::x |
| firstFragment: #F10 |
| type: int |
| getter: <testLibrary>::@class::B::@getter::x |
| setter: <testLibrary>::@class::B::@setter::x |
| isOriginGetterSetter y |
| reference: <testLibrary>::@class::B::@field::y |
| firstFragment: #F13 |
| type: int |
| getter: <testLibrary>::@class::B::@getter::y |
| isOriginGetterSetter z |
| reference: <testLibrary>::@class::B::@field::z |
| firstFragment: #F14 |
| type: int |
| setter: <testLibrary>::@class::B::@setter::z |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F15 |
| getters |
| isOriginVariable x |
| reference: <testLibrary>::@class::B::@getter::x |
| firstFragment: #F11 |
| returnType: int |
| variable: <testLibrary>::@class::B::@field::x |
| isOriginDeclaration y |
| reference: <testLibrary>::@class::B::@getter::y |
| firstFragment: #F16 |
| returnType: int |
| variable: <testLibrary>::@class::B::@field::y |
| setters |
| isOriginVariable x |
| reference: <testLibrary>::@class::B::@setter::x |
| firstFragment: #F12 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F17 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::B::@field::x |
| isOriginDeclaration z |
| reference: <testLibrary>::@class::B::@setter::z |
| firstFragment: #F18 |
| formalParameters |
| #E1 requiredPositional hasImplicitType _ |
| firstFragment: #F19 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::B::@field::z |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAbstract class A (nameOffset:15) (firstTokenOffset:0) (offset:15) |
| element: <testLibrary>::@class::A |
| typeParameters |
| #F2 E (nameOffset:17) (firstTokenOffset:17) (offset:17) |
| element: #E0 E |
| fields |
| #F3 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@field::x |
| #F4 isOriginGetterSetter y (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@field::y |
| #F5 isOriginGetterSetter z (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@field::z |
| constructors |
| #F6 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F7 isAbstract isOriginDeclaration x (nameOffset:30) (firstTokenOffset:24) (offset:30) |
| element: <testLibrary>::@class::A::@getter::x |
| #F8 isAbstract isOriginDeclaration y (nameOffset:41) (firstTokenOffset:35) (offset:41) |
| element: <testLibrary>::@class::A::@getter::y |
| #F9 isAbstract isOriginDeclaration z (nameOffset:52) (firstTokenOffset:46) (offset:52) |
| element: <testLibrary>::@class::A::@getter::z |
| #F10 class B (nameOffset:63) (firstTokenOffset:57) (offset:63) |
| element: <testLibrary>::@class::B |
| typeParameters |
| #F11 T (nameOffset:65) (firstTokenOffset:65) (offset:65) |
| element: #E1 T |
| fields |
| #F12 hasImplicitType isOriginDeclaration x (nameOffset:92) (firstTokenOffset:92) (offset:92) |
| element: <testLibrary>::@class::B::@field::x |
| inducedGetter: #F13 |
| inducedSetter: #F14 |
| #F15 isOriginGetterSetter y (nameOffset:<null>) (firstTokenOffset:<null>) (offset:63) |
| element: <testLibrary>::@class::B::@field::y |
| #F16 isOriginGetterSetter z (nameOffset:<null>) (firstTokenOffset:<null>) (offset:63) |
| element: <testLibrary>::@class::B::@field::z |
| constructors |
| #F17 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:63) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| getters |
| #F13 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:92) |
| element: <testLibrary>::@class::B::@getter::x |
| inducingVariable: #F12 |
| #F18 hasImplicitReturnType isComplete isOriginDeclaration y (nameOffset:101) (firstTokenOffset:97) (offset:101) |
| element: <testLibrary>::@class::B::@getter::y |
| setters |
| #F14 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:92) |
| element: <testLibrary>::@class::B::@setter::x |
| inducingVariable: #F12 |
| formalParameters |
| #F19 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:92) |
| element: <testLibrary>::@class::B::@setter::x::@formalParameter::value |
| #F20 hasImplicitReturnType isComplete isOriginDeclaration z (nameOffset:118) (firstTokenOffset:114) (offset:118) |
| element: <testLibrary>::@class::B::@setter::z |
| formalParameters |
| #F21 requiredPositional hasImplicitType isOriginDeclaration _ (nameOffset:120) (firstTokenOffset:120) (offset:120) |
| element: <testLibrary>::@class::B::@setter::z::@formalParameter::_ |
| classes |
| isAbstract isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| typeParameters |
| #E0 E |
| firstFragment: #F2 |
| fields |
| hasEnclosingTypeParameterReference isOriginGetterSetter x |
| reference: <testLibrary>::@class::A::@field::x |
| firstFragment: #F3 |
| type: E |
| getter: <testLibrary>::@class::A::@getter::x |
| hasEnclosingTypeParameterReference isOriginGetterSetter y |
| reference: <testLibrary>::@class::A::@field::y |
| firstFragment: #F4 |
| type: E |
| getter: <testLibrary>::@class::A::@getter::y |
| hasEnclosingTypeParameterReference isOriginGetterSetter z |
| reference: <testLibrary>::@class::A::@field::z |
| firstFragment: #F5 |
| type: E |
| getter: <testLibrary>::@class::A::@getter::z |
| constructors |
| hasEnclosingTypeParameterReference isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F6 |
| getters |
| hasEnclosingTypeParameterReference isOriginDeclaration x |
| reference: <testLibrary>::@class::A::@getter::x |
| firstFragment: #F7 |
| returnType: E |
| variable: <testLibrary>::@class::A::@field::x |
| hasEnclosingTypeParameterReference isOriginDeclaration y |
| reference: <testLibrary>::@class::A::@getter::y |
| firstFragment: #F8 |
| returnType: E |
| variable: <testLibrary>::@class::A::@field::y |
| hasEnclosingTypeParameterReference isOriginDeclaration z |
| reference: <testLibrary>::@class::A::@getter::z |
| firstFragment: #F9 |
| returnType: E |
| variable: <testLibrary>::@class::A::@field::z |
| hasNonFinalField isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F10 |
| typeParameters |
| #E1 T |
| firstFragment: #F11 |
| interfaces |
| A<T> |
| fields |
| hasEnclosingTypeParameterReference hasImplicitType isOriginDeclaration x |
| reference: <testLibrary>::@class::B::@field::x |
| firstFragment: #F12 |
| type: T |
| getter: <testLibrary>::@class::B::@getter::x |
| setter: <testLibrary>::@class::B::@setter::x |
| hasEnclosingTypeParameterReference isOriginGetterSetter y |
| reference: <testLibrary>::@class::B::@field::y |
| firstFragment: #F15 |
| type: T |
| getter: <testLibrary>::@class::B::@getter::y |
| hasEnclosingTypeParameterReference isOriginGetterSetter z |
| reference: <testLibrary>::@class::B::@field::z |
| firstFragment: #F16 |
| type: T |
| setter: <testLibrary>::@class::B::@setter::z |
| constructors |
| hasEnclosingTypeParameterReference isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F17 |
| getters |
| hasEnclosingTypeParameterReference isOriginVariable x |
| reference: <testLibrary>::@class::B::@getter::x |
| firstFragment: #F13 |
| returnType: T |
| variable: <testLibrary>::@class::B::@field::x |
| hasEnclosingTypeParameterReference isOriginDeclaration y |
| reference: <testLibrary>::@class::B::@getter::y |
| firstFragment: #F18 |
| returnType: T |
| variable: <testLibrary>::@class::B::@field::y |
| setters |
| hasEnclosingTypeParameterReference isOriginVariable x |
| reference: <testLibrary>::@class::B::@setter::x |
| firstFragment: #F14 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F19 |
| type: T |
| returnType: void |
| variable: <testLibrary>::@class::B::@field::x |
| hasEnclosingTypeParameterReference isOriginDeclaration z |
| reference: <testLibrary>::@class::B::@setter::z |
| firstFragment: #F20 |
| formalParameters |
| #E3 requiredPositional hasImplicitType _ |
| firstFragment: #F21 |
| type: T |
| returnType: void |
| variable: <testLibrary>::@class::B::@field::z |
| '''); |
| } |
| |
| test_instanceField_fromGetter_hasGetterWithType_hasSetterNoType() async { |
| configuration.withConstructors = false; |
| var library = await _encodeDecodeLibrary(r''' |
| abstract class A { |
| num get foo; |
| } |
| class B implements A { |
| int get foo => 0; |
| set foo(value) {} |
| } |
| '''); |
| checkElementText(library, r''' |
| library |
| reference: <testLibrary> |
| fragments |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAbstract class A (nameOffset:15) (firstTokenOffset:0) (offset:15) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 isOriginGetterSetter foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@field::foo |
| getters |
| #F3 isAbstract isOriginDeclaration foo (nameOffset:29) (firstTokenOffset:21) (offset:29) |
| element: <testLibrary>::@class::A::@getter::foo |
| #F4 class B (nameOffset:42) (firstTokenOffset:36) (offset:42) |
| element: <testLibrary>::@class::B |
| fields |
| #F5 isOriginGetterSetter foo (nameOffset:<null>) (firstTokenOffset:<null>) (offset:42) |
| element: <testLibrary>::@class::B::@field::foo |
| getters |
| #F6 isComplete isOriginDeclaration foo (nameOffset:69) (firstTokenOffset:61) (offset:69) |
| element: <testLibrary>::@class::B::@getter::foo |
| setters |
| #F7 hasImplicitReturnType isComplete isOriginDeclaration foo (nameOffset:85) (firstTokenOffset:81) (offset:85) |
| element: <testLibrary>::@class::B::@setter::foo |
| formalParameters |
| #F8 requiredPositional hasImplicitType isOriginDeclaration value (nameOffset:89) (firstTokenOffset:89) (offset:89) |
| element: <testLibrary>::@class::B::@setter::foo::@formalParameter::value |
| classes |
| isAbstract isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| isOriginGetterSetter foo |
| reference: <testLibrary>::@class::A::@field::foo |
| firstFragment: #F2 |
| type: num |
| getter: <testLibrary>::@class::A::@getter::foo |
| getters |
| isOriginDeclaration foo |
| reference: <testLibrary>::@class::A::@getter::foo |
| firstFragment: #F3 |
| returnType: num |
| variable: <testLibrary>::@class::A::@field::foo |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F4 |
| interfaces |
| A |
| fields |
| isOriginGetterSetter foo |
| reference: <testLibrary>::@class::B::@field::foo |
| firstFragment: #F5 |
| type: int |
| getter: <testLibrary>::@class::B::@getter::foo |
| setter: <testLibrary>::@class::B::@setter::foo |
| getters |
| isOriginDeclaration foo |
| reference: <testLibrary>::@class::B::@getter::foo |
| firstFragment: #F6 |
| returnType: int |
| variable: <testLibrary>::@class::B::@field::foo |
| setters |
| isOriginDeclaration foo |
| reference: <testLibrary>::@class::B::@setter::foo |
| firstFragment: #F7 |
| formalParameters |
| #E0 requiredPositional hasImplicitType value |
| firstFragment: #F8 |
| type: num |
| returnType: void |
| variable: <testLibrary>::@class::B::@field::foo |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAbstract class A (nameOffset:15) (firstTokenOffset:0) (offset:15) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@field::x |
| constructors |
| #F3 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F4 isAbstract isOriginDeclaration x (nameOffset:29) (firstTokenOffset:21) (offset:29) |
| element: <testLibrary>::@class::A::@getter::x |
| #F5 isAbstract class B (nameOffset:49) (firstTokenOffset:34) (offset:49) |
| element: <testLibrary>::@class::B |
| fields |
| #F6 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:49) |
| element: <testLibrary>::@class::B::@field::x |
| constructors |
| #F7 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:49) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| getters |
| #F8 isAbstract isOriginDeclaration x (nameOffset:66) (firstTokenOffset:55) (offset:66) |
| element: <testLibrary>::@class::B::@getter::x |
| #F9 class C (nameOffset:77) (firstTokenOffset:71) (offset:77) |
| element: <testLibrary>::@class::C |
| fields |
| #F10 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:77) |
| element: <testLibrary>::@class::C::@field::x |
| constructors |
| #F11 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:77) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| getters |
| #F12 hasImplicitReturnType isComplete isOriginDeclaration x (nameOffset:103) (firstTokenOffset:99) (offset:103) |
| element: <testLibrary>::@class::C::@getter::x |
| classes |
| isAbstract isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::A::@field::x |
| firstFragment: #F2 |
| type: int |
| getter: <testLibrary>::@class::A::@getter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F3 |
| getters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::A::@getter::x |
| firstFragment: #F4 |
| returnType: int |
| variable: <testLibrary>::@class::A::@field::x |
| isAbstract isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F5 |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::B::@field::x |
| firstFragment: #F6 |
| type: String |
| getter: <testLibrary>::@class::B::@getter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F7 |
| getters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::B::@getter::x |
| firstFragment: #F8 |
| returnType: String |
| variable: <testLibrary>::@class::B::@field::x |
| isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F9 |
| interfaces |
| A |
| B |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::C::@field::x |
| firstFragment: #F10 |
| type: dynamic |
| getter: <testLibrary>::@class::C::@getter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F11 |
| getters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::C::@getter::x |
| firstFragment: #F12 |
| returnType: dynamic |
| variable: <testLibrary>::@class::C::@field::x |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAbstract class A (nameOffset:15) (firstTokenOffset:0) (offset:15) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@field::x |
| constructors |
| #F3 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F4 isAbstract isOriginDeclaration x (nameOffset:29) (firstTokenOffset:21) (offset:29) |
| element: <testLibrary>::@class::A::@getter::x |
| #F5 isAbstract class B (nameOffset:49) (firstTokenOffset:34) (offset:49) |
| element: <testLibrary>::@class::B |
| fields |
| #F6 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:49) |
| element: <testLibrary>::@class::B::@field::x |
| constructors |
| #F7 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:49) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| getters |
| #F8 isAbstract isOriginDeclaration x (nameOffset:67) (firstTokenOffset:55) (offset:67) |
| element: <testLibrary>::@class::B::@getter::x |
| #F9 class C (nameOffset:78) (firstTokenOffset:72) (offset:78) |
| element: <testLibrary>::@class::C |
| fields |
| #F10 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:78) |
| element: <testLibrary>::@class::C::@field::x |
| constructors |
| #F11 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:78) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| getters |
| #F12 hasImplicitReturnType isComplete isOriginDeclaration x (nameOffset:104) (firstTokenOffset:100) (offset:104) |
| element: <testLibrary>::@class::C::@getter::x |
| classes |
| isAbstract isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::A::@field::x |
| firstFragment: #F2 |
| type: int |
| getter: <testLibrary>::@class::A::@getter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F3 |
| getters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::A::@getter::x |
| firstFragment: #F4 |
| returnType: int |
| variable: <testLibrary>::@class::A::@field::x |
| isAbstract isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F5 |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::B::@field::x |
| firstFragment: #F6 |
| type: dynamic |
| getter: <testLibrary>::@class::B::@getter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F7 |
| getters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::B::@getter::x |
| firstFragment: #F8 |
| returnType: dynamic |
| variable: <testLibrary>::@class::B::@field::x |
| isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F9 |
| interfaces |
| A |
| B |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::C::@field::x |
| firstFragment: #F10 |
| type: int |
| getter: <testLibrary>::@class::C::@getter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F11 |
| getters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::C::@getter::x |
| firstFragment: #F12 |
| returnType: int |
| variable: <testLibrary>::@class::C::@field::x |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAbstract class A (nameOffset:15) (firstTokenOffset:0) (offset:15) |
| element: <testLibrary>::@class::A |
| typeParameters |
| #F2 T (nameOffset:17) (firstTokenOffset:17) (offset:17) |
| element: #E0 T |
| fields |
| #F3 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@field::x |
| constructors |
| #F4 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F5 isAbstract isOriginDeclaration x (nameOffset:30) (firstTokenOffset:24) (offset:30) |
| element: <testLibrary>::@class::A::@getter::x |
| #F6 isAbstract class B (nameOffset:50) (firstTokenOffset:35) (offset:50) |
| element: <testLibrary>::@class::B |
| typeParameters |
| #F7 T (nameOffset:52) (firstTokenOffset:52) (offset:52) |
| element: #E1 T |
| fields |
| #F8 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:50) |
| element: <testLibrary>::@class::B::@field::x |
| constructors |
| #F9 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:50) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| getters |
| #F10 isAbstract isOriginDeclaration x (nameOffset:65) (firstTokenOffset:59) (offset:65) |
| element: <testLibrary>::@class::B::@getter::x |
| #F11 class C (nameOffset:76) (firstTokenOffset:70) (offset:76) |
| element: <testLibrary>::@class::C |
| fields |
| #F12 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:76) |
| element: <testLibrary>::@class::C::@field::x |
| constructors |
| #F13 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:76) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| getters |
| #F14 hasImplicitReturnType isComplete isOriginDeclaration x (nameOffset:115) (firstTokenOffset:111) (offset:115) |
| element: <testLibrary>::@class::C::@getter::x |
| classes |
| isAbstract isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F2 |
| fields |
| hasEnclosingTypeParameterReference isOriginGetterSetter x |
| reference: <testLibrary>::@class::A::@field::x |
| firstFragment: #F3 |
| type: T |
| getter: <testLibrary>::@class::A::@getter::x |
| constructors |
| hasEnclosingTypeParameterReference isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F4 |
| getters |
| hasEnclosingTypeParameterReference isOriginDeclaration x |
| reference: <testLibrary>::@class::A::@getter::x |
| firstFragment: #F5 |
| returnType: T |
| variable: <testLibrary>::@class::A::@field::x |
| isAbstract isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F6 |
| typeParameters |
| #E1 T |
| firstFragment: #F7 |
| fields |
| hasEnclosingTypeParameterReference isOriginGetterSetter x |
| reference: <testLibrary>::@class::B::@field::x |
| firstFragment: #F8 |
| type: T |
| getter: <testLibrary>::@class::B::@getter::x |
| constructors |
| hasEnclosingTypeParameterReference isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F9 |
| getters |
| hasEnclosingTypeParameterReference isOriginDeclaration x |
| reference: <testLibrary>::@class::B::@getter::x |
| firstFragment: #F10 |
| returnType: T |
| variable: <testLibrary>::@class::B::@field::x |
| isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F11 |
| interfaces |
| A<int> |
| B<String> |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::C::@field::x |
| firstFragment: #F12 |
| type: dynamic |
| getter: <testLibrary>::@class::C::@getter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F13 |
| getters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::C::@getter::x |
| firstFragment: #F14 |
| returnType: dynamic |
| variable: <testLibrary>::@class::C::@field::x |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAbstract class A (nameOffset:15) (firstTokenOffset:0) (offset:15) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@field::x |
| constructors |
| #F3 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F4 isAbstract isOriginDeclaration x (nameOffset:29) (firstTokenOffset:21) (offset:29) |
| element: <testLibrary>::@class::A::@getter::x |
| #F5 isAbstract class B (nameOffset:49) (firstTokenOffset:34) (offset:49) |
| element: <testLibrary>::@class::B |
| fields |
| #F6 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:49) |
| element: <testLibrary>::@class::B::@field::x |
| constructors |
| #F7 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:49) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| getters |
| #F8 isAbstract isOriginDeclaration x (nameOffset:63) (firstTokenOffset:55) (offset:63) |
| element: <testLibrary>::@class::B::@getter::x |
| #F9 class C (nameOffset:74) (firstTokenOffset:68) (offset:74) |
| element: <testLibrary>::@class::C |
| fields |
| #F10 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:74) |
| element: <testLibrary>::@class::C::@field::x |
| constructors |
| #F11 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:74) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| getters |
| #F12 hasImplicitReturnType isComplete isOriginDeclaration x (nameOffset:100) (firstTokenOffset:96) (offset:100) |
| element: <testLibrary>::@class::C::@getter::x |
| classes |
| isAbstract isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::A::@field::x |
| firstFragment: #F2 |
| type: int |
| getter: <testLibrary>::@class::A::@getter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F3 |
| getters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::A::@getter::x |
| firstFragment: #F4 |
| returnType: int |
| variable: <testLibrary>::@class::A::@field::x |
| isAbstract isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F5 |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::B::@field::x |
| firstFragment: #F6 |
| type: int |
| getter: <testLibrary>::@class::B::@getter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F7 |
| getters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::B::@getter::x |
| firstFragment: #F8 |
| returnType: int |
| variable: <testLibrary>::@class::B::@field::x |
| isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F9 |
| interfaces |
| A |
| B |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::C::@field::x |
| firstFragment: #F10 |
| type: int |
| getter: <testLibrary>::@class::C::@getter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F11 |
| getters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::C::@getter::x |
| firstFragment: #F12 |
| returnType: int |
| variable: <testLibrary>::@class::C::@field::x |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAbstract class A (nameOffset:15) (firstTokenOffset:0) (offset:15) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@field::x |
| #F3 isOriginGetterSetter y (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@field::y |
| constructors |
| #F4 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F5 isAbstract isOriginDeclaration x (nameOffset:29) (firstTokenOffset:21) (offset:29) |
| element: <testLibrary>::@class::A::@getter::x |
| #F6 isAbstract isOriginDeclaration y (nameOffset:42) (firstTokenOffset:34) (offset:42) |
| element: <testLibrary>::@class::A::@getter::y |
| #F7 isAbstract class B (nameOffset:62) (firstTokenOffset:47) (offset:62) |
| element: <testLibrary>::@class::B |
| fields |
| #F8 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:62) |
| element: <testLibrary>::@class::B::@field::x |
| #F9 isOriginGetterSetter y (nameOffset:<null>) (firstTokenOffset:<null>) (offset:62) |
| element: <testLibrary>::@class::B::@field::y |
| constructors |
| #F10 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:62) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| setters |
| #F11 isAbstract isOriginDeclaration x (nameOffset:77) (firstTokenOffset:68) (offset:77) |
| element: <testLibrary>::@class::B::@setter::x |
| formalParameters |
| #F12 requiredPositional isOriginDeclaration _ (nameOffset:86) (firstTokenOffset:79) (offset:86) |
| element: <testLibrary>::@class::B::@setter::x::@formalParameter::_ |
| #F13 isAbstract isOriginDeclaration y (nameOffset:101) (firstTokenOffset:92) (offset:101) |
| element: <testLibrary>::@class::B::@setter::y |
| formalParameters |
| #F14 requiredPositional isOriginDeclaration _ (nameOffset:110) (firstTokenOffset:103) (offset:110) |
| element: <testLibrary>::@class::B::@setter::y::@formalParameter::_ |
| #F15 class C (nameOffset:122) (firstTokenOffset:116) (offset:122) |
| element: <testLibrary>::@class::C |
| fields |
| #F16 hasImplicitType isOriginDeclaration x (nameOffset:148) (firstTokenOffset:148) (offset:148) |
| element: <testLibrary>::@class::C::@field::x |
| inducedGetter: #F17 |
| inducedSetter: #F18 |
| #F19 hasImplicitType isFinal isOriginDeclaration y (nameOffset:159) (firstTokenOffset:159) (offset:159) |
| element: <testLibrary>::@class::C::@field::y |
| inducedGetter: #F20 |
| constructors |
| #F21 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:122) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| getters |
| #F17 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:148) |
| element: <testLibrary>::@class::C::@getter::x |
| inducingVariable: #F16 |
| #F20 isComplete isOriginVariable y (nameOffset:<null>) (firstTokenOffset:<null>) (offset:159) |
| element: <testLibrary>::@class::C::@getter::y |
| inducingVariable: #F19 |
| setters |
| #F18 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:148) |
| element: <testLibrary>::@class::C::@setter::x |
| inducingVariable: #F16 |
| formalParameters |
| #F22 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:148) |
| element: <testLibrary>::@class::C::@setter::x::@formalParameter::value |
| classes |
| isAbstract isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::A::@field::x |
| firstFragment: #F2 |
| type: int |
| getter: <testLibrary>::@class::A::@getter::x |
| isOriginGetterSetter y |
| reference: <testLibrary>::@class::A::@field::y |
| firstFragment: #F3 |
| type: int |
| getter: <testLibrary>::@class::A::@getter::y |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F4 |
| getters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::A::@getter::x |
| firstFragment: #F5 |
| returnType: int |
| variable: <testLibrary>::@class::A::@field::x |
| isOriginDeclaration y |
| reference: <testLibrary>::@class::A::@getter::y |
| firstFragment: #F6 |
| returnType: int |
| variable: <testLibrary>::@class::A::@field::y |
| isAbstract isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F7 |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::B::@field::x |
| firstFragment: #F8 |
| type: String |
| setter: <testLibrary>::@class::B::@setter::x |
| isOriginGetterSetter y |
| reference: <testLibrary>::@class::B::@field::y |
| firstFragment: #F9 |
| type: String |
| setter: <testLibrary>::@class::B::@setter::y |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F10 |
| setters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::B::@setter::x |
| firstFragment: #F11 |
| formalParameters |
| #E0 requiredPositional _ |
| firstFragment: #F12 |
| type: String |
| returnType: void |
| variable: <testLibrary>::@class::B::@field::x |
| isOriginDeclaration y |
| reference: <testLibrary>::@class::B::@setter::y |
| firstFragment: #F13 |
| formalParameters |
| #E1 requiredPositional _ |
| firstFragment: #F14 |
| type: String |
| returnType: void |
| variable: <testLibrary>::@class::B::@field::y |
| hasNonFinalField isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F15 |
| interfaces |
| A |
| B |
| fields |
| hasImplicitType isOriginDeclaration x |
| reference: <testLibrary>::@class::C::@field::x |
| firstFragment: #F16 |
| type: dynamic |
| getter: <testLibrary>::@class::C::@getter::x |
| setter: <testLibrary>::@class::C::@setter::x |
| hasImplicitType isFinal isOriginDeclaration y |
| reference: <testLibrary>::@class::C::@field::y |
| firstFragment: #F19 |
| type: int |
| getter: <testLibrary>::@class::C::@getter::y |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F21 |
| getters |
| isOriginVariable x |
| reference: <testLibrary>::@class::C::@getter::x |
| firstFragment: #F17 |
| returnType: dynamic |
| variable: <testLibrary>::@class::C::@field::x |
| isOriginVariable y |
| reference: <testLibrary>::@class::C::@getter::y |
| firstFragment: #F20 |
| returnType: int |
| variable: <testLibrary>::@class::C::@field::y |
| setters |
| isOriginVariable x |
| reference: <testLibrary>::@class::C::@setter::x |
| firstFragment: #F18 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F22 |
| type: dynamic |
| returnType: void |
| variable: <testLibrary>::@class::C::@field::x |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAbstract class A (nameOffset:15) (firstTokenOffset:0) (offset:15) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@field::x |
| constructors |
| #F3 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F4 isAbstract isOriginDeclaration x (nameOffset:29) (firstTokenOffset:21) (offset:29) |
| element: <testLibrary>::@class::A::@getter::x |
| #F5 isAbstract class B (nameOffset:49) (firstTokenOffset:34) (offset:49) |
| element: <testLibrary>::@class::B |
| fields |
| #F6 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:49) |
| element: <testLibrary>::@class::B::@field::x |
| constructors |
| #F7 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:49) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| setters |
| #F8 isAbstract isOriginDeclaration x (nameOffset:64) (firstTokenOffset:55) (offset:64) |
| element: <testLibrary>::@class::B::@setter::x |
| formalParameters |
| #F9 requiredPositional isOriginDeclaration _ (nameOffset:73) (firstTokenOffset:66) (offset:73) |
| element: <testLibrary>::@class::B::@setter::x::@formalParameter::_ |
| #F10 class C (nameOffset:85) (firstTokenOffset:79) (offset:85) |
| element: <testLibrary>::@class::C |
| fields |
| #F11 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:85) |
| element: <testLibrary>::@class::C::@field::x |
| constructors |
| #F12 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:85) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| getters |
| #F13 hasImplicitReturnType isComplete isOriginDeclaration x (nameOffset:111) (firstTokenOffset:107) (offset:111) |
| element: <testLibrary>::@class::C::@getter::x |
| classes |
| isAbstract isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::A::@field::x |
| firstFragment: #F2 |
| type: int |
| getter: <testLibrary>::@class::A::@getter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F3 |
| getters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::A::@getter::x |
| firstFragment: #F4 |
| returnType: int |
| variable: <testLibrary>::@class::A::@field::x |
| isAbstract isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F5 |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::B::@field::x |
| firstFragment: #F6 |
| type: String |
| setter: <testLibrary>::@class::B::@setter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F7 |
| setters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::B::@setter::x |
| firstFragment: #F8 |
| formalParameters |
| #E0 requiredPositional _ |
| firstFragment: #F9 |
| type: String |
| returnType: void |
| variable: <testLibrary>::@class::B::@field::x |
| isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F10 |
| interfaces |
| A |
| B |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::C::@field::x |
| firstFragment: #F11 |
| type: int |
| getter: <testLibrary>::@class::C::@getter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F12 |
| getters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::C::@getter::x |
| firstFragment: #F13 |
| returnType: int |
| variable: <testLibrary>::@class::C::@field::x |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAbstract class A (nameOffset:15) (firstTokenOffset:0) (offset:15) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@field::x |
| constructors |
| #F3 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F4 isAbstract isOriginDeclaration x (nameOffset:29) (firstTokenOffset:21) (offset:29) |
| element: <testLibrary>::@class::A::@getter::x |
| #F5 isAbstract class B (nameOffset:49) (firstTokenOffset:34) (offset:49) |
| element: <testLibrary>::@class::B |
| fields |
| #F6 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:49) |
| element: <testLibrary>::@class::B::@field::x |
| constructors |
| #F7 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:49) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| setters |
| #F8 isAbstract isOriginDeclaration x (nameOffset:64) (firstTokenOffset:55) (offset:64) |
| element: <testLibrary>::@class::B::@setter::x |
| formalParameters |
| #F9 requiredPositional isOriginDeclaration _ (nameOffset:73) (firstTokenOffset:66) (offset:73) |
| element: <testLibrary>::@class::B::@setter::x::@formalParameter::_ |
| #F10 class C (nameOffset:85) (firstTokenOffset:79) (offset:85) |
| element: <testLibrary>::@class::C |
| fields |
| #F11 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:85) |
| element: <testLibrary>::@class::C::@field::x |
| constructors |
| #F12 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:85) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| setters |
| #F13 hasImplicitReturnType isAbstract isOriginDeclaration x (nameOffset:111) (firstTokenOffset:107) (offset:111) |
| element: <testLibrary>::@class::C::@setter::x |
| formalParameters |
| #F14 requiredPositional hasImplicitType isOriginDeclaration _ (nameOffset:113) (firstTokenOffset:113) (offset:113) |
| element: <testLibrary>::@class::C::@setter::x::@formalParameter::_ |
| classes |
| isAbstract isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::A::@field::x |
| firstFragment: #F2 |
| type: int |
| getter: <testLibrary>::@class::A::@getter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F3 |
| getters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::A::@getter::x |
| firstFragment: #F4 |
| returnType: int |
| variable: <testLibrary>::@class::A::@field::x |
| isAbstract isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F5 |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::B::@field::x |
| firstFragment: #F6 |
| type: String |
| setter: <testLibrary>::@class::B::@setter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F7 |
| setters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::B::@setter::x |
| firstFragment: #F8 |
| formalParameters |
| #E0 requiredPositional _ |
| firstFragment: #F9 |
| type: String |
| returnType: void |
| variable: <testLibrary>::@class::B::@field::x |
| isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F10 |
| interfaces |
| A |
| B |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::C::@field::x |
| firstFragment: #F11 |
| type: String |
| setter: <testLibrary>::@class::C::@setter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F12 |
| setters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::C::@setter::x |
| firstFragment: #F13 |
| formalParameters |
| #E1 requiredPositional hasImplicitType _ |
| firstFragment: #F14 |
| type: String |
| returnType: void |
| variable: <testLibrary>::@class::C::@field::x |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAbstract class A (nameOffset:15) (firstTokenOffset:0) (offset:15) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@field::x |
| constructors |
| #F3 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F4 isAbstract isOriginDeclaration x (nameOffset:29) (firstTokenOffset:21) (offset:29) |
| element: <testLibrary>::@class::A::@getter::x |
| #F5 isAbstract class B (nameOffset:49) (firstTokenOffset:34) (offset:49) |
| element: <testLibrary>::@class::B |
| fields |
| #F6 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:49) |
| element: <testLibrary>::@class::B::@field::x |
| constructors |
| #F7 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:49) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| setters |
| #F8 isAbstract isOriginDeclaration x (nameOffset:64) (firstTokenOffset:55) (offset:64) |
| element: <testLibrary>::@class::B::@setter::x |
| formalParameters |
| #F9 requiredPositional isOriginDeclaration _ (nameOffset:70) (firstTokenOffset:66) (offset:70) |
| element: <testLibrary>::@class::B::@setter::x::@formalParameter::_ |
| #F10 class C (nameOffset:82) (firstTokenOffset:76) (offset:82) |
| element: <testLibrary>::@class::C |
| fields |
| #F11 hasImplicitType isOriginDeclaration x (nameOffset:108) (firstTokenOffset:108) (offset:108) |
| element: <testLibrary>::@class::C::@field::x |
| inducedGetter: #F12 |
| inducedSetter: #F13 |
| constructors |
| #F14 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:82) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| getters |
| #F12 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:108) |
| element: <testLibrary>::@class::C::@getter::x |
| inducingVariable: #F11 |
| setters |
| #F13 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:108) |
| element: <testLibrary>::@class::C::@setter::x |
| inducingVariable: #F11 |
| formalParameters |
| #F15 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:108) |
| element: <testLibrary>::@class::C::@setter::x::@formalParameter::value |
| classes |
| isAbstract isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::A::@field::x |
| firstFragment: #F2 |
| type: int |
| getter: <testLibrary>::@class::A::@getter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F3 |
| getters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::A::@getter::x |
| firstFragment: #F4 |
| returnType: int |
| variable: <testLibrary>::@class::A::@field::x |
| isAbstract isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F5 |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::B::@field::x |
| firstFragment: #F6 |
| type: int |
| setter: <testLibrary>::@class::B::@setter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F7 |
| setters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::B::@setter::x |
| firstFragment: #F8 |
| formalParameters |
| #E0 requiredPositional _ |
| firstFragment: #F9 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::B::@field::x |
| hasNonFinalField isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F10 |
| interfaces |
| A |
| B |
| fields |
| hasImplicitType isOriginDeclaration x |
| reference: <testLibrary>::@class::C::@field::x |
| firstFragment: #F11 |
| type: int |
| getter: <testLibrary>::@class::C::@getter::x |
| setter: <testLibrary>::@class::C::@setter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F14 |
| getters |
| isOriginVariable x |
| reference: <testLibrary>::@class::C::@getter::x |
| firstFragment: #F12 |
| returnType: int |
| variable: <testLibrary>::@class::C::@field::x |
| setters |
| isOriginVariable x |
| reference: <testLibrary>::@class::C::@setter::x |
| firstFragment: #F13 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F15 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::C::@field::x |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAbstract class A (nameOffset:15) (firstTokenOffset:0) (offset:15) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@field::x |
| constructors |
| #F3 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F4 isAbstract isOriginDeclaration x (nameOffset:29) (firstTokenOffset:21) (offset:29) |
| element: <testLibrary>::@class::A::@getter::x |
| #F5 isAbstract class B (nameOffset:49) (firstTokenOffset:34) (offset:49) |
| element: <testLibrary>::@class::B |
| fields |
| #F6 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:49) |
| element: <testLibrary>::@class::B::@field::x |
| constructors |
| #F7 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:49) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| setters |
| #F8 isAbstract isOriginDeclaration x (nameOffset:64) (firstTokenOffset:55) (offset:64) |
| element: <testLibrary>::@class::B::@setter::x |
| formalParameters |
| #F9 requiredPositional isOriginDeclaration _ (nameOffset:70) (firstTokenOffset:66) (offset:70) |
| element: <testLibrary>::@class::B::@setter::x::@formalParameter::_ |
| #F10 class C (nameOffset:82) (firstTokenOffset:76) (offset:82) |
| element: <testLibrary>::@class::C |
| fields |
| #F11 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:82) |
| element: <testLibrary>::@class::C::@field::x |
| constructors |
| #F12 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:82) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| getters |
| #F13 hasImplicitReturnType isComplete isOriginDeclaration x (nameOffset:108) (firstTokenOffset:104) (offset:108) |
| element: <testLibrary>::@class::C::@getter::x |
| classes |
| isAbstract isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::A::@field::x |
| firstFragment: #F2 |
| type: int |
| getter: <testLibrary>::@class::A::@getter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F3 |
| getters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::A::@getter::x |
| firstFragment: #F4 |
| returnType: int |
| variable: <testLibrary>::@class::A::@field::x |
| isAbstract isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F5 |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::B::@field::x |
| firstFragment: #F6 |
| type: int |
| setter: <testLibrary>::@class::B::@setter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F7 |
| setters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::B::@setter::x |
| firstFragment: #F8 |
| formalParameters |
| #E0 requiredPositional _ |
| firstFragment: #F9 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::B::@field::x |
| isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F10 |
| interfaces |
| A |
| B |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::C::@field::x |
| firstFragment: #F11 |
| type: int |
| getter: <testLibrary>::@class::C::@getter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F12 |
| getters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::C::@getter::x |
| firstFragment: #F13 |
| returnType: int |
| variable: <testLibrary>::@class::C::@field::x |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAbstract class A (nameOffset:15) (firstTokenOffset:0) (offset:15) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@field::x |
| constructors |
| #F3 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F4 isAbstract isOriginDeclaration x (nameOffset:29) (firstTokenOffset:21) (offset:29) |
| element: <testLibrary>::@class::A::@getter::x |
| #F5 isAbstract class B (nameOffset:49) (firstTokenOffset:34) (offset:49) |
| element: <testLibrary>::@class::B |
| fields |
| #F6 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:49) |
| element: <testLibrary>::@class::B::@field::x |
| constructors |
| #F7 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:49) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| setters |
| #F8 isAbstract isOriginDeclaration x (nameOffset:64) (firstTokenOffset:55) (offset:64) |
| element: <testLibrary>::@class::B::@setter::x |
| formalParameters |
| #F9 requiredPositional isOriginDeclaration _ (nameOffset:70) (firstTokenOffset:66) (offset:70) |
| element: <testLibrary>::@class::B::@setter::x::@formalParameter::_ |
| #F10 class C (nameOffset:82) (firstTokenOffset:76) (offset:82) |
| element: <testLibrary>::@class::C |
| fields |
| #F11 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:82) |
| element: <testLibrary>::@class::C::@field::x |
| constructors |
| #F12 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:82) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| setters |
| #F13 hasImplicitReturnType isAbstract isOriginDeclaration x (nameOffset:108) (firstTokenOffset:104) (offset:108) |
| element: <testLibrary>::@class::C::@setter::x |
| formalParameters |
| #F14 requiredPositional hasImplicitType isOriginDeclaration _ (nameOffset:110) (firstTokenOffset:110) (offset:110) |
| element: <testLibrary>::@class::C::@setter::x::@formalParameter::_ |
| classes |
| isAbstract isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::A::@field::x |
| firstFragment: #F2 |
| type: int |
| getter: <testLibrary>::@class::A::@getter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F3 |
| getters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::A::@getter::x |
| firstFragment: #F4 |
| returnType: int |
| variable: <testLibrary>::@class::A::@field::x |
| isAbstract isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F5 |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::B::@field::x |
| firstFragment: #F6 |
| type: int |
| setter: <testLibrary>::@class::B::@setter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F7 |
| setters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::B::@setter::x |
| firstFragment: #F8 |
| formalParameters |
| #E0 requiredPositional _ |
| firstFragment: #F9 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::B::@field::x |
| isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F10 |
| interfaces |
| A |
| B |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::C::@field::x |
| firstFragment: #F11 |
| type: int |
| setter: <testLibrary>::@class::C::@setter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F12 |
| setters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::C::@setter::x |
| firstFragment: #F13 |
| formalParameters |
| #E1 requiredPositional hasImplicitType _ |
| firstFragment: #F14 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::C::@field::x |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAbstract class A (nameOffset:15) (firstTokenOffset:0) (offset:15) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@field::x |
| #F3 isOriginGetterSetter y (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@field::y |
| #F4 isOriginGetterSetter z (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@field::z |
| constructors |
| #F5 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| setters |
| #F6 isAbstract isOriginDeclaration x (nameOffset:30) (firstTokenOffset:21) (offset:30) |
| element: <testLibrary>::@class::A::@setter::x |
| formalParameters |
| #F7 requiredPositional isOriginDeclaration _ (nameOffset:36) (firstTokenOffset:32) (offset:36) |
| element: <testLibrary>::@class::A::@setter::x::@formalParameter::_ |
| #F8 isAbstract isOriginDeclaration y (nameOffset:51) (firstTokenOffset:42) (offset:51) |
| element: <testLibrary>::@class::A::@setter::y |
| formalParameters |
| #F9 requiredPositional isOriginDeclaration _ (nameOffset:57) (firstTokenOffset:53) (offset:57) |
| element: <testLibrary>::@class::A::@setter::y::@formalParameter::_ |
| #F10 isAbstract isOriginDeclaration z (nameOffset:72) (firstTokenOffset:63) (offset:72) |
| element: <testLibrary>::@class::A::@setter::z |
| formalParameters |
| #F11 requiredPositional isOriginDeclaration _ (nameOffset:78) (firstTokenOffset:74) (offset:78) |
| element: <testLibrary>::@class::A::@setter::z::@formalParameter::_ |
| #F12 class B (nameOffset:90) (firstTokenOffset:84) (offset:90) |
| element: <testLibrary>::@class::B |
| fields |
| #F13 hasImplicitType isOriginDeclaration x (nameOffset:113) (firstTokenOffset:113) (offset:113) |
| element: <testLibrary>::@class::B::@field::x |
| inducedGetter: #F14 |
| inducedSetter: #F15 |
| #F16 isOriginGetterSetter y (nameOffset:<null>) (firstTokenOffset:<null>) (offset:90) |
| element: <testLibrary>::@class::B::@field::y |
| #F17 isOriginGetterSetter z (nameOffset:<null>) (firstTokenOffset:<null>) (offset:90) |
| element: <testLibrary>::@class::B::@field::z |
| constructors |
| #F18 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:90) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| getters |
| #F14 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:113) |
| element: <testLibrary>::@class::B::@getter::x |
| inducingVariable: #F13 |
| #F19 hasImplicitReturnType isComplete isOriginDeclaration y (nameOffset:122) (firstTokenOffset:118) (offset:122) |
| element: <testLibrary>::@class::B::@getter::y |
| setters |
| #F15 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:113) |
| element: <testLibrary>::@class::B::@setter::x |
| inducingVariable: #F13 |
| formalParameters |
| #F20 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:113) |
| element: <testLibrary>::@class::B::@setter::x::@formalParameter::value |
| #F21 hasImplicitReturnType isComplete isOriginDeclaration z (nameOffset:139) (firstTokenOffset:135) (offset:139) |
| element: <testLibrary>::@class::B::@setter::z |
| formalParameters |
| #F22 requiredPositional hasImplicitType isOriginDeclaration _ (nameOffset:141) (firstTokenOffset:141) (offset:141) |
| element: <testLibrary>::@class::B::@setter::z::@formalParameter::_ |
| classes |
| isAbstract isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::A::@field::x |
| firstFragment: #F2 |
| type: int |
| setter: <testLibrary>::@class::A::@setter::x |
| isOriginGetterSetter y |
| reference: <testLibrary>::@class::A::@field::y |
| firstFragment: #F3 |
| type: int |
| setter: <testLibrary>::@class::A::@setter::y |
| isOriginGetterSetter z |
| reference: <testLibrary>::@class::A::@field::z |
| firstFragment: #F4 |
| type: int |
| setter: <testLibrary>::@class::A::@setter::z |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F5 |
| setters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::A::@setter::x |
| firstFragment: #F6 |
| formalParameters |
| #E0 requiredPositional _ |
| firstFragment: #F7 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::A::@field::x |
| isOriginDeclaration y |
| reference: <testLibrary>::@class::A::@setter::y |
| firstFragment: #F8 |
| formalParameters |
| #E1 requiredPositional _ |
| firstFragment: #F9 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::A::@field::y |
| isOriginDeclaration z |
| reference: <testLibrary>::@class::A::@setter::z |
| firstFragment: #F10 |
| formalParameters |
| #E2 requiredPositional _ |
| firstFragment: #F11 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::A::@field::z |
| hasNonFinalField isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F12 |
| interfaces |
| A |
| fields |
| hasImplicitType isOriginDeclaration x |
| reference: <testLibrary>::@class::B::@field::x |
| firstFragment: #F13 |
| type: int |
| getter: <testLibrary>::@class::B::@getter::x |
| setter: <testLibrary>::@class::B::@setter::x |
| isOriginGetterSetter y |
| reference: <testLibrary>::@class::B::@field::y |
| firstFragment: #F16 |
| type: int |
| getter: <testLibrary>::@class::B::@getter::y |
| isOriginGetterSetter z |
| reference: <testLibrary>::@class::B::@field::z |
| firstFragment: #F17 |
| type: int |
| setter: <testLibrary>::@class::B::@setter::z |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F18 |
| getters |
| isOriginVariable x |
| reference: <testLibrary>::@class::B::@getter::x |
| firstFragment: #F14 |
| returnType: int |
| variable: <testLibrary>::@class::B::@field::x |
| isOriginDeclaration y |
| reference: <testLibrary>::@class::B::@getter::y |
| firstFragment: #F19 |
| returnType: int |
| variable: <testLibrary>::@class::B::@field::y |
| setters |
| isOriginVariable x |
| reference: <testLibrary>::@class::B::@setter::x |
| firstFragment: #F15 |
| formalParameters |
| #E3 requiredPositional value |
| firstFragment: #F20 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::B::@field::x |
| isOriginDeclaration z |
| reference: <testLibrary>::@class::B::@setter::z |
| firstFragment: #F21 |
| formalParameters |
| #E4 requiredPositional hasImplicitType _ |
| firstFragment: #F22 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::B::@field::z |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAbstract class A (nameOffset:15) (firstTokenOffset:0) (offset:15) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@field::x |
| constructors |
| #F3 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| setters |
| #F4 isAbstract isOriginDeclaration x (nameOffset:30) (firstTokenOffset:21) (offset:30) |
| element: <testLibrary>::@class::A::@setter::x |
| formalParameters |
| #F5 requiredPositional isOriginDeclaration _ (nameOffset:36) (firstTokenOffset:32) (offset:36) |
| element: <testLibrary>::@class::A::@setter::x::@formalParameter::_ |
| #F6 isAbstract class B (nameOffset:57) (firstTokenOffset:42) (offset:57) |
| element: <testLibrary>::@class::B |
| fields |
| #F7 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:57) |
| element: <testLibrary>::@class::B::@field::x |
| constructors |
| #F8 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:57) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| setters |
| #F9 isAbstract isOriginDeclaration x (nameOffset:72) (firstTokenOffset:63) (offset:72) |
| element: <testLibrary>::@class::B::@setter::x |
| formalParameters |
| #F10 requiredPositional isOriginDeclaration _ (nameOffset:81) (firstTokenOffset:74) (offset:81) |
| element: <testLibrary>::@class::B::@setter::x::@formalParameter::_ |
| #F11 class C (nameOffset:93) (firstTokenOffset:87) (offset:93) |
| element: <testLibrary>::@class::C |
| fields |
| #F12 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:93) |
| element: <testLibrary>::@class::C::@field::x |
| constructors |
| #F13 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:93) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| getters |
| #F14 hasImplicitReturnType isComplete isOriginDeclaration x (nameOffset:119) (firstTokenOffset:115) (offset:119) |
| element: <testLibrary>::@class::C::@getter::x |
| classes |
| isAbstract isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::A::@field::x |
| firstFragment: #F2 |
| type: int |
| setter: <testLibrary>::@class::A::@setter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F3 |
| setters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::A::@setter::x |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional _ |
| firstFragment: #F5 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::A::@field::x |
| isAbstract isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F6 |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::B::@field::x |
| firstFragment: #F7 |
| type: String |
| setter: <testLibrary>::@class::B::@setter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F8 |
| setters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::B::@setter::x |
| firstFragment: #F9 |
| formalParameters |
| #E1 requiredPositional _ |
| firstFragment: #F10 |
| type: String |
| returnType: void |
| variable: <testLibrary>::@class::B::@field::x |
| isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F11 |
| interfaces |
| A |
| B |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::C::@field::x |
| firstFragment: #F12 |
| type: dynamic |
| getter: <testLibrary>::@class::C::@getter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F13 |
| getters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::C::@getter::x |
| firstFragment: #F14 |
| returnType: dynamic |
| variable: <testLibrary>::@class::C::@field::x |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAbstract class A (nameOffset:15) (firstTokenOffset:0) (offset:15) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@field::x |
| constructors |
| #F3 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| setters |
| #F4 isAbstract isOriginDeclaration x (nameOffset:30) (firstTokenOffset:21) (offset:30) |
| element: <testLibrary>::@class::A::@setter::x |
| formalParameters |
| #F5 requiredPositional isOriginDeclaration _ (nameOffset:36) (firstTokenOffset:32) (offset:36) |
| element: <testLibrary>::@class::A::@setter::x::@formalParameter::_ |
| #F6 isAbstract class B (nameOffset:57) (firstTokenOffset:42) (offset:57) |
| element: <testLibrary>::@class::B |
| fields |
| #F7 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:57) |
| element: <testLibrary>::@class::B::@field::x |
| constructors |
| #F8 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:57) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| setters |
| #F9 isAbstract isOriginDeclaration x (nameOffset:72) (firstTokenOffset:63) (offset:72) |
| element: <testLibrary>::@class::B::@setter::x |
| formalParameters |
| #F10 requiredPositional isOriginDeclaration _ (nameOffset:78) (firstTokenOffset:74) (offset:78) |
| element: <testLibrary>::@class::B::@setter::x::@formalParameter::_ |
| #F11 class C (nameOffset:90) (firstTokenOffset:84) (offset:90) |
| element: <testLibrary>::@class::C |
| fields |
| #F12 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:90) |
| element: <testLibrary>::@class::C::@field::x |
| constructors |
| #F13 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:90) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| getters |
| #F14 hasImplicitReturnType isComplete isOriginDeclaration x (nameOffset:116) (firstTokenOffset:112) (offset:116) |
| element: <testLibrary>::@class::C::@getter::x |
| classes |
| isAbstract isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::A::@field::x |
| firstFragment: #F2 |
| type: int |
| setter: <testLibrary>::@class::A::@setter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F3 |
| setters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::A::@setter::x |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional _ |
| firstFragment: #F5 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::A::@field::x |
| isAbstract isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F6 |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::B::@field::x |
| firstFragment: #F7 |
| type: int |
| setter: <testLibrary>::@class::B::@setter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F8 |
| setters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::B::@setter::x |
| firstFragment: #F9 |
| formalParameters |
| #E1 requiredPositional _ |
| firstFragment: #F10 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::B::@field::x |
| isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F11 |
| interfaces |
| A |
| B |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::C::@field::x |
| firstFragment: #F12 |
| type: int |
| getter: <testLibrary>::@class::C::@getter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F13 |
| getters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::C::@getter::x |
| firstFragment: #F14 |
| returnType: int |
| variable: <testLibrary>::@class::C::@field::x |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:23) (firstTokenOffset:17) (offset:23) |
| element: <testLibrary>::@class::A |
| typeParameters |
| #F2 T (nameOffset:25) (firstTokenOffset:25) (offset:25) |
| element: #E0 T |
| fields |
| #F3 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23) |
| element: <testLibrary>::@class::A::@field::x |
| #F4 isOriginGetterSetter y (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23) |
| element: <testLibrary>::@class::A::@field::y |
| constructors |
| #F5 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:23) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F6 isComplete isOriginDeclaration x (nameOffset:41) (firstTokenOffset:32) (offset:41) |
| element: <testLibrary>::@class::A::@getter::x |
| #F7 isComplete isOriginDeclaration y (nameOffset:69) (firstTokenOffset:54) (offset:69) |
| element: <testLibrary>::@class::A::@getter::y |
| #F8 hasExtendsClause class B (nameOffset:89) (firstTokenOffset:83) (offset:89) |
| element: <testLibrary>::@class::B |
| fields |
| #F9 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:89) |
| element: <testLibrary>::@class::B::@field::x |
| #F10 isOriginGetterSetter y (nameOffset:<null>) (firstTokenOffset:<null>) (offset:89) |
| element: <testLibrary>::@class::B::@field::y |
| constructors |
| #F11 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:89) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| getters |
| #F12 hasImplicitReturnType isComplete isOriginDeclaration x (nameOffset:114) (firstTokenOffset:110) (offset:114) |
| element: <testLibrary>::@class::B::@getter::x |
| #F13 hasImplicitReturnType isComplete isOriginDeclaration y (nameOffset:131) (firstTokenOffset:127) (offset:131) |
| element: <testLibrary>::@class::B::@getter::y |
| typeAliases |
| #F14 F (nameOffset:8) (firstTokenOffset:0) (offset:8) |
| element: <testLibrary>::@typeAlias::F |
| typeParameters |
| #F15 T (nameOffset:10) (firstTokenOffset:10) (offset:10) |
| element: #E1 T |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F2 |
| fields |
| hasEnclosingTypeParameterReference isOriginGetterSetter x |
| reference: <testLibrary>::@class::A::@field::x |
| firstFragment: #F3 |
| type: dynamic Function() |
| alias: <testLibrary>::@typeAlias::F |
| typeArguments |
| T |
| getter: <testLibrary>::@class::A::@getter::x |
| hasEnclosingTypeParameterReference isOriginGetterSetter y |
| reference: <testLibrary>::@class::A::@field::y |
| firstFragment: #F4 |
| type: List<dynamic Function()> |
| getter: <testLibrary>::@class::A::@getter::y |
| constructors |
| hasEnclosingTypeParameterReference isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F5 |
| getters |
| hasEnclosingTypeParameterReference isOriginDeclaration x |
| reference: <testLibrary>::@class::A::@getter::x |
| firstFragment: #F6 |
| returnType: dynamic Function() |
| alias: <testLibrary>::@typeAlias::F |
| typeArguments |
| T |
| variable: <testLibrary>::@class::A::@field::x |
| hasEnclosingTypeParameterReference isOriginDeclaration y |
| reference: <testLibrary>::@class::A::@getter::y |
| firstFragment: #F7 |
| returnType: List<dynamic Function()> |
| variable: <testLibrary>::@class::A::@field::y |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F8 |
| supertype: A<int> |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::B::@field::x |
| firstFragment: #F9 |
| type: dynamic Function() |
| alias: <testLibrary>::@typeAlias::F |
| typeArguments |
| int |
| getter: <testLibrary>::@class::B::@getter::x |
| isOriginGetterSetter y |
| reference: <testLibrary>::@class::B::@field::y |
| firstFragment: #F10 |
| type: List<dynamic Function()> |
| getter: <testLibrary>::@class::B::@getter::y |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F11 |
| superConstructor: SubstitutedConstructorElementImpl |
| baseElement: <testLibrary>::@class::A::@constructor::new |
| substitution: {T: int} |
| getters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::B::@getter::x |
| firstFragment: #F12 |
| returnType: dynamic Function() |
| alias: <testLibrary>::@typeAlias::F |
| typeArguments |
| int |
| variable: <testLibrary>::@class::B::@field::x |
| isOriginDeclaration y |
| reference: <testLibrary>::@class::B::@getter::y |
| firstFragment: #F13 |
| returnType: List<dynamic Function()> |
| variable: <testLibrary>::@class::B::@field::y |
| typeAliases |
| isSimplyBounded F |
| reference: <testLibrary>::@typeAlias::F |
| firstFragment: #F14 |
| typeParameters |
| #E1 T |
| firstFragment: #F15 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAbstract class A (nameOffset:15) (firstTokenOffset:0) (offset:15) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@field::x |
| constructors |
| #F3 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F4 isAbstract isOriginDeclaration x (nameOffset:29) (firstTokenOffset:21) (offset:29) |
| element: <testLibrary>::@class::A::@getter::x |
| setters |
| #F5 isAbstract isOriginDeclaration x (nameOffset:43) (firstTokenOffset:34) (offset:43) |
| element: <testLibrary>::@class::A::@setter::x |
| formalParameters |
| #F6 requiredPositional isExplicitlyCovariant isOriginDeclaration _ (nameOffset:59) (firstTokenOffset:45) (offset:59) |
| element: <testLibrary>::@class::A::@setter::x::@formalParameter::_ |
| #F7 class B (nameOffset:71) (firstTokenOffset:65) (offset:71) |
| element: <testLibrary>::@class::B |
| fields |
| #F8 isOriginDeclaration x (nameOffset:94) (firstTokenOffset:94) (offset:94) |
| element: <testLibrary>::@class::B::@field::x |
| inducedGetter: #F9 |
| inducedSetter: #F10 |
| constructors |
| #F11 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:71) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| getters |
| #F9 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:94) |
| element: <testLibrary>::@class::B::@getter::x |
| inducingVariable: #F8 |
| setters |
| #F10 isComplete isOriginVariable x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:94) |
| element: <testLibrary>::@class::B::@setter::x |
| inducingVariable: #F8 |
| formalParameters |
| #F12 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:94) |
| element: <testLibrary>::@class::B::@setter::x::@formalParameter::value |
| classes |
| isAbstract isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::A::@field::x |
| firstFragment: #F2 |
| type: num |
| getter: <testLibrary>::@class::A::@getter::x |
| setter: <testLibrary>::@class::A::@setter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F3 |
| getters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::A::@getter::x |
| firstFragment: #F4 |
| returnType: num |
| variable: <testLibrary>::@class::A::@field::x |
| setters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::A::@setter::x |
| firstFragment: #F5 |
| formalParameters |
| #E0 requiredPositional isCovariant _ |
| firstFragment: #F6 |
| type: num |
| returnType: void |
| variable: <testLibrary>::@class::A::@field::x |
| hasNonFinalField isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F7 |
| interfaces |
| A |
| fields |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::B::@field::x |
| firstFragment: #F8 |
| type: int |
| getter: <testLibrary>::@class::B::@getter::x |
| setter: <testLibrary>::@class::B::@setter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F11 |
| getters |
| isOriginVariable x |
| reference: <testLibrary>::@class::B::@getter::x |
| firstFragment: #F9 |
| returnType: int |
| variable: <testLibrary>::@class::B::@field::x |
| setters |
| isOriginVariable x |
| reference: <testLibrary>::@class::B::@setter::x |
| firstFragment: #F10 |
| formalParameters |
| #E1 requiredPositional isCovariant value |
| firstFragment: #F12 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::B::@field::x |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAbstract class A (nameOffset:15) (firstTokenOffset:0) (offset:15) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@field::x |
| constructors |
| #F3 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F4 isAbstract isOriginDeclaration x (nameOffset:29) (firstTokenOffset:21) (offset:29) |
| element: <testLibrary>::@class::A::@getter::x |
| setters |
| #F5 isAbstract isOriginDeclaration x (nameOffset:43) (firstTokenOffset:34) (offset:43) |
| element: <testLibrary>::@class::A::@setter::x |
| formalParameters |
| #F6 requiredPositional isExplicitlyCovariant isOriginDeclaration _ (nameOffset:59) (firstTokenOffset:45) (offset:59) |
| element: <testLibrary>::@class::A::@setter::x::@formalParameter::_ |
| #F7 class B (nameOffset:71) (firstTokenOffset:65) (offset:71) |
| element: <testLibrary>::@class::B |
| fields |
| #F8 isOriginGetterSetter x (nameOffset:<null>) (firstTokenOffset:<null>) (offset:71) |
| element: <testLibrary>::@class::B::@field::x |
| constructors |
| #F9 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:71) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| setters |
| #F10 hasImplicitReturnType isComplete isOriginDeclaration x (nameOffset:94) (firstTokenOffset:90) (offset:94) |
| element: <testLibrary>::@class::B::@setter::x |
| formalParameters |
| #F11 requiredPositional isOriginDeclaration _ (nameOffset:100) (firstTokenOffset:96) (offset:100) |
| element: <testLibrary>::@class::B::@setter::x::@formalParameter::_ |
| classes |
| isAbstract isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::A::@field::x |
| firstFragment: #F2 |
| type: num |
| getter: <testLibrary>::@class::A::@getter::x |
| setter: <testLibrary>::@class::A::@setter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F3 |
| getters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::A::@getter::x |
| firstFragment: #F4 |
| returnType: num |
| variable: <testLibrary>::@class::A::@field::x |
| setters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::A::@setter::x |
| firstFragment: #F5 |
| formalParameters |
| #E0 requiredPositional isCovariant _ |
| firstFragment: #F6 |
| type: num |
| returnType: void |
| variable: <testLibrary>::@class::A::@field::x |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F7 |
| interfaces |
| A |
| fields |
| isOriginGetterSetter x |
| reference: <testLibrary>::@class::B::@field::x |
| firstFragment: #F8 |
| type: int |
| setter: <testLibrary>::@class::B::@setter::x |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F9 |
| setters |
| isOriginDeclaration x |
| reference: <testLibrary>::@class::B::@setter::x |
| firstFragment: #F10 |
| formalParameters |
| #E1 requiredPositional isCovariant _ |
| firstFragment: #F11 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::B::@field::x |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 hasImplicitType hasInitializer isOriginDeclaration t1 (nameOffset:16) (firstTokenOffset:16) (offset:16) |
| element: <testLibrary>::@class::A::@field::t1 |
| inducedGetter: #F3 |
| inducedSetter: #F4 |
| #F5 hasImplicitType hasInitializer isOriginDeclaration t2 (nameOffset:30) (firstTokenOffset:30) (offset:30) |
| element: <testLibrary>::@class::A::@field::t2 |
| inducedGetter: #F6 |
| inducedSetter: #F7 |
| #F8 hasImplicitType hasInitializer isOriginDeclaration t3 (nameOffset:46) (firstTokenOffset:46) (offset:46) |
| element: <testLibrary>::@class::A::@field::t3 |
| inducedGetter: #F9 |
| inducedSetter: #F10 |
| constructors |
| #F11 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F3 isComplete isOriginVariable t1 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::A::@getter::t1 |
| inducingVariable: #F2 |
| #F6 isComplete isOriginVariable t2 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:30) |
| element: <testLibrary>::@class::A::@getter::t2 |
| inducingVariable: #F5 |
| #F9 isComplete isOriginVariable t3 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:46) |
| element: <testLibrary>::@class::A::@getter::t3 |
| inducingVariable: #F8 |
| setters |
| #F4 isComplete isOriginVariable t1 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::A::@setter::t1 |
| inducingVariable: #F2 |
| formalParameters |
| #F12 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::A::@setter::t1::@formalParameter::value |
| #F7 isComplete isOriginVariable t2 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:30) |
| element: <testLibrary>::@class::A::@setter::t2 |
| inducingVariable: #F5 |
| formalParameters |
| #F13 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:30) |
| element: <testLibrary>::@class::A::@setter::t2::@formalParameter::value |
| #F10 isComplete isOriginVariable t3 (nameOffset:<null>) (firstTokenOffset:<null>) (offset:46) |
| element: <testLibrary>::@class::A::@setter::t3 |
| inducingVariable: #F8 |
| formalParameters |
| #F14 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:46) |
| element: <testLibrary>::@class::A::@setter::t3::@formalParameter::value |
| classes |
| hasNonFinalField isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| hasImplicitType hasInitializer isOriginDeclaration isTypeInferredFromInitializer t1 |
| reference: <testLibrary>::@class::A::@field::t1 |
| firstFragment: #F2 |
| type: int |
| getter: <testLibrary>::@class::A::@getter::t1 |
| setter: <testLibrary>::@class::A::@setter::t1 |
| hasImplicitType hasInitializer isOriginDeclaration isTypeInferredFromInitializer t2 |
| reference: <testLibrary>::@class::A::@field::t2 |
| firstFragment: #F5 |
| type: double |
| getter: <testLibrary>::@class::A::@getter::t2 |
| setter: <testLibrary>::@class::A::@setter::t2 |
| hasImplicitType hasInitializer isOriginDeclaration isTypeInferredFromInitializer t3 |
| reference: <testLibrary>::@class::A::@field::t3 |
| firstFragment: #F8 |
| type: dynamic |
| getter: <testLibrary>::@class::A::@getter::t3 |
| setter: <testLibrary>::@class::A::@setter::t3 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F11 |
| getters |
| isOriginVariable t1 |
| reference: <testLibrary>::@class::A::@getter::t1 |
| firstFragment: #F3 |
| returnType: int |
| variable: <testLibrary>::@class::A::@field::t1 |
| isOriginVariable t2 |
| reference: <testLibrary>::@class::A::@getter::t2 |
| firstFragment: #F6 |
| returnType: double |
| variable: <testLibrary>::@class::A::@field::t2 |
| isOriginVariable t3 |
| reference: <testLibrary>::@class::A::@getter::t3 |
| firstFragment: #F9 |
| returnType: dynamic |
| variable: <testLibrary>::@class::A::@field::t3 |
| setters |
| isOriginVariable t1 |
| reference: <testLibrary>::@class::A::@setter::t1 |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F12 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::A::@field::t1 |
| isOriginVariable t2 |
| reference: <testLibrary>::@class::A::@setter::t2 |
| firstFragment: #F7 |
| formalParameters |
| #E1 requiredPositional value |
| firstFragment: #F13 |
| type: double |
| returnType: void |
| variable: <testLibrary>::@class::A::@field::t2 |
| isOriginVariable t3 |
| reference: <testLibrary>::@class::A::@setter::t3 |
| firstFragment: #F10 |
| formalParameters |
| #E2 requiredPositional value |
| firstFragment: #F14 |
| type: dynamic |
| returnType: void |
| variable: <testLibrary>::@class::A::@field::t3 |
| '''); |
| } |
| |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| constructors |
| #F2 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| methods |
| #F3 isComplete isOriginDeclaration m (nameOffset:17) (firstTokenOffset:12) (offset:17) |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| #F4 requiredPositional isOriginDeclaration a (nameOffset:23) (firstTokenOffset:19) (offset:23) |
| element: <testLibrary>::@class::A::@method::m::@formalParameter::a |
| #F5 hasExtendsClause class B (nameOffset:37) (firstTokenOffset:31) (offset:37) |
| element: <testLibrary>::@class::B |
| constructors |
| #F6 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:37) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| methods |
| #F7 isComplete isOriginDeclaration m (nameOffset:58) (firstTokenOffset:53) (offset:58) |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| #F8 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:60) (firstTokenOffset:60) (offset:60) |
| element: <testLibrary>::@class::B::@method::m::@formalParameter::a |
| #F9 requiredPositional hasImplicitType isOriginDeclaration b (nameOffset:63) (firstTokenOffset:63) (offset:63) |
| element: <testLibrary>::@class::B::@method::m::@formalParameter::b |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F2 |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional a |
| firstFragment: #F4 |
| type: int |
| returnType: void |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F5 |
| supertype: A |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F6 |
| superConstructor: <testLibrary>::@class::A::@constructor::new |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: #F7 |
| formalParameters |
| #E1 requiredPositional hasImplicitType a |
| firstFragment: #F8 |
| type: int |
| #E2 requiredPositional hasImplicitType b |
| firstFragment: #F9 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| constructors |
| #F2 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| methods |
| #F3 isComplete isOriginDeclaration m (nameOffset:17) (firstTokenOffset:12) (offset:17) |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| #F4 requiredPositional isOriginDeclaration a (nameOffset:23) (firstTokenOffset:19) (offset:23) |
| element: <testLibrary>::@class::A::@method::m::@formalParameter::a |
| #F5 class B (nameOffset:37) (firstTokenOffset:31) (offset:37) |
| element: <testLibrary>::@class::B |
| constructors |
| #F6 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:37) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| methods |
| #F7 isComplete isOriginDeclaration m (nameOffset:48) (firstTokenOffset:43) (offset:48) |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| #F8 requiredPositional isOriginDeclaration a (nameOffset:57) (firstTokenOffset:50) (offset:57) |
| element: <testLibrary>::@class::B::@method::m::@formalParameter::a |
| #F9 hasExtendsClause class C (nameOffset:71) (firstTokenOffset:65) (offset:71) |
| element: <testLibrary>::@class::C |
| constructors |
| #F10 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:71) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| methods |
| #F11 hasImplicitReturnType isComplete isOriginDeclaration m (nameOffset:100) (firstTokenOffset:100) (offset:100) |
| element: <testLibrary>::@class::C::@method::m |
| formalParameters |
| #F12 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:102) (firstTokenOffset:102) (offset:102) |
| element: <testLibrary>::@class::C::@method::m::@formalParameter::a |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F2 |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional a |
| firstFragment: #F4 |
| type: int |
| returnType: void |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F5 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F6 |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: #F7 |
| formalParameters |
| #E1 requiredPositional a |
| firstFragment: #F8 |
| type: String |
| returnType: void |
| isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F9 |
| supertype: A |
| interfaces |
| B |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F10 |
| superConstructor: <testLibrary>::@class::A::@constructor::new |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::C::@method::m |
| firstFragment: #F11 |
| typeInferenceError: overrideNoCombinedSuperSignature |
| formalParameters |
| #E2 requiredPositional hasImplicitType a |
| firstFragment: #F12 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAbstract class A (nameOffset:15) (firstTokenOffset:0) (offset:15) |
| element: <testLibrary>::@class::A |
| constructors |
| #F2 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| methods |
| #F3 isAbstract isOriginDeclaration foo (nameOffset:25) (firstTokenOffset:21) (offset:25) |
| element: <testLibrary>::@class::A::@method::foo |
| formalParameters |
| #F4 requiredPositional isOriginDeclaration x (nameOffset:33) (firstTokenOffset:29) (offset:33) |
| element: <testLibrary>::@class::A::@method::foo::@formalParameter::x |
| #F5 isAbstract class B (nameOffset:55) (firstTokenOffset:40) (offset:55) |
| element: <testLibrary>::@class::B |
| constructors |
| #F6 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:55) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| methods |
| #F7 isAbstract isOriginDeclaration foo (nameOffset:68) (firstTokenOffset:61) (offset:68) |
| element: <testLibrary>::@class::B::@method::foo |
| formalParameters |
| #F8 requiredPositional isOriginDeclaration x (nameOffset:76) (firstTokenOffset:72) (offset:76) |
| element: <testLibrary>::@class::B::@method::foo::@formalParameter::x |
| #F9 isAbstract class C (nameOffset:98) (firstTokenOffset:83) (offset:98) |
| element: <testLibrary>::@class::C |
| constructors |
| #F10 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:98) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| methods |
| #F11 isAbstract isOriginDeclaration foo (nameOffset:126) (firstTokenOffset:120) (offset:126) |
| element: <testLibrary>::@class::C::@method::foo |
| formalParameters |
| #F12 requiredPositional hasImplicitType isOriginDeclaration x (nameOffset:130) (firstTokenOffset:130) (offset:130) |
| element: <testLibrary>::@class::C::@method::foo::@formalParameter::x |
| classes |
| isAbstract isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F2 |
| methods |
| isOriginDeclaration foo |
| reference: <testLibrary>::@class::A::@method::foo |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional x |
| firstFragment: #F4 |
| type: int |
| returnType: int |
| isAbstract isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F5 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F6 |
| methods |
| isOriginDeclaration foo |
| reference: <testLibrary>::@class::B::@method::foo |
| firstFragment: #F7 |
| formalParameters |
| #E1 requiredPositional x |
| firstFragment: #F8 |
| type: int |
| returnType: double |
| isAbstract isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F9 |
| interfaces |
| A |
| B |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F10 |
| methods |
| isOriginDeclaration foo |
| reference: <testLibrary>::@class::C::@method::foo |
| firstFragment: #F11 |
| typeInferenceError: overrideNoCombinedSuperSignature |
| formalParameters |
| #E2 requiredPositional hasImplicitType x |
| firstFragment: #F12 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| constructors |
| #F2 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| methods |
| #F3 isComplete isOriginDeclaration m (nameOffset:16) (firstTokenOffset:12) (offset:16) |
| element: <testLibrary>::@class::A::@method::m |
| #F4 class B (nameOffset:31) (firstTokenOffset:25) (offset:31) |
| element: <testLibrary>::@class::B |
| constructors |
| #F5 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:31) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| methods |
| #F6 isComplete isOriginDeclaration m (nameOffset:44) (firstTokenOffset:37) (offset:44) |
| element: <testLibrary>::@class::B::@method::m |
| #F7 hasExtendsClause class C (nameOffset:59) (firstTokenOffset:53) (offset:59) |
| element: <testLibrary>::@class::C |
| constructors |
| #F8 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:59) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| methods |
| #F9 hasImplicitReturnType isComplete isOriginDeclaration m (nameOffset:88) (firstTokenOffset:88) (offset:88) |
| element: <testLibrary>::@class::C::@method::m |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F2 |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: #F3 |
| returnType: int |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F4 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F5 |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: #F6 |
| returnType: String |
| isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F7 |
| supertype: A |
| interfaces |
| B |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F8 |
| superConstructor: <testLibrary>::@class::A::@constructor::new |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::C::@method::m |
| firstFragment: #F9 |
| typeInferenceError: overrideNoCombinedSuperSignature |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| typeParameters |
| #F2 T (nameOffset:8) (firstTokenOffset:8) (offset:8) |
| element: #E0 T |
| constructors |
| #F3 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| methods |
| #F4 isComplete isOriginDeclaration m (nameOffset:20) (firstTokenOffset:15) (offset:20) |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| #F5 requiredPositional isOriginDeclaration a (nameOffset:24) (firstTokenOffset:22) (offset:24) |
| element: <testLibrary>::@class::A::@method::m::@formalParameter::a |
| #F6 class B (nameOffset:38) (firstTokenOffset:32) (offset:38) |
| element: <testLibrary>::@class::B |
| typeParameters |
| #F7 E (nameOffset:40) (firstTokenOffset:40) (offset:40) |
| element: #E1 E |
| constructors |
| #F8 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:38) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| methods |
| #F9 isComplete isOriginDeclaration m (nameOffset:52) (firstTokenOffset:47) (offset:52) |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| #F10 requiredPositional isOriginDeclaration a (nameOffset:56) (firstTokenOffset:54) (offset:56) |
| element: <testLibrary>::@class::B::@method::m::@formalParameter::a |
| #F11 hasExtendsClause class C (nameOffset:70) (firstTokenOffset:64) (offset:70) |
| element: <testLibrary>::@class::C |
| constructors |
| #F12 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:70) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| methods |
| #F13 hasImplicitReturnType isComplete isOriginDeclaration m (nameOffset:112) (firstTokenOffset:112) (offset:112) |
| element: <testLibrary>::@class::C::@method::m |
| formalParameters |
| #F14 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:114) (firstTokenOffset:114) (offset:114) |
| element: <testLibrary>::@class::C::@method::m::@formalParameter::a |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| typeParameters |
| #E0 T |
| firstFragment: #F2 |
| constructors |
| hasEnclosingTypeParameterReference isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F3 |
| methods |
| hasEnclosingTypeParameterReference isOriginDeclaration m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: #F4 |
| formalParameters |
| #E2 requiredPositional a |
| firstFragment: #F5 |
| type: T |
| returnType: void |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F6 |
| typeParameters |
| #E1 E |
| firstFragment: #F7 |
| constructors |
| hasEnclosingTypeParameterReference isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F8 |
| methods |
| hasEnclosingTypeParameterReference isOriginDeclaration m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: #F9 |
| formalParameters |
| #E3 requiredPositional a |
| firstFragment: #F10 |
| type: E |
| returnType: void |
| isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F11 |
| supertype: A<int> |
| interfaces |
| B<double> |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F12 |
| superConstructor: SubstitutedConstructorElementImpl |
| baseElement: <testLibrary>::@class::A::@constructor::new |
| substitution: {T: int} |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::C::@method::m |
| firstFragment: #F13 |
| typeInferenceError: overrideNoCombinedSuperSignature |
| formalParameters |
| #E4 requiredPositional hasImplicitType a |
| firstFragment: #F14 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| typeParameters |
| #F2 K (nameOffset:8) (firstTokenOffset:8) (offset:8) |
| element: #E0 K |
| #F3 V (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: #E1 V |
| constructors |
| #F4 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| methods |
| #F5 isComplete isOriginDeclaration m (nameOffset:20) (firstTokenOffset:18) (offset:20) |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| #F6 requiredPositional isOriginDeclaration a (nameOffset:24) (firstTokenOffset:22) (offset:24) |
| element: <testLibrary>::@class::A::@method::m::@formalParameter::a |
| #F7 class B (nameOffset:38) (firstTokenOffset:32) (offset:38) |
| element: <testLibrary>::@class::B |
| typeParameters |
| #F8 T (nameOffset:40) (firstTokenOffset:40) (offset:40) |
| element: #E2 T |
| constructors |
| #F9 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:38) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| methods |
| #F10 isComplete isOriginDeclaration m (nameOffset:49) (firstTokenOffset:47) (offset:49) |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| #F11 requiredPositional isOriginDeclaration a (nameOffset:55) (firstTokenOffset:51) (offset:55) |
| element: <testLibrary>::@class::B::@method::m::@formalParameter::a |
| #F12 hasExtendsClause class C (nameOffset:69) (firstTokenOffset:63) (offset:69) |
| element: <testLibrary>::@class::C |
| constructors |
| #F13 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:69) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| methods |
| #F14 hasImplicitReturnType isComplete isOriginDeclaration m (nameOffset:119) (firstTokenOffset:119) (offset:119) |
| element: <testLibrary>::@class::C::@method::m |
| formalParameters |
| #F15 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:121) (firstTokenOffset:121) (offset:121) |
| element: <testLibrary>::@class::C::@method::m::@formalParameter::a |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| typeParameters |
| #E0 K |
| firstFragment: #F2 |
| #E1 V |
| firstFragment: #F3 |
| constructors |
| hasEnclosingTypeParameterReference isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F4 |
| methods |
| hasEnclosingTypeParameterReference isOriginDeclaration m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: #F5 |
| formalParameters |
| #E3 requiredPositional a |
| firstFragment: #F6 |
| type: K |
| returnType: V |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F7 |
| typeParameters |
| #E2 T |
| firstFragment: #F8 |
| constructors |
| hasEnclosingTypeParameterReference isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F9 |
| methods |
| hasEnclosingTypeParameterReference isOriginDeclaration m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: #F10 |
| formalParameters |
| #E4 requiredPositional a |
| firstFragment: #F11 |
| type: int |
| returnType: T |
| isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F12 |
| supertype: A<int, String> |
| interfaces |
| B<double> |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F13 |
| superConstructor: SubstitutedConstructorElementImpl |
| baseElement: <testLibrary>::@class::A::@constructor::new |
| substitution: {K: int, V: String} |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::C::@method::m |
| firstFragment: #F14 |
| typeInferenceError: overrideNoCombinedSuperSignature |
| formalParameters |
| #E5 requiredPositional hasImplicitType a |
| firstFragment: #F15 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| constructors |
| #F2 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| methods |
| #F3 isComplete isOriginDeclaration m (nameOffset:17) (firstTokenOffset:12) (offset:17) |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| #F4 requiredPositional isOriginDeclaration a (nameOffset:23) (firstTokenOffset:19) (offset:23) |
| element: <testLibrary>::@class::A::@method::m::@formalParameter::a |
| #F5 hasExtendsClause class B (nameOffset:37) (firstTokenOffset:31) (offset:37) |
| element: <testLibrary>::@class::B |
| constructors |
| #F6 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:37) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| methods |
| #F7 hasImplicitReturnType isComplete isOriginDeclaration m (nameOffset:53) (firstTokenOffset:53) (offset:53) |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| #F8 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:55) (firstTokenOffset:55) (offset:55) |
| element: <testLibrary>::@class::B::@method::m::@formalParameter::a |
| #F9 optionalNamed hasImplicitType isOriginDeclaration b (nameOffset:59) (firstTokenOffset:59) (offset:59) |
| element: <testLibrary>::@class::B::@method::m::@formalParameter::b |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F2 |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional a |
| firstFragment: #F4 |
| type: int |
| returnType: void |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F5 |
| supertype: A |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F6 |
| superConstructor: <testLibrary>::@class::A::@constructor::new |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: #F7 |
| formalParameters |
| #E1 requiredPositional hasImplicitType a |
| firstFragment: #F8 |
| type: int |
| #E2 optionalNamed hasImplicitType b |
| firstFragment: #F9 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| constructors |
| #F2 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| methods |
| #F3 isComplete isOriginDeclaration m (nameOffset:17) (firstTokenOffset:12) (offset:17) |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| #F4 requiredPositional isOriginDeclaration a (nameOffset:23) (firstTokenOffset:19) (offset:23) |
| element: <testLibrary>::@class::A::@method::m::@formalParameter::a |
| #F5 hasExtendsClause class B (nameOffset:37) (firstTokenOffset:31) (offset:37) |
| element: <testLibrary>::@class::B |
| constructors |
| #F6 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:37) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| methods |
| #F7 hasImplicitReturnType isComplete isOriginDeclaration m (nameOffset:53) (firstTokenOffset:53) (offset:53) |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| #F8 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:55) (firstTokenOffset:55) (offset:55) |
| element: <testLibrary>::@class::B::@method::m::@formalParameter::a |
| #F9 optionalPositional hasImplicitType isOriginDeclaration b (nameOffset:59) (firstTokenOffset:59) (offset:59) |
| element: <testLibrary>::@class::B::@method::m::@formalParameter::b |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F2 |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional a |
| firstFragment: #F4 |
| type: int |
| returnType: void |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F5 |
| supertype: A |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F6 |
| superConstructor: <testLibrary>::@class::A::@constructor::new |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: #F7 |
| formalParameters |
| #E1 requiredPositional hasImplicitType a |
| firstFragment: #F8 |
| type: int |
| #E2 optionalPositional hasImplicitType b |
| firstFragment: #F9 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| constructors |
| #F2 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| methods |
| #F3 hasImplicitReturnType isComplete isOriginDeclaration m (nameOffset:12) (firstTokenOffset:12) (offset:12) |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| #F4 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:14) (firstTokenOffset:14) (offset:14) |
| element: <testLibrary>::@class::A::@method::m::@formalParameter::a |
| #F5 hasExtendsClause class B (nameOffset:28) (firstTokenOffset:22) (offset:28) |
| element: <testLibrary>::@class::B |
| constructors |
| #F6 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:28) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| methods |
| #F7 hasImplicitReturnType isComplete isOriginDeclaration m (nameOffset:44) (firstTokenOffset:44) (offset:44) |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| #F8 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:46) (firstTokenOffset:46) (offset:46) |
| element: <testLibrary>::@class::B::@method::m::@formalParameter::a |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F2 |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional hasImplicitType a |
| firstFragment: #F4 |
| type: dynamic |
| returnType: dynamic |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F5 |
| supertype: A |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F6 |
| superConstructor: <testLibrary>::@class::A::@constructor::new |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: #F7 |
| formalParameters |
| #E1 requiredPositional hasImplicitType a |
| firstFragment: #F8 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| constructors |
| #F2 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| methods |
| #F3 isComplete isOriginDeclaration foo (nameOffset:16) (firstTokenOffset:12) (offset:16) |
| element: <testLibrary>::@class::A::@method::foo |
| formalParameters |
| #F4 requiredPositional isOriginDeclaration a (nameOffset:27) (firstTokenOffset:20) (offset:27) |
| element: <testLibrary>::@class::A::@method::foo::@formalParameter::a |
| #F5 hasExtendsClause class B (nameOffset:47) (firstTokenOffset:41) (offset:47) |
| element: <testLibrary>::@class::B |
| constructors |
| #F6 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:47) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| methods |
| #F7 hasImplicitReturnType isComplete isOriginDeclaration m (nameOffset:63) (firstTokenOffset:63) (offset:63) |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| #F8 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:65) (firstTokenOffset:65) (offset:65) |
| element: <testLibrary>::@class::B::@method::m::@formalParameter::a |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F2 |
| methods |
| isOriginDeclaration foo |
| reference: <testLibrary>::@class::A::@method::foo |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional a |
| firstFragment: #F4 |
| type: String |
| returnType: int |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F5 |
| supertype: A |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F6 |
| superConstructor: <testLibrary>::@class::A::@constructor::new |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: #F7 |
| formalParameters |
| #E1 requiredPositional hasImplicitType a |
| firstFragment: #F8 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| fields |
| #F2 hasInitializer isOriginDeclaration m (nameOffset:16) (firstTokenOffset:16) (offset:16) |
| element: <testLibrary>::@class::A::@field::m |
| inducedGetter: #F3 |
| inducedSetter: #F4 |
| constructors |
| #F5 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| getters |
| #F3 isComplete isOriginVariable m (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::A::@getter::m |
| inducingVariable: #F2 |
| setters |
| #F4 isComplete isOriginVariable m (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::A::@setter::m |
| inducingVariable: #F2 |
| formalParameters |
| #F6 requiredPositional value (nameOffset:<null>) (firstTokenOffset:<null>) (offset:16) |
| element: <testLibrary>::@class::A::@setter::m::@formalParameter::value |
| #F7 hasExtendsClause class B (nameOffset:32) (firstTokenOffset:26) (offset:32) |
| element: <testLibrary>::@class::B |
| constructors |
| #F8 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:32) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| methods |
| #F9 hasImplicitReturnType isComplete isOriginDeclaration m (nameOffset:48) (firstTokenOffset:48) (offset:48) |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| #F10 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:50) (firstTokenOffset:50) (offset:50) |
| element: <testLibrary>::@class::B::@method::m::@formalParameter::a |
| classes |
| hasNonFinalField isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| fields |
| hasInitializer isOriginDeclaration m |
| reference: <testLibrary>::@class::A::@field::m |
| firstFragment: #F2 |
| type: int |
| getter: <testLibrary>::@class::A::@getter::m |
| setter: <testLibrary>::@class::A::@setter::m |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F5 |
| getters |
| isOriginVariable m |
| reference: <testLibrary>::@class::A::@getter::m |
| firstFragment: #F3 |
| returnType: int |
| variable: <testLibrary>::@class::A::@field::m |
| setters |
| isOriginVariable m |
| reference: <testLibrary>::@class::A::@setter::m |
| firstFragment: #F4 |
| formalParameters |
| #E0 requiredPositional value |
| firstFragment: #F6 |
| type: int |
| returnType: void |
| variable: <testLibrary>::@class::A::@field::m |
| hasNonFinalField isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F7 |
| supertype: A |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F8 |
| superConstructor: <testLibrary>::@class::A::@constructor::new |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: #F9 |
| formalParameters |
| #E1 requiredPositional hasImplicitType a |
| firstFragment: #F10 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| typeParameters |
| #F2 K (nameOffset:8) (firstTokenOffset:8) (offset:8) |
| element: #E0 K |
| #F3 V (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: #E1 V |
| constructors |
| #F4 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| methods |
| #F5 isComplete isOriginDeclaration m (nameOffset:20) (firstTokenOffset:18) (offset:20) |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| #F6 requiredPositional isOriginDeclaration a (nameOffset:24) (firstTokenOffset:22) (offset:24) |
| element: <testLibrary>::@class::A::@method::m::@formalParameter::a |
| #F7 hasExtendsClause class B (nameOffset:38) (firstTokenOffset:32) (offset:38) |
| element: <testLibrary>::@class::B |
| typeParameters |
| #F8 T (nameOffset:40) (firstTokenOffset:40) (offset:40) |
| element: #E2 T |
| constructors |
| #F9 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:38) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| #F10 hasExtendsClause class C (nameOffset:70) (firstTokenOffset:64) (offset:70) |
| element: <testLibrary>::@class::C |
| constructors |
| #F11 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:70) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| methods |
| #F12 hasImplicitReturnType isComplete isOriginDeclaration m (nameOffset:94) (firstTokenOffset:94) (offset:94) |
| element: <testLibrary>::@class::C::@method::m |
| formalParameters |
| #F13 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:96) (firstTokenOffset:96) (offset:96) |
| element: <testLibrary>::@class::C::@method::m::@formalParameter::a |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| typeParameters |
| #E0 K |
| firstFragment: #F2 |
| #E1 V |
| firstFragment: #F3 |
| constructors |
| hasEnclosingTypeParameterReference isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F4 |
| methods |
| hasEnclosingTypeParameterReference isOriginDeclaration m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: #F5 |
| formalParameters |
| #E3 requiredPositional a |
| firstFragment: #F6 |
| type: K |
| returnType: V |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F7 |
| typeParameters |
| #E2 T |
| firstFragment: #F8 |
| supertype: A<int, T> |
| constructors |
| hasEnclosingTypeParameterReference isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F9 |
| superConstructor: SubstitutedConstructorElementImpl |
| baseElement: <testLibrary>::@class::A::@constructor::new |
| substitution: {K: int, V: T} |
| isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F10 |
| supertype: B<String> |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F11 |
| superConstructor: SubstitutedConstructorElementImpl |
| baseElement: <testLibrary>::@class::B::@constructor::new |
| substitution: {T: String} |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::C::@method::m |
| firstFragment: #F12 |
| formalParameters |
| #E4 requiredPositional hasImplicitType a |
| firstFragment: #F13 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| constructors |
| #F2 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| methods |
| #F3 isComplete isOriginDeclaration m (nameOffset:19) (firstTokenOffset:12) (offset:19) |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| #F4 requiredPositional isOriginDeclaration a (nameOffset:25) (firstTokenOffset:21) (offset:25) |
| element: <testLibrary>::@class::A::@method::m::@formalParameter::a |
| #F5 hasExtendsClause class B (nameOffset:39) (firstTokenOffset:33) (offset:39) |
| element: <testLibrary>::@class::B |
| constructors |
| #F6 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:39) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| methods |
| #F7 hasImplicitReturnType isComplete isOriginDeclaration m (nameOffset:55) (firstTokenOffset:55) (offset:55) |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| #F8 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:57) (firstTokenOffset:57) (offset:57) |
| element: <testLibrary>::@class::B::@method::m::@formalParameter::a |
| #F9 hasExtendsClause class C (nameOffset:71) (firstTokenOffset:65) (offset:71) |
| element: <testLibrary>::@class::C |
| constructors |
| #F10 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:71) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| methods |
| #F11 hasImplicitReturnType isComplete isOriginDeclaration m (nameOffset:87) (firstTokenOffset:87) (offset:87) |
| element: <testLibrary>::@class::C::@method::m |
| formalParameters |
| #F12 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:89) (firstTokenOffset:89) (offset:89) |
| element: <testLibrary>::@class::C::@method::m::@formalParameter::a |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F2 |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional a |
| firstFragment: #F4 |
| type: int |
| returnType: String |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F5 |
| supertype: A |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F6 |
| superConstructor: <testLibrary>::@class::A::@constructor::new |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: #F7 |
| formalParameters |
| #E1 requiredPositional hasImplicitType a |
| firstFragment: #F8 |
| type: int |
| returnType: String |
| isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F9 |
| supertype: B |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F10 |
| superConstructor: <testLibrary>::@class::B::@constructor::new |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::C::@method::m |
| firstFragment: #F11 |
| formalParameters |
| #E2 requiredPositional hasImplicitType a |
| firstFragment: #F12 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| constructors |
| #F2 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| methods |
| #F3 isComplete isOriginDeclaration m (nameOffset:19) (firstTokenOffset:12) (offset:19) |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| #F4 requiredPositional isOriginDeclaration a (nameOffset:25) (firstTokenOffset:21) (offset:25) |
| element: <testLibrary>::@class::A::@method::m::@formalParameter::a |
| #F5 class B (nameOffset:39) (firstTokenOffset:33) (offset:39) |
| element: <testLibrary>::@class::B |
| constructors |
| #F6 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:39) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| methods |
| #F7 hasImplicitReturnType isComplete isOriginDeclaration m (nameOffset:58) (firstTokenOffset:58) (offset:58) |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| #F8 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:60) (firstTokenOffset:60) (offset:60) |
| element: <testLibrary>::@class::B::@method::m::@formalParameter::a |
| #F9 hasExtendsClause class C (nameOffset:74) (firstTokenOffset:68) (offset:74) |
| element: <testLibrary>::@class::C |
| constructors |
| #F10 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:74) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| methods |
| #F11 hasImplicitReturnType isComplete isOriginDeclaration m (nameOffset:90) (firstTokenOffset:90) (offset:90) |
| element: <testLibrary>::@class::C::@method::m |
| formalParameters |
| #F12 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:92) (firstTokenOffset:92) (offset:92) |
| element: <testLibrary>::@class::C::@method::m::@formalParameter::a |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F2 |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional a |
| firstFragment: #F4 |
| type: int |
| returnType: String |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F5 |
| interfaces |
| A |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F6 |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: #F7 |
| formalParameters |
| #E1 requiredPositional hasImplicitType a |
| firstFragment: #F8 |
| type: int |
| returnType: String |
| isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F9 |
| supertype: B |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F10 |
| superConstructor: <testLibrary>::@class::B::@constructor::new |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::C::@method::m |
| firstFragment: #F11 |
| formalParameters |
| #E2 requiredPositional hasImplicitType a |
| firstFragment: #F12 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| constructors |
| #F2 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| methods |
| #F3 isComplete isOriginDeclaration m (nameOffset:19) (firstTokenOffset:12) (offset:19) |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| #F4 requiredPositional isOriginDeclaration a (nameOffset:25) (firstTokenOffset:21) (offset:25) |
| element: <testLibrary>::@class::A::@method::m::@formalParameter::a |
| #F5 hasExtendsClause class B (nameOffset:39) (firstTokenOffset:33) (offset:39) |
| element: <testLibrary>::@class::B |
| constructors |
| #F6 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:39) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| methods |
| #F7 hasImplicitReturnType isComplete isOriginDeclaration m (nameOffset:67) (firstTokenOffset:67) (offset:67) |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| #F8 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:69) (firstTokenOffset:69) (offset:69) |
| element: <testLibrary>::@class::B::@method::m::@formalParameter::a |
| #F9 hasExtendsClause class C (nameOffset:83) (firstTokenOffset:77) (offset:83) |
| element: <testLibrary>::@class::C |
| constructors |
| #F10 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:83) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| methods |
| #F11 hasImplicitReturnType isComplete isOriginDeclaration m (nameOffset:99) (firstTokenOffset:99) (offset:99) |
| element: <testLibrary>::@class::C::@method::m |
| formalParameters |
| #F12 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:101) (firstTokenOffset:101) (offset:101) |
| element: <testLibrary>::@class::C::@method::m::@formalParameter::a |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F2 |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional a |
| firstFragment: #F4 |
| type: int |
| returnType: String |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F5 |
| supertype: Object |
| mixins |
| A |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F6 |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: #F7 |
| formalParameters |
| #E1 requiredPositional hasImplicitType a |
| firstFragment: #F8 |
| type: int |
| returnType: String |
| isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F9 |
| supertype: B |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F10 |
| superConstructor: <testLibrary>::@class::B::@constructor::new |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::C::@method::m |
| firstFragment: #F11 |
| formalParameters |
| #E2 requiredPositional hasImplicitType a |
| firstFragment: #F12 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| typeParameters |
| #F2 K (nameOffset:8) (firstTokenOffset:8) (offset:8) |
| element: #E0 K |
| #F3 V (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: #E1 V |
| constructors |
| #F4 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| methods |
| #F5 isComplete isOriginDeclaration m (nameOffset:20) (firstTokenOffset:18) (offset:20) |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| #F6 requiredPositional isOriginDeclaration a (nameOffset:24) (firstTokenOffset:22) (offset:24) |
| element: <testLibrary>::@class::A::@method::m::@formalParameter::a |
| #F7 requiredPositional isOriginDeclaration b (nameOffset:34) (firstTokenOffset:27) (offset:34) |
| element: <testLibrary>::@class::A::@method::m::@formalParameter::b |
| #F8 hasExtendsClause class B (nameOffset:48) (firstTokenOffset:42) (offset:48) |
| element: <testLibrary>::@class::B |
| constructors |
| #F9 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:48) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| methods |
| #F10 hasImplicitReturnType isComplete isOriginDeclaration m (nameOffset:77) (firstTokenOffset:77) (offset:77) |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| #F11 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:79) (firstTokenOffset:79) (offset:79) |
| element: <testLibrary>::@class::B::@method::m::@formalParameter::a |
| #F12 requiredPositional hasImplicitType isOriginDeclaration b (nameOffset:82) (firstTokenOffset:82) (offset:82) |
| element: <testLibrary>::@class::B::@method::m::@formalParameter::b |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| typeParameters |
| #E0 K |
| firstFragment: #F2 |
| #E1 V |
| firstFragment: #F3 |
| constructors |
| hasEnclosingTypeParameterReference isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F4 |
| methods |
| hasEnclosingTypeParameterReference isOriginDeclaration m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: #F5 |
| formalParameters |
| #E2 requiredPositional a |
| firstFragment: #F6 |
| type: K |
| #E3 requiredPositional b |
| firstFragment: #F7 |
| type: double |
| returnType: V |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F8 |
| supertype: A<int, String> |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F9 |
| superConstructor: SubstitutedConstructorElementImpl |
| baseElement: <testLibrary>::@class::A::@constructor::new |
| substitution: {K: int, V: String} |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: #F10 |
| formalParameters |
| #E4 requiredPositional hasImplicitType a |
| firstFragment: #F11 |
| type: int |
| #E5 requiredPositional hasImplicitType b |
| firstFragment: #F12 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| constructors |
| #F2 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| methods |
| #F3 isComplete isOriginDeclaration m (nameOffset:19) (firstTokenOffset:12) (offset:19) |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| #F4 requiredPositional isOriginDeclaration a (nameOffset:25) (firstTokenOffset:21) (offset:25) |
| element: <testLibrary>::@class::A::@method::m::@formalParameter::a |
| #F5 hasExtendsClause class B (nameOffset:39) (firstTokenOffset:33) (offset:39) |
| element: <testLibrary>::@class::B |
| constructors |
| #F6 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:39) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| methods |
| #F7 hasImplicitReturnType isComplete isOriginDeclaration m (nameOffset:55) (firstTokenOffset:55) (offset:55) |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| #F8 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:57) (firstTokenOffset:57) (offset:57) |
| element: <testLibrary>::@class::B::@method::m::@formalParameter::a |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F2 |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional a |
| firstFragment: #F4 |
| type: int |
| returnType: String |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F5 |
| supertype: A |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F6 |
| superConstructor: <testLibrary>::@class::A::@constructor::new |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: #F7 |
| formalParameters |
| #E1 requiredPositional hasImplicitType a |
| firstFragment: #F8 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| constructors |
| #F2 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| methods |
| #F3 isComplete isOriginDeclaration m (nameOffset:19) (firstTokenOffset:12) (offset:19) |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| #F4 requiredPositional isOriginDeclaration a (nameOffset:25) (firstTokenOffset:21) (offset:25) |
| element: <testLibrary>::@class::A::@method::m::@formalParameter::a |
| #F5 optionalNamed isOriginDeclaration b (nameOffset:36) (firstTokenOffset:29) (offset:36) |
| element: <testLibrary>::@class::A::@method::m::@formalParameter::b |
| #F6 hasExtendsClause class B (nameOffset:51) (firstTokenOffset:45) (offset:51) |
| element: <testLibrary>::@class::B |
| constructors |
| #F7 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:51) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| methods |
| #F8 hasImplicitReturnType isComplete isOriginDeclaration m (nameOffset:67) (firstTokenOffset:67) (offset:67) |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| #F9 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:69) (firstTokenOffset:69) (offset:69) |
| element: <testLibrary>::@class::B::@method::m::@formalParameter::a |
| #F10 optionalNamed hasImplicitType isOriginDeclaration b (nameOffset:73) (firstTokenOffset:73) (offset:73) |
| element: <testLibrary>::@class::B::@method::m::@formalParameter::b |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F2 |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional a |
| firstFragment: #F4 |
| type: int |
| #E1 optionalNamed b |
| firstFragment: #F5 |
| type: double |
| returnType: String |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F6 |
| supertype: A |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F7 |
| superConstructor: <testLibrary>::@class::A::@constructor::new |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: #F8 |
| formalParameters |
| #E2 requiredPositional hasImplicitType a |
| firstFragment: #F9 |
| type: int |
| #E3 optionalNamed hasImplicitType b |
| firstFragment: #F10 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| constructors |
| #F2 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| methods |
| #F3 isComplete isOriginDeclaration m (nameOffset:19) (firstTokenOffset:12) (offset:19) |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| #F4 requiredPositional isOriginDeclaration a (nameOffset:25) (firstTokenOffset:21) (offset:25) |
| element: <testLibrary>::@class::A::@method::m::@formalParameter::a |
| #F5 optionalPositional isOriginDeclaration b (nameOffset:36) (firstTokenOffset:29) (offset:36) |
| element: <testLibrary>::@class::A::@method::m::@formalParameter::b |
| #F6 hasExtendsClause class B (nameOffset:51) (firstTokenOffset:45) (offset:51) |
| element: <testLibrary>::@class::B |
| constructors |
| #F7 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:51) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| methods |
| #F8 hasImplicitReturnType isComplete isOriginDeclaration m (nameOffset:67) (firstTokenOffset:67) (offset:67) |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| #F9 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:69) (firstTokenOffset:69) (offset:69) |
| element: <testLibrary>::@class::B::@method::m::@formalParameter::a |
| #F10 optionalPositional hasImplicitType isOriginDeclaration b (nameOffset:73) (firstTokenOffset:73) (offset:73) |
| element: <testLibrary>::@class::B::@method::m::@formalParameter::b |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F2 |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional a |
| firstFragment: #F4 |
| type: int |
| #E1 optionalPositional b |
| firstFragment: #F5 |
| type: double |
| returnType: String |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F6 |
| supertype: A |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F7 |
| superConstructor: <testLibrary>::@class::A::@constructor::new |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: #F8 |
| formalParameters |
| #E2 requiredPositional hasImplicitType a |
| firstFragment: #F9 |
| type: int |
| #E3 optionalPositional hasImplicitType b |
| firstFragment: #F10 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| typeParameters |
| #F2 K (nameOffset:8) (firstTokenOffset:8) (offset:8) |
| element: #E0 K |
| #F3 V (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: #E1 V |
| constructors |
| #F4 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| methods |
| #F5 isComplete isOriginDeclaration m (nameOffset:20) (firstTokenOffset:18) (offset:20) |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| #F6 requiredPositional isOriginDeclaration a (nameOffset:24) (firstTokenOffset:22) (offset:24) |
| element: <testLibrary>::@class::A::@method::m::@formalParameter::a |
| #F7 hasExtendsClause class B (nameOffset:38) (firstTokenOffset:32) (offset:38) |
| element: <testLibrary>::@class::B |
| typeParameters |
| #F8 T (nameOffset:40) (firstTokenOffset:40) (offset:40) |
| element: #E2 T |
| constructors |
| #F9 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:38) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| #F10 hasExtendsClause class C (nameOffset:70) (firstTokenOffset:64) (offset:70) |
| element: <testLibrary>::@class::C |
| constructors |
| #F11 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:70) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| methods |
| #F12 hasImplicitReturnType isComplete isOriginDeclaration m (nameOffset:94) (firstTokenOffset:94) (offset:94) |
| element: <testLibrary>::@class::C::@method::m |
| formalParameters |
| #F13 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:96) (firstTokenOffset:96) (offset:96) |
| element: <testLibrary>::@class::C::@method::m::@formalParameter::a |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| typeParameters |
| #E0 K |
| firstFragment: #F2 |
| #E1 V |
| firstFragment: #F3 |
| constructors |
| hasEnclosingTypeParameterReference isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F4 |
| methods |
| hasEnclosingTypeParameterReference isOriginDeclaration m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: #F5 |
| formalParameters |
| #E3 requiredPositional a |
| firstFragment: #F6 |
| type: K |
| returnType: V |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F7 |
| typeParameters |
| #E2 T |
| firstFragment: #F8 |
| supertype: A<int, T> |
| constructors |
| hasEnclosingTypeParameterReference isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F9 |
| superConstructor: SubstitutedConstructorElementImpl |
| baseElement: <testLibrary>::@class::A::@constructor::new |
| substitution: {K: int, V: T} |
| isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F10 |
| supertype: B<String> |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F11 |
| superConstructor: SubstitutedConstructorElementImpl |
| baseElement: <testLibrary>::@class::B::@constructor::new |
| substitution: {T: String} |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::C::@method::m |
| firstFragment: #F12 |
| formalParameters |
| #E4 requiredPositional hasImplicitType a |
| firstFragment: #F13 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAbstract class A (nameOffset:15) (firstTokenOffset:0) (offset:15) |
| element: <testLibrary>::@class::A |
| typeParameters |
| #F2 K (nameOffset:17) (firstTokenOffset:17) (offset:17) |
| element: #E0 K |
| #F3 V (nameOffset:20) (firstTokenOffset:20) (offset:20) |
| element: #E1 V |
| constructors |
| #F4 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| methods |
| #F5 isAbstract isOriginDeclaration m (nameOffset:29) (firstTokenOffset:27) (offset:29) |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| #F6 requiredPositional isOriginDeclaration a (nameOffset:33) (firstTokenOffset:31) (offset:33) |
| element: <testLibrary>::@class::A::@method::m::@formalParameter::a |
| #F7 class B (nameOffset:45) (firstTokenOffset:39) (offset:45) |
| element: <testLibrary>::@class::B |
| constructors |
| #F8 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:45) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| methods |
| #F9 hasImplicitReturnType isComplete isOriginDeclaration m (nameOffset:77) (firstTokenOffset:77) (offset:77) |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| #F10 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:79) (firstTokenOffset:79) (offset:79) |
| element: <testLibrary>::@class::B::@method::m::@formalParameter::a |
| classes |
| isAbstract isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| typeParameters |
| #E0 K |
| firstFragment: #F2 |
| #E1 V |
| firstFragment: #F3 |
| constructors |
| hasEnclosingTypeParameterReference isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F4 |
| methods |
| hasEnclosingTypeParameterReference isOriginDeclaration m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: #F5 |
| formalParameters |
| #E2 requiredPositional a |
| firstFragment: #F6 |
| type: K |
| returnType: V |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F7 |
| interfaces |
| A<int, String> |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F8 |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: #F9 |
| formalParameters |
| #E3 requiredPositional hasImplicitType a |
| firstFragment: #F10 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAbstract class A (nameOffset:15) (firstTokenOffset:0) (offset:15) |
| element: <testLibrary>::@class::A |
| constructors |
| #F2 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| methods |
| #F3 isAbstract isOriginDeclaration m (nameOffset:28) (firstTokenOffset:21) (offset:28) |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| #F4 requiredPositional isOriginDeclaration a (nameOffset:34) (firstTokenOffset:30) (offset:34) |
| element: <testLibrary>::@class::A::@method::m::@formalParameter::a |
| #F5 class B (nameOffset:46) (firstTokenOffset:40) (offset:46) |
| element: <testLibrary>::@class::B |
| constructors |
| #F6 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:46) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| methods |
| #F7 hasImplicitReturnType isComplete isOriginDeclaration m (nameOffset:65) (firstTokenOffset:65) (offset:65) |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| #F8 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:67) (firstTokenOffset:67) (offset:67) |
| element: <testLibrary>::@class::B::@method::m::@formalParameter::a |
| classes |
| isAbstract isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F2 |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional a |
| firstFragment: #F4 |
| type: int |
| returnType: String |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F5 |
| interfaces |
| A |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F6 |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: #F7 |
| formalParameters |
| #E1 requiredPositional hasImplicitType a |
| firstFragment: #F8 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 isAbstract class A (nameOffset:15) (firstTokenOffset:0) (offset:15) |
| element: <testLibrary>::@class::A |
| typeParameters |
| #F2 K (nameOffset:17) (firstTokenOffset:17) (offset:17) |
| element: #E0 K |
| #F3 V (nameOffset:20) (firstTokenOffset:20) (offset:20) |
| element: #E1 V |
| constructors |
| #F4 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:15) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| methods |
| #F5 isAbstract isOriginDeclaration m (nameOffset:29) (firstTokenOffset:27) (offset:29) |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| #F6 requiredPositional isOriginDeclaration a (nameOffset:33) (firstTokenOffset:31) (offset:33) |
| element: <testLibrary>::@class::A::@method::m::@formalParameter::a |
| #F7 hasExtendsClause isAbstract class B (nameOffset:54) (firstTokenOffset:39) (offset:54) |
| element: <testLibrary>::@class::B |
| typeParameters |
| #F8 T1 (nameOffset:56) (firstTokenOffset:56) (offset:56) |
| element: #E2 T1 |
| #F9 T2 (nameOffset:60) (firstTokenOffset:60) (offset:60) |
| element: #E3 T2 |
| constructors |
| #F10 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:54) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| #F11 class C (nameOffset:91) (firstTokenOffset:85) (offset:91) |
| element: <testLibrary>::@class::C |
| constructors |
| #F12 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:91) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| methods |
| #F13 hasImplicitReturnType isComplete isOriginDeclaration m (nameOffset:123) (firstTokenOffset:123) (offset:123) |
| element: <testLibrary>::@class::C::@method::m |
| formalParameters |
| #F14 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:125) (firstTokenOffset:125) (offset:125) |
| element: <testLibrary>::@class::C::@method::m::@formalParameter::a |
| classes |
| isAbstract isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| typeParameters |
| #E0 K |
| firstFragment: #F2 |
| #E1 V |
| firstFragment: #F3 |
| constructors |
| hasEnclosingTypeParameterReference isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F4 |
| methods |
| hasEnclosingTypeParameterReference isOriginDeclaration m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: #F5 |
| formalParameters |
| #E4 requiredPositional a |
| firstFragment: #F6 |
| type: K |
| returnType: V |
| isAbstract isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F7 |
| typeParameters |
| #E2 T1 |
| firstFragment: #F8 |
| #E3 T2 |
| firstFragment: #F9 |
| supertype: A<T2, T1> |
| constructors |
| hasEnclosingTypeParameterReference isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F10 |
| superConstructor: SubstitutedConstructorElementImpl |
| baseElement: <testLibrary>::@class::A::@constructor::new |
| substitution: {K: T2, V: T1} |
| isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F11 |
| interfaces |
| B<int, String> |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F12 |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::C::@method::m |
| firstFragment: #F13 |
| formalParameters |
| #E5 requiredPositional hasImplicitType a |
| firstFragment: #F14 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| libraryImports |
| package:test/other.dart |
| classes |
| #F1 class A1 (nameOffset:27) (firstTokenOffset:21) (offset:27) |
| element: <testLibrary>::@class::A1 |
| constructors |
| #F2 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:27) |
| element: <testLibrary>::@class::A1::@constructor::new |
| typeName: A1 |
| methods |
| #F3 isComplete isOriginDeclaration _foo (nameOffset:38) (firstTokenOffset:34) (offset:38) |
| element: <testLibrary>::@class::A1::@method::_foo |
| #F4 hasExtendsClause class A2 (nameOffset:59) (firstTokenOffset:53) (offset:59) |
| element: <testLibrary>::@class::A2 |
| constructors |
| #F5 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:59) |
| element: <testLibrary>::@class::A2::@constructor::new |
| typeName: A2 |
| methods |
| #F6 hasImplicitReturnType isComplete isOriginDeclaration _foo (nameOffset:77) (firstTokenOffset:77) (offset:77) |
| element: <testLibrary>::@class::A2::@method::_foo |
| classes |
| isSimplyBounded class A1 |
| reference: <testLibrary>::@class::A1 |
| firstFragment: #F1 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A1::@constructor::new |
| firstFragment: #F2 |
| methods |
| isOriginDeclaration _foo |
| reference: <testLibrary>::@class::A1::@method::_foo |
| firstFragment: #F3 |
| returnType: int |
| isSimplyBounded class A2 |
| reference: <testLibrary>::@class::A2 |
| firstFragment: #F4 |
| supertype: A1 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A2::@constructor::new |
| firstFragment: #F5 |
| superConstructor: <testLibrary>::@class::A1::@constructor::new |
| methods |
| isOriginDeclaration _foo |
| reference: <testLibrary>::@class::A2::@method::_foo |
| firstFragment: #F6 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| constructors |
| #F2 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| methods |
| #F3 isComplete isOriginDeclaration m (nameOffset:19) (firstTokenOffset:12) (offset:19) |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| #F4 requiredPositional isOriginDeclaration a (nameOffset:25) (firstTokenOffset:21) (offset:25) |
| element: <testLibrary>::@class::A::@method::m::@formalParameter::a |
| #F5 hasExtendsClause class B (nameOffset:39) (firstTokenOffset:33) (offset:39) |
| element: <testLibrary>::@class::B |
| constructors |
| #F6 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:39) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| methods |
| #F7 hasImplicitReturnType isComplete isOriginDeclaration m (nameOffset:67) (firstTokenOffset:67) (offset:67) |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| #F8 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:69) (firstTokenOffset:69) (offset:69) |
| element: <testLibrary>::@class::B::@method::m::@formalParameter::a |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F2 |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional a |
| firstFragment: #F4 |
| type: int |
| returnType: String |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F5 |
| supertype: Object |
| mixins |
| A |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F6 |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: #F7 |
| formalParameters |
| #E1 requiredPositional hasImplicitType a |
| firstFragment: #F8 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| typeParameters |
| #F2 K (nameOffset:8) (firstTokenOffset:8) (offset:8) |
| element: #E0 K |
| #F3 V (nameOffset:11) (firstTokenOffset:11) (offset:11) |
| element: #E1 V |
| constructors |
| #F4 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| methods |
| #F5 isComplete isOriginDeclaration m (nameOffset:20) (firstTokenOffset:18) (offset:20) |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| #F6 requiredPositional isOriginDeclaration a (nameOffset:24) (firstTokenOffset:22) (offset:24) |
| element: <testLibrary>::@class::A::@method::m::@formalParameter::a |
| #F7 class B (nameOffset:38) (firstTokenOffset:32) (offset:38) |
| element: <testLibrary>::@class::B |
| typeParameters |
| #F8 T (nameOffset:40) (firstTokenOffset:40) (offset:40) |
| element: #E2 T |
| constructors |
| #F9 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:38) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| methods |
| #F10 isComplete isOriginDeclaration m (nameOffset:49) (firstTokenOffset:47) (offset:49) |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| #F11 requiredPositional isOriginDeclaration a (nameOffset:55) (firstTokenOffset:51) (offset:55) |
| element: <testLibrary>::@class::B::@method::m::@formalParameter::a |
| #F12 hasExtendsClause class C (nameOffset:69) (firstTokenOffset:63) (offset:69) |
| element: <testLibrary>::@class::C |
| constructors |
| #F13 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:69) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| methods |
| #F14 hasImplicitReturnType isComplete isOriginDeclaration m (nameOffset:119) (firstTokenOffset:119) (offset:119) |
| element: <testLibrary>::@class::C::@method::m |
| formalParameters |
| #F15 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:121) (firstTokenOffset:121) (offset:121) |
| element: <testLibrary>::@class::C::@method::m::@formalParameter::a |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| typeParameters |
| #E0 K |
| firstFragment: #F2 |
| #E1 V |
| firstFragment: #F3 |
| constructors |
| hasEnclosingTypeParameterReference isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F4 |
| methods |
| hasEnclosingTypeParameterReference isOriginDeclaration m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: #F5 |
| formalParameters |
| #E3 requiredPositional a |
| firstFragment: #F6 |
| type: K |
| returnType: V |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F7 |
| typeParameters |
| #E2 T |
| firstFragment: #F8 |
| constructors |
| hasEnclosingTypeParameterReference isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F9 |
| methods |
| hasEnclosingTypeParameterReference isOriginDeclaration m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: #F10 |
| formalParameters |
| #E4 requiredPositional a |
| firstFragment: #F11 |
| type: int |
| returnType: T |
| isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F12 |
| supertype: A<int, String> |
| interfaces |
| B<String> |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F13 |
| superConstructor: SubstitutedConstructorElementImpl |
| baseElement: <testLibrary>::@class::A::@constructor::new |
| substitution: {K: int, V: String} |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::C::@method::m |
| firstFragment: #F14 |
| formalParameters |
| #E5 requiredPositional hasImplicitType a |
| firstFragment: #F15 |
| 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 |
| #F0 <testLibraryFragment> |
| element: <testLibrary> |
| classes |
| #F1 class A (nameOffset:6) (firstTokenOffset:0) (offset:6) |
| element: <testLibrary>::@class::A |
| constructors |
| #F2 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:6) |
| element: <testLibrary>::@class::A::@constructor::new |
| typeName: A |
| methods |
| #F3 isComplete isOriginDeclaration m (nameOffset:19) (firstTokenOffset:12) (offset:19) |
| element: <testLibrary>::@class::A::@method::m |
| formalParameters |
| #F4 requiredPositional isOriginDeclaration a (nameOffset:25) (firstTokenOffset:21) (offset:25) |
| element: <testLibrary>::@class::A::@method::m::@formalParameter::a |
| #F5 class B (nameOffset:39) (firstTokenOffset:33) (offset:39) |
| element: <testLibrary>::@class::B |
| constructors |
| #F6 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:39) |
| element: <testLibrary>::@class::B::@constructor::new |
| typeName: B |
| methods |
| #F7 isComplete isOriginDeclaration m (nameOffset:52) (firstTokenOffset:45) (offset:52) |
| element: <testLibrary>::@class::B::@method::m |
| formalParameters |
| #F8 requiredPositional isOriginDeclaration a (nameOffset:58) (firstTokenOffset:54) (offset:58) |
| element: <testLibrary>::@class::B::@method::m::@formalParameter::a |
| #F9 hasExtendsClause class C (nameOffset:72) (firstTokenOffset:66) (offset:72) |
| element: <testLibrary>::@class::C |
| constructors |
| #F10 isOriginImplicitDefault new (nameOffset:<null>) (firstTokenOffset:<null>) (offset:72) |
| element: <testLibrary>::@class::C::@constructor::new |
| typeName: C |
| methods |
| #F11 hasImplicitReturnType isComplete isOriginDeclaration m (nameOffset:101) (firstTokenOffset:101) (offset:101) |
| element: <testLibrary>::@class::C::@method::m |
| formalParameters |
| #F12 requiredPositional hasImplicitType isOriginDeclaration a (nameOffset:103) (firstTokenOffset:103) (offset:103) |
| element: <testLibrary>::@class::C::@method::m::@formalParameter::a |
| classes |
| isSimplyBounded class A |
| reference: <testLibrary>::@class::A |
| firstFragment: #F1 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::A::@constructor::new |
| firstFragment: #F2 |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::A::@method::m |
| firstFragment: #F3 |
| formalParameters |
| #E0 requiredPositional a |
| firstFragment: #F4 |
| type: int |
| returnType: String |
| isSimplyBounded class B |
| reference: <testLibrary>::@class::B |
| firstFragment: #F5 |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::B::@constructor::new |
| firstFragment: #F6 |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::B::@method::m |
| firstFragment: #F7 |
| formalParameters |
| #E1 requiredPositional a |
| firstFragment: #F8 |
| type: int |
| returnType: String |
| isSimplyBounded class C |
| reference: <testLibrary>::@class::C |
| firstFragment: #F9 |
| supertype: A |
| interfaces |
| B |
| constructors |
| isOriginImplicitDefault new |
| reference: <testLibrary>::@class::C::@constructor::new |
| firstFragment: #F10 |
| superConstructor: <testLibrary>::@class::A::@constructor::new |
| methods |
| isOriginDeclaration m |
| reference: <testLibrary>::@class::C::@method::m |
| firstFragment: #F11 |
| formalParameters |
| #E2 requiredPositional hasImplicitType a |
| firstFragment: #F12 |
| 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; |
| } |
| } |