| Index: pkg/analyzer/test/src/summary/summary_test.dart
|
| diff --git a/pkg/analyzer/test/src/summary/summary_test.dart b/pkg/analyzer/test/src/summary/summary_test.dart
|
| index 854b0a815b8ad3f50a76620e888faac21d3a6a20..d04200ef85ed439fc21a65826ce63fd74bc235c6 100644
|
| --- a/pkg/analyzer/test/src/summary/summary_test.dart
|
| +++ b/pkg/analyzer/test/src/summary/summary_test.dart
|
| @@ -787,6 +787,7 @@ class E {}
|
| executables: serializeClassText('class C { C(); }').executables);
|
| expect(executable.kind, UnlinkedExecutableKind.constructor);
|
| expect(executable.hasImplicitReturnType, isFalse);
|
| + expect(executable.isExternal, isFalse);
|
| }
|
|
|
| test_constructor_anonymous() {
|
| @@ -799,6 +800,22 @@ class E {}
|
| UnlinkedExecutable executable = findExecutable('',
|
| executables: serializeClassText('class C { const C(); }').executables);
|
| expect(executable.isConst, isTrue);
|
| + expect(executable.isExternal, isFalse);
|
| + }
|
| +
|
| + test_constructor_const_external() {
|
| + UnlinkedExecutable executable = findExecutable('',
|
| + executables:
|
| + serializeClassText('class C { external const C(); }').executables);
|
| + expect(executable.isConst, isTrue);
|
| + expect(executable.isExternal, isTrue);
|
| + }
|
| +
|
| + test_constructor_external() {
|
| + UnlinkedExecutable executable = findExecutable('',
|
| + executables:
|
| + serializeClassText('class C { external C(); }').executables);
|
| + expect(executable.isExternal, isTrue);
|
| }
|
|
|
| test_constructor_factory() {
|
| @@ -1116,6 +1133,7 @@ typedef F();
|
| expect(executable.kind, UnlinkedExecutableKind.functionOrMethod);
|
| expect(executable.hasImplicitReturnType, isTrue);
|
| checkDynamicTypeRef(executable.returnType);
|
| + expect(executable.isExternal, isFalse);
|
| }
|
|
|
| test_executable_function_explicit_return() {
|
| @@ -1125,14 +1143,26 @@ typedef F();
|
| checkDynamicTypeRef(executable.returnType);
|
| }
|
|
|
| + test_executable_function_external() {
|
| + UnlinkedExecutable executable = serializeExecutableText('external f();');
|
| + expect(executable.isExternal, isTrue);
|
| + }
|
| +
|
| test_executable_getter() {
|
| UnlinkedExecutable executable = serializeExecutableText('int get f => 1;');
|
| expect(executable.kind, UnlinkedExecutableKind.getter);
|
| expect(executable.hasImplicitReturnType, isFalse);
|
| + expect(executable.isExternal, isFalse);
|
| expect(findVariable('f'), isNull);
|
| expect(findExecutable('f='), isNull);
|
| }
|
|
|
| + test_executable_getter_external() {
|
| + UnlinkedExecutable executable =
|
| + serializeExecutableText('external int get f;');
|
| + expect(executable.isExternal, isTrue);
|
| + }
|
| +
|
| test_executable_getter_type() {
|
| UnlinkedExecutable executable = serializeExecutableText('int get f => 1;');
|
| checkTypeRef(executable.returnType, 'dart:core', 'dart:core', 'int');
|
| @@ -1151,6 +1181,7 @@ typedef F();
|
| executables: serializeClassText('class C { f() {} }').executables);
|
| expect(executable.kind, UnlinkedExecutableKind.functionOrMethod);
|
| expect(executable.hasImplicitReturnType, isTrue);
|
| + expect(executable.isExternal, isFalse);
|
| }
|
|
|
| test_executable_member_function_explicit_return() {
|
| @@ -1160,16 +1191,31 @@ typedef F();
|
| expect(executable.hasImplicitReturnType, isFalse);
|
| }
|
|
|
| + test_executable_member_function_external() {
|
| + UnlinkedExecutable executable = findExecutable('f',
|
| + executables:
|
| + serializeClassText('class C { external f(); }').executables);
|
| + expect(executable.isExternal, isTrue);
|
| + }
|
| +
|
| test_executable_member_getter() {
|
| UnlinkedClass cls = serializeClassText('class C { int get f => 1; }');
|
| UnlinkedExecutable executable =
|
| findExecutable('f', executables: cls.executables, failIfAbsent: true);
|
| expect(executable.kind, UnlinkedExecutableKind.getter);
|
| expect(executable.hasImplicitReturnType, isFalse);
|
| + expect(executable.isExternal, isFalse);
|
| expect(findVariable('f', variables: cls.fields), isNull);
|
| expect(findExecutable('f=', executables: cls.executables), isNull);
|
| }
|
|
|
| + test_executable_member_getter_external() {
|
| + UnlinkedClass cls = serializeClassText('class C { external int get f; }');
|
| + UnlinkedExecutable executable =
|
| + findExecutable('f', executables: cls.executables, failIfAbsent: true);
|
| + expect(executable.isExternal, isTrue);
|
| + }
|
| +
|
| test_executable_member_setter() {
|
| UnlinkedClass cls = serializeClassText('class C { void set f(value) {} }');
|
| UnlinkedExecutable executable =
|
| @@ -1177,10 +1223,19 @@ typedef F();
|
| expect(executable.kind, UnlinkedExecutableKind.setter);
|
| // For setters, hasImplicitReturnType is always false.
|
| expect(executable.hasImplicitReturnType, isFalse);
|
| + expect(executable.isExternal, isFalse);
|
| expect(findVariable('f', variables: cls.fields), isNull);
|
| expect(findExecutable('f', executables: cls.executables), isNull);
|
| }
|
|
|
| + test_executable_member_setter_external() {
|
| + UnlinkedClass cls =
|
| + serializeClassText('class C { external void set f(value); }');
|
| + UnlinkedExecutable executable =
|
| + findExecutable('f=', executables: cls.executables, failIfAbsent: true);
|
| + expect(executable.isExternal, isTrue);
|
| + }
|
| +
|
| test_executable_member_setter_implicit_return() {
|
| UnlinkedClass cls = serializeClassText('class C { set f(value) {} }');
|
| UnlinkedExecutable executable =
|
| @@ -1214,6 +1269,30 @@ typedef F();
|
| expect(executable.isStatic, isFalse);
|
| }
|
|
|
| + test_executable_operator() {
|
| + UnlinkedExecutable executable =
|
| + serializeClassText('class C { C operator+(C c) => null; }').executables[
|
| + 0];
|
| + expect(executable.kind, UnlinkedExecutableKind.functionOrMethod);
|
| + expect(executable.name, '+');
|
| + expect(executable.hasImplicitReturnType, false);
|
| + expect(executable.isAbstract, false);
|
| + expect(executable.isConst, false);
|
| + expect(executable.isFactory, false);
|
| + expect(executable.isStatic, false);
|
| + expect(executable.parameters, hasLength(1));
|
| + checkTypeRef(executable.returnType, null, null, 'C');
|
| + expect(executable.typeParameters, isEmpty);
|
| + expect(executable.isExternal, false);
|
| + }
|
| +
|
| + test_executable_operator_external() {
|
| + UnlinkedExecutable executable =
|
| + serializeClassText('class C { external C operator+(C c); }')
|
| + .executables[0];
|
| + expect(executable.isExternal, true);
|
| + }
|
| +
|
| test_executable_operator_index() {
|
| UnlinkedExecutable executable =
|
| serializeClassText('class C { bool operator[](int i) => null; }')
|
| @@ -1371,10 +1450,17 @@ typedef F();
|
| serializeExecutableText('void set f(value) {}', 'f=');
|
| expect(executable.kind, UnlinkedExecutableKind.setter);
|
| expect(executable.hasImplicitReturnType, isFalse);
|
| + expect(executable.isExternal, isFalse);
|
| expect(findVariable('f'), isNull);
|
| expect(findExecutable('f'), isNull);
|
| }
|
|
|
| + test_executable_setter_external() {
|
| + UnlinkedExecutable executable =
|
| + serializeExecutableText('external void set f(value);', 'f=');
|
| + expect(executable.isExternal, isTrue);
|
| + }
|
| +
|
| test_executable_setter_implicit_return() {
|
| UnlinkedExecutable executable =
|
| serializeExecutableText('set f(value) {}', 'f=');
|
|
|