mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 16:59:47 +00:00
Generate checks for library-is-loaded to fasta and dart2js.
Change-Id: Ibf453ca7390b81da7231dcb1be43e426c00d6eeb Reviewed-on: https://dart-review.googlesource.com/35100 Commit-Queue: Sigmund Cherem <sigmund@google.com> Reviewed-by: Peter von der Ahé <ahe@google.com> Reviewed-by: Johnni Winther <johnniwinther@google.com>
This commit is contained in:
parent
f274d81fa2
commit
e2ad2db805
|
@ -470,4 +470,10 @@ class HintCodeTest_Kernel extends HintCodeTest_Driver {
|
|||
// Expected 1 errors of type HintCode.UNUSED_SHOWN_NAME, found 0
|
||||
return super.test_unusedShownName_topLevelVariable();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
@override
|
||||
test_importDeferredLibraryWithLoadFunction() async {
|
||||
await super.test_importDeferredLibraryWithLoadFunction();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -126,4 +126,11 @@ void g(bool c) {
|
|||
test_unusedImport_metadata() async {
|
||||
await super.test_unusedImport_metadata();
|
||||
}
|
||||
|
||||
@failingTest
|
||||
@override
|
||||
@potentialAnalyzerProblem
|
||||
test_importDeferredLibraryWithLoadFunction() async {
|
||||
await super.test_importDeferredLibraryWithLoadFunction();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1679,6 +1679,11 @@ class KernelTypeGraphBuilder extends ir.Visitor<TypeInformation> {
|
|||
return _inferrer.registerYield(node, operandType);
|
||||
}
|
||||
|
||||
@override
|
||||
TypeInformation visitCheckLibraryIsLoaded(ir.CheckLibraryIsLoaded node) {
|
||||
return _types.nonNullEmpty();
|
||||
}
|
||||
|
||||
@override
|
||||
TypeInformation visitInvalidExpression(ir.InvalidExpression node) {
|
||||
// TODO(johnniwinther): Maybe this should be [empty] instead?
|
||||
|
|
|
@ -116,6 +116,9 @@ abstract class KernelToElementMap {
|
|||
// used in impact builder for symbol constants.
|
||||
ConstantValue getConstantValue(ir.Expression expression,
|
||||
{bool requireConstant: true, bool implicitNull: false});
|
||||
|
||||
/// Return the [ImportEntity] corresponding to [node].
|
||||
ImportEntity getImport(ir.LibraryDependency node);
|
||||
}
|
||||
|
||||
/// Interface that translates between Kernel IR nodes and entities used for
|
||||
|
@ -182,9 +185,6 @@ abstract class KernelToElementMapForImpact extends KernelToElementMap {
|
|||
|
||||
/// Returns the definition information for [cls].
|
||||
ClassDefinition getClassDefinition(covariant ClassEntity cls);
|
||||
|
||||
/// Return the [ImportEntity] corresponding to [node].
|
||||
ImportEntity getImport(ir.LibraryDependency node);
|
||||
}
|
||||
|
||||
/// Interface that translates between Kernel IR nodes and entities used for
|
||||
|
@ -229,11 +229,6 @@ abstract class KernelToElementMapForBuilding implements KernelToElementMap {
|
|||
/// Returns the constructor body entity corresponding to [constructor].
|
||||
FunctionEntity getConstructorBody(ir.Constructor node);
|
||||
|
||||
/// Returns the uri for the deferred import [node].
|
||||
// TODO(johnniwinther): Avoid this method by deriving the uri directly from
|
||||
// the node.
|
||||
String getDeferredUri(ir.LibraryDependency node);
|
||||
|
||||
/// Make a record to ensure variables that are are declared in one scope and
|
||||
/// modified in another get their values updated correctly.
|
||||
Map<Local, JRecordField> makeRecordContainer(
|
||||
|
|
|
@ -796,6 +796,13 @@ abstract class KernelToElementMapBase extends KernelToElementMapBaseMixin {
|
|||
assert(checkFamily(cls));
|
||||
return _classes.getData(cls).definition;
|
||||
}
|
||||
|
||||
@override
|
||||
ImportEntity getImport(ir.LibraryDependency node) {
|
||||
ir.Library library = node.parent;
|
||||
LibraryData data = _libraries.getData(_getLibrary(library));
|
||||
return data.imports[node];
|
||||
}
|
||||
}
|
||||
|
||||
/// Mixin that implements the abstract methods in [KernelToElementMapBase].
|
||||
|
@ -1284,13 +1291,6 @@ class KernelToElementMapForImpactImpl extends KernelToElementMapBase
|
|||
return data.callType is FunctionType;
|
||||
}
|
||||
|
||||
@override
|
||||
ImportEntity getImport(ir.LibraryDependency node) {
|
||||
ir.Library library = node.parent;
|
||||
LibraryData data = _libraries.getData(_getLibrary(library));
|
||||
return data.imports[node];
|
||||
}
|
||||
|
||||
@override
|
||||
MemberDefinition getMemberDefinition(MemberEntity member) {
|
||||
return _getMemberDefinition(member);
|
||||
|
@ -2721,10 +2721,6 @@ class JsKernelToElementMap extends KernelToElementMapBase
|
|||
String _getClosureVariableName(String name, int id) {
|
||||
return "_captured_${name}_$id";
|
||||
}
|
||||
|
||||
String getDeferredUri(ir.LibraryDependency node) {
|
||||
throw new UnimplementedError('JsKernelToElementMap.getDeferredUri');
|
||||
}
|
||||
}
|
||||
|
||||
class KernelClassQueries extends ClassQueries {
|
||||
|
|
|
@ -157,7 +157,7 @@ class LibraryData {
|
|||
Iterable<ConstantValue> _metadata;
|
||||
Map<ir.LibraryDependency, ImportEntity> imports;
|
||||
|
||||
LibraryData(this.library);
|
||||
LibraryData(this.library, [this.imports]);
|
||||
|
||||
Iterable<ConstantValue> getMetadata(KernelToElementMapBase elementMap) {
|
||||
return _metadata ??= elementMap.getMetadata(library.annotations);
|
||||
|
@ -184,7 +184,7 @@ class LibraryData {
|
|||
}
|
||||
|
||||
LibraryData copy() {
|
||||
return new LibraryData(library);
|
||||
return new LibraryData(library, imports);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1146,10 +1146,12 @@ class KernelSsaGraphBuilder extends ir.Visitor
|
|||
|
||||
@override
|
||||
void visitCheckLibraryIsLoaded(ir.CheckLibraryIsLoaded checkLoad) {
|
||||
HInstruction prefixConstant =
|
||||
graph.addConstantString(checkLoad.import.name, closedWorld);
|
||||
String uri = _elementMap.getDeferredUri(checkLoad.import);
|
||||
HInstruction uriConstant = graph.addConstantString(uri, closedWorld);
|
||||
ImportEntity import = _elementMap.getImport(checkLoad.import);
|
||||
String loadId = deferredLoadTask.getImportDeferName(
|
||||
_elementMap.getSpannable(targetElement, checkLoad), import);
|
||||
HInstruction prefixConstant = graph.addConstantString(loadId, closedWorld);
|
||||
HInstruction uriConstant =
|
||||
graph.addConstantString('${import.uri}', closedWorld);
|
||||
_pushStaticInvocation(
|
||||
_commonElements.checkDeferredIsLoaded,
|
||||
[prefixConstant, uriConstant],
|
||||
|
@ -1159,11 +1161,12 @@ class KernelSsaGraphBuilder extends ir.Visitor
|
|||
|
||||
@override
|
||||
void visitLoadLibrary(ir.LoadLibrary loadLibrary) {
|
||||
String loadId = deferredLoadTask.getImportDeferName(
|
||||
_elementMap.getSpannable(targetElement, loadLibrary),
|
||||
_elementMap.getImport(loadLibrary.import));
|
||||
// TODO(efortuna): Source information!
|
||||
push(new HInvokeStatic(
|
||||
commonElements.loadDeferredLibrary,
|
||||
[graph.addConstantString(loadLibrary.import.name, closedWorld)],
|
||||
commonMasks.nonNullType,
|
||||
push(new HInvokeStatic(commonElements.loadDeferredLibrary,
|
||||
[graph.addConstantString(loadId, closedWorld)], commonMasks.nonNullType,
|
||||
targetCanThrow: false));
|
||||
}
|
||||
|
||||
|
|
|
@ -1292,8 +1292,12 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
|||
return new ThisPropertyAccessor(this, token, n, getter, setter);
|
||||
} else if (builder.isRegularMethod) {
|
||||
assert(builder.isStatic || builder.isTopLevel);
|
||||
return new StaticAccessor(this, token, builder.target, null,
|
||||
StaticAccessor accessor = new StaticAccessor(
|
||||
this, token, builder.target, null,
|
||||
prefixName: prefix?.name);
|
||||
return (prefix?.deferred == true)
|
||||
? new DeferredAccessor(this, token, prefix, accessor)
|
||||
: accessor;
|
||||
} else if (builder is PrefixBuilder) {
|
||||
if (constantExpressionRequired && builder.deferred) {
|
||||
deprecated_addCompileTimeError(
|
||||
|
@ -1329,7 +1333,9 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
|||
charOffset, "Not a constant expression.");
|
||||
}
|
||||
}
|
||||
return accessor;
|
||||
return (prefix?.deferred == true)
|
||||
? new DeferredAccessor(this, token, prefix, accessor)
|
||||
: accessor;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3632,6 +3638,14 @@ class BodyBuilder extends ScopeListener<JumpTarget> implements BuilderHelper {
|
|||
prefixName, targetOffset, targetClass, readTarget)
|
||||
..fileOffset = offsetForToken(token);
|
||||
}
|
||||
|
||||
@override
|
||||
Expression makeDeferredCheck(Expression expression, PrefixBuilder prefix) {
|
||||
return new Let(
|
||||
new VariableDeclaration.forValue(
|
||||
new CheckLibraryIsLoaded(prefix.dependency)),
|
||||
expression);
|
||||
}
|
||||
}
|
||||
|
||||
class Identifier {
|
||||
|
|
|
@ -32,6 +32,7 @@ import 'frontend_accessors.dart' as kernel
|
|||
LoadLibraryAccessor,
|
||||
PropertyAccessor,
|
||||
ReadOnlyAccessor,
|
||||
DeferredAccessor,
|
||||
DelayedErrorAccessor,
|
||||
StaticAccessor,
|
||||
SuperIndexAccessor,
|
||||
|
@ -138,6 +139,8 @@ abstract class BuilderHelper {
|
|||
StaticGet makeStaticGet(Member readTarget, Token token,
|
||||
{String prefixName, int targetOffset: -1, Class targetClass});
|
||||
|
||||
Expression makeDeferredCheck(Expression expression, PrefixBuilder prefix);
|
||||
|
||||
dynamic deprecated_addCompileTimeError(int charOffset, String message);
|
||||
|
||||
bool isIdentical(Member member);
|
||||
|
@ -825,6 +828,24 @@ class LoadLibraryAccessor extends kernel.LoadLibraryAccessor
|
|||
}
|
||||
}
|
||||
|
||||
class DeferredAccessor extends kernel.DeferredAccessor with FastaAccessor {
|
||||
DeferredAccessor(BuilderHelper helper, Token token, PrefixBuilder builder,
|
||||
StaticAccessor expression)
|
||||
: super(helper, token, builder, expression);
|
||||
|
||||
String get plainNameForRead {
|
||||
return unsupported(
|
||||
"deferredAccessor.plainNameForRead", offsetForToken(token), uri);
|
||||
}
|
||||
|
||||
StaticAccessor get staticAccessor => super.staticAccessor;
|
||||
|
||||
Expression doInvocation(int offset, Arguments arguments) {
|
||||
return helper.makeDeferredCheck(
|
||||
staticAccessor.doInvocation(offset, arguments), builder);
|
||||
}
|
||||
}
|
||||
|
||||
class SuperPropertyAccessor extends kernel.SuperPropertyAccessor
|
||||
with FastaAccessor {
|
||||
SuperPropertyAccessor(BuilderHelper helper, Token token, Name name,
|
||||
|
|
|
@ -15,7 +15,7 @@ import '../problems.dart' show unhandled;
|
|||
|
||||
import 'fasta_accessors.dart' show BuilderHelper;
|
||||
|
||||
import 'kernel_builder.dart' show LoadLibraryBuilder;
|
||||
import 'kernel_builder.dart' show LoadLibraryBuilder, PrefixBuilder;
|
||||
|
||||
import 'kernel_shadow_ast.dart'
|
||||
show
|
||||
|
@ -736,6 +736,27 @@ abstract class LoadLibraryAccessor extends Accessor {
|
|||
}
|
||||
}
|
||||
|
||||
abstract class DeferredAccessor extends Accessor {
|
||||
final PrefixBuilder builder;
|
||||
final StaticAccessor staticAccessor;
|
||||
|
||||
DeferredAccessor(
|
||||
BuilderHelper helper, Token token, this.builder, this.staticAccessor)
|
||||
: super(helper, token);
|
||||
|
||||
Expression _makeRead(ShadowComplexAssignment complexAssignment) {
|
||||
return helper.makeDeferredCheck(
|
||||
staticAccessor._makeRead(complexAssignment), builder);
|
||||
}
|
||||
|
||||
Expression _makeWrite(Expression value, bool voidContext,
|
||||
ShadowComplexAssignment complexAssignment) {
|
||||
return helper.makeDeferredCheck(
|
||||
staticAccessor._makeWrite(value, voidContext, complexAssignment),
|
||||
builder);
|
||||
}
|
||||
}
|
||||
|
||||
class ReadOnlyAccessor extends Accessor {
|
||||
Expression expression;
|
||||
VariableDeclaration value;
|
||||
|
|
|
@ -10,6 +10,11 @@ annotation_top: Crash
|
|||
argument_mismatch: Crash
|
||||
bad_setter_abstract: Crash
|
||||
cascade: Crash
|
||||
check_deferred_read: Crash
|
||||
check_deferred_before_write: Crash
|
||||
check_deferred_before_call: Crash
|
||||
check_deferred_before_args: Crash
|
||||
check_deferred_before_args2: Crash
|
||||
classes: Crash
|
||||
duplicated_named_args_3: Crash
|
||||
dynamic_and_void: Fail
|
||||
|
@ -109,6 +114,7 @@ rasta/issue_000070: Crash
|
|||
rasta/malformed_function: Crash
|
||||
rasta/mandatory_parameter_initializer: Crash
|
||||
rasta/parser_error: Crash
|
||||
rasta/previsit_deferred: Crash
|
||||
rasta/static: Crash
|
||||
rasta/super_initializer: Crash
|
||||
rasta/supports_reflection: VerificationError
|
||||
|
|
13
pkg/front_end/testcases/check_deferred_before_args.dart
Normal file
13
pkg/front_end/testcases/check_deferred_before_args.dart
Normal file
|
@ -0,0 +1,13 @@
|
|||
// Copyright (c) 2018, 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.md file.
|
||||
|
||||
import 'deferred_lib.dart' deferred as lib;
|
||||
|
||||
main() {}
|
||||
test() {
|
||||
lib.x = m2();
|
||||
lib.m(m2());
|
||||
}
|
||||
|
||||
m2() => 1;
|
|
@ -0,0 +1,11 @@
|
|||
library;
|
||||
import self as self;
|
||||
import "./deferred_lib.dart" as def;
|
||||
|
||||
static method main() → dynamic {}
|
||||
static method test() → dynamic {
|
||||
let final dynamic #t1 = CheckLibraryIsLoaded(lib) in def::x = self::m2();
|
||||
let final dynamic #t2 = CheckLibraryIsLoaded(lib) in def::m(self::m2());
|
||||
}
|
||||
static method m2() → dynamic
|
||||
return 1;
|
|
@ -0,0 +1,9 @@
|
|||
library;
|
||||
import self as self;
|
||||
|
||||
static method main() → dynamic
|
||||
;
|
||||
static method test() → dynamic
|
||||
;
|
||||
static method m2() → dynamic
|
||||
;
|
|
@ -0,0 +1,11 @@
|
|||
library;
|
||||
import self as self;
|
||||
import "./deferred_lib.dart" as def;
|
||||
|
||||
static method main() → dynamic {}
|
||||
static method test() → dynamic {
|
||||
let final dynamic #t1 = CheckLibraryIsLoaded(lib) in def::x = self::m2();
|
||||
let final dynamic #t2 = CheckLibraryIsLoaded(lib) in def::m(self::m2());
|
||||
}
|
||||
static method m2() → dynamic
|
||||
return 1;
|
13
pkg/front_end/testcases/check_deferred_before_args2.dart
Normal file
13
pkg/front_end/testcases/check_deferred_before_args2.dart
Normal file
|
@ -0,0 +1,13 @@
|
|||
// Copyright (c) 2018, 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.md file.
|
||||
|
||||
import 'deferred_lib.dart' deferred as lib;
|
||||
|
||||
main() {}
|
||||
|
||||
test() async {
|
||||
// The current evaluation order will triger the check of lib.m before the
|
||||
// loadLibrary call.
|
||||
lib.m(await lib.loadLibrary());
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
library;
|
||||
import self as self;
|
||||
import "./deferred_lib.dart" as def;
|
||||
|
||||
static method main() → dynamic {}
|
||||
static method test() → dynamic async {
|
||||
let final dynamic #t1 = CheckLibraryIsLoaded(lib) in def::m(await LoadLibrary(lib));
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
library;
|
||||
import self as self;
|
||||
|
||||
static method main() → dynamic
|
||||
;
|
||||
static method test() → dynamic
|
||||
;
|
|
@ -0,0 +1,8 @@
|
|||
library;
|
||||
import self as self;
|
||||
import "./deferred_lib.dart" as def;
|
||||
|
||||
static method main() → dynamic {}
|
||||
static method test() → dynamic async {
|
||||
let final dynamic #t1 = CheckLibraryIsLoaded(lib) in def::m(await LoadLibrary(lib));
|
||||
}
|
11
pkg/front_end/testcases/check_deferred_before_call.dart
Normal file
11
pkg/front_end/testcases/check_deferred_before_call.dart
Normal file
|
@ -0,0 +1,11 @@
|
|||
// Copyright (c) 2018, 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.md file.
|
||||
|
||||
import 'deferred_lib.dart' deferred as lib;
|
||||
|
||||
main() {}
|
||||
|
||||
test() {
|
||||
lib.m(3);
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
library;
|
||||
import self as self;
|
||||
import "./deferred_lib.dart" as def;
|
||||
|
||||
static method main() → dynamic {}
|
||||
static method test() → dynamic {
|
||||
let final dynamic #t1 = CheckLibraryIsLoaded(lib) in def::m(3);
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
library;
|
||||
import self as self;
|
||||
|
||||
static method main() → dynamic
|
||||
;
|
||||
static method test() → dynamic
|
||||
;
|
|
@ -0,0 +1,8 @@
|
|||
library;
|
||||
import self as self;
|
||||
import "./deferred_lib.dart" as def;
|
||||
|
||||
static method main() → dynamic {}
|
||||
static method test() → dynamic {
|
||||
let final dynamic #t1 = CheckLibraryIsLoaded(lib) in def::m(3);
|
||||
}
|
10
pkg/front_end/testcases/check_deferred_before_write.dart
Normal file
10
pkg/front_end/testcases/check_deferred_before_write.dart
Normal file
|
@ -0,0 +1,10 @@
|
|||
// Copyright (c) 2018, 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.md file.
|
||||
|
||||
import 'deferred_lib.dart' deferred as lib;
|
||||
|
||||
main() {}
|
||||
test() {
|
||||
lib.x = 2;
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
library;
|
||||
import self as self;
|
||||
import "./deferred_lib.dart" as def;
|
||||
|
||||
static method main() → dynamic {}
|
||||
static method test() → dynamic {
|
||||
let final dynamic #t1 = CheckLibraryIsLoaded(lib) in def::x = 2;
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
library;
|
||||
import self as self;
|
||||
|
||||
static method main() → dynamic
|
||||
;
|
||||
static method test() → dynamic
|
||||
;
|
|
@ -0,0 +1,8 @@
|
|||
library;
|
||||
import self as self;
|
||||
import "./deferred_lib.dart" as def;
|
||||
|
||||
static method main() → dynamic {}
|
||||
static method test() → dynamic {
|
||||
let final dynamic #t1 = CheckLibraryIsLoaded(lib) in def::x = 2;
|
||||
}
|
10
pkg/front_end/testcases/check_deferred_read.dart
Normal file
10
pkg/front_end/testcases/check_deferred_read.dart
Normal file
|
@ -0,0 +1,10 @@
|
|||
// Copyright (c) 2018, 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.md file.
|
||||
|
||||
import 'deferred_lib.dart' deferred as lib;
|
||||
|
||||
main() {}
|
||||
test() {
|
||||
print(lib.x + 1);
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
library;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "./deferred_lib.dart" as def;
|
||||
|
||||
static method main() → dynamic {}
|
||||
static method test() → dynamic {
|
||||
core::print((let final dynamic #t1 = CheckLibraryIsLoaded(lib) in def::x).+(1));
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
library;
|
||||
import self as self;
|
||||
|
||||
static method main() → dynamic
|
||||
;
|
||||
static method test() → dynamic
|
||||
;
|
|
@ -0,0 +1,9 @@
|
|||
library;
|
||||
import self as self;
|
||||
import "dart:core" as core;
|
||||
import "./deferred_lib.dart" as def;
|
||||
|
||||
static method main() → dynamic {}
|
||||
static method test() → dynamic {
|
||||
core::print((let final dynamic #t1 = CheckLibraryIsLoaded(lib) in def::x).+(1));
|
||||
}
|
7
pkg/front_end/testcases/deferred_lib.dart
Normal file
7
pkg/front_end/testcases/deferred_lib.dart
Normal file
|
@ -0,0 +1,7 @@
|
|||
// Copyright (c) 2018, 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.md file.
|
||||
|
||||
dynamic m(x) => null;
|
||||
|
||||
var x = 0;
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
import 'deferred_lib.dart' deferred as lib;
|
||||
|
||||
main() {
|
||||
main() {}
|
||||
test() {
|
||||
lib.foo();
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ library;
|
|||
import self as self;
|
||||
import "./deferred_lib.dart" as def;
|
||||
|
||||
static method main() → dynamic {
|
||||
def::foo();
|
||||
static method main() → dynamic {}
|
||||
static method test() → dynamic {
|
||||
let final dynamic #t1 = CheckLibraryIsLoaded(lib) in def::foo();
|
||||
}
|
||||
|
|
|
@ -3,3 +3,5 @@ import self as self;
|
|||
|
||||
static method main() → dynamic
|
||||
;
|
||||
static method test() → dynamic
|
||||
;
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
library;
|
||||
import self as self;
|
||||
import "./deferred_lib.dart" as def;
|
||||
|
||||
static method main() → dynamic {}
|
||||
static method test() → dynamic {
|
||||
let final dynamic #t1 = CheckLibraryIsLoaded(lib) in def::foo();
|
||||
}
|
|
@ -67,6 +67,7 @@ uninitialized_fields: Fail
|
|||
unused_methods: Fail
|
||||
void_methods: Fail
|
||||
warn_unresolved_sends: Fail # Test assumes Dart 1.0 semantics
|
||||
check_deferred_read: Fail
|
||||
|
||||
inference/abstract_class_instantiation: Fail # Issue #30040
|
||||
inference/conflicts_can_happen: TypeCheckError
|
||||
|
@ -174,7 +175,6 @@ rasta/mandatory_parameter_initializer: Fail
|
|||
rasta/mixin_library: TypeCheckError
|
||||
rasta/native_is_illegal: Fail
|
||||
rasta/parser_error: Fail
|
||||
rasta/previsit_deferred: Fail
|
||||
rasta/static: Fail
|
||||
rasta/super: TypeCheckError
|
||||
rasta/super_initializer: Fail
|
||||
|
|
|
@ -143,7 +143,6 @@ constructor_redirect2_negative_test: Crash # Issue 30856
|
|||
constructor_redirect2_test/01: MissingCompileTimeError
|
||||
constructor_redirect_test/01: Crash # Assertion failure: Cannot find value Instance of 'ThisLocal' in (local(A.named2#x), local(A.named2#y), local(A.named2#z)) for j:constructor(A.named2).
|
||||
cyclic_constructor_test/01: Crash # Issue 30856
|
||||
deferred_call_empty_before_load_test: RuntimeError
|
||||
deferred_constraints_constants_test/default_argument2: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary
|
||||
deferred_constraints_constants_test/none: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary
|
||||
deferred_constraints_constants_test/reference_after_load: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary
|
||||
|
@ -840,7 +839,6 @@ constructor_redirect2_negative_test: Crash # Issue 30856
|
|||
constructor_redirect2_test/01: MissingCompileTimeError
|
||||
constructor_redirect_test/01: Crash # Assertion failure: Cannot find value Instance of 'ThisLocal' in (local(A.named2#x), local(A.named2#y), local(A.named2#z)) for j:constructor(A.named2).
|
||||
cyclic_constructor_test/01: Crash # Issue 30856
|
||||
deferred_call_empty_before_load_test: RuntimeError
|
||||
deferred_constraints_constants_test/none: CompileTimeError
|
||||
deferred_constraints_constants_test/reference_after_load: CompileTimeError
|
||||
deferred_constraints_type_annotation_test/as_operation: RuntimeError
|
||||
|
@ -1167,7 +1165,6 @@ cyclic_type_test/01: RuntimeError
|
|||
cyclic_type_test/02: RuntimeError
|
||||
cyclic_type_test/03: RuntimeError
|
||||
cyclic_type_test/04: RuntimeError
|
||||
deferred_call_empty_before_load_test: RuntimeError
|
||||
deferred_constraints_constants_test/none: CompileTimeError
|
||||
deferred_constraints_constants_test/reference_after_load: CompileTimeError
|
||||
deferred_constraints_type_annotation_test/as_operation: Crash # NoSuchMethodError: The getter 'closureClassEntity' was called on null.
|
||||
|
|
|
@ -1197,7 +1197,6 @@ covariance_type_parameter_test/03: Crash # NoSuchMethodError: The method 'hasSub
|
|||
covariant_override/runtime_check_test: RuntimeError
|
||||
covariant_subtyping_test: CompileTimeError
|
||||
cyclic_constructor_test/01: Crash # Stack Overflow
|
||||
deferred_call_empty_before_load_test: RuntimeError
|
||||
deferred_constraints_constants_test/default_argument2: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary
|
||||
deferred_constraints_constants_test/none: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary
|
||||
deferred_constraints_constants_test/reference_after_load: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary
|
||||
|
@ -1749,7 +1748,6 @@ covariant_subtyping_unsafe_call1_test: RuntimeError
|
|||
covariant_subtyping_unsafe_call2_test: RuntimeError
|
||||
covariant_subtyping_unsafe_call3_test: RuntimeError
|
||||
cyclic_constructor_test/01: Crash # Stack Overflow
|
||||
deferred_call_empty_before_load_test: RuntimeError
|
||||
deferred_constraints_constants_test/default_argument2: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary
|
||||
deferred_constraints_constants_test/none: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary
|
||||
deferred_constraints_constants_test/reference_after_load: Crash # Unsupported operation: KernelDeferredLoadTask.addMirrorElementsForLibrary
|
||||
|
|
|
@ -41,7 +41,7 @@ tearoff_dynamic_test: Crash
|
|||
deferred_load_constants_test/02: Fail
|
||||
deferred_load_constants_test/03: Fail
|
||||
deferred_load_constants_test/05: Fail
|
||||
deferred_not_loaded_check_test: RuntimeError
|
||||
deferred_not_loaded_check_test: CompileTimeError
|
||||
vm/causal_async_exception_stack2_test: SkipByDesign
|
||||
vm/causal_async_exception_stack_test: SkipByDesign
|
||||
vm/regress_27201_test: Fail
|
||||
|
@ -329,11 +329,9 @@ cyclic_typedef_test/10: Crash
|
|||
cyclic_typedef_test/11: Crash
|
||||
default_factory2_test/01: MissingCompileTimeError
|
||||
default_factory_test/01: MissingCompileTimeError
|
||||
deferred_call_empty_before_load_test: RuntimeError # Fasta/KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_call_empty_before_load_test: CompileTimeError # VM doen't support deserializing load-library checks (issue XXX)
|
||||
deferred_closurize_load_library_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_closurize_load_library_test: DartkCrash
|
||||
deferred_constant_list_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_constant_list_test: RuntimeError
|
||||
deferred_constraints_constants_test/default_argument2: Pass # Passes by mistake. KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_constraints_constants_test/none: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_constraints_constants_test/reference_after_load: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
|
||||
|
@ -343,35 +341,27 @@ deferred_constraints_type_annotation_test/none: CompileTimeError # Deferred load
|
|||
deferred_constraints_type_annotation_test/static_method: CompileTimeError # Deferred loading kernel issue 28335.
|
||||
deferred_constraints_type_annotation_test/type_annotation_non_deferred: CompileTimeError # Deferred loading kernel issue 28335.
|
||||
deferred_function_type_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_function_type_test: RuntimeError
|
||||
deferred_global_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_import_core_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_inheritance_constraints_test/extends: MissingCompileTimeError # Fasta/KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_inheritance_constraints_test/implements: MissingCompileTimeError # Fasta/KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_inheritance_constraints_test/mixin: MissingCompileTimeError # Fasta/KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_inheritance_constraints_test/redirecting_constructor: MissingCompileTimeError
|
||||
deferred_inheritance_constraints_test/redirecting_constructor: RuntimeError # Fasta/KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_inheritance_constraints_test/redirecting_constructor: MissingCompileTimeError # Fasta/KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_inlined_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_inlined_test: RuntimeError
|
||||
deferred_load_constants_test/none: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_load_inval_code_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_load_library_wrong_args_test/01: Pass # Passes by mistake. KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_load_library_wrong_args_test/none: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_mixin_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_mixin_test: RuntimeError
|
||||
deferred_no_such_method_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_not_loaded_check_test: RuntimeError # Fasta/KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_not_loaded_check_test: CompileTimeError # Fasta/KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_only_constant_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_only_constant_test: RuntimeError
|
||||
deferred_optimized_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_redirecting_factory_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_redirecting_factory_test: RuntimeError
|
||||
deferred_redirecting_factory_test: RuntimeError # KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_regression_22995_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_regression_28678_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_shadow_load_library_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_shadow_load_library_test: RuntimeError
|
||||
deferred_shared_and_unshared_classes_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_shared_and_unshared_classes_test: RuntimeError
|
||||
deferred_static_seperate_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_super_dependency_test/01: Pass # Passes by mistake. KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_type_dependency_test/as: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
|
||||
|
@ -1149,7 +1139,7 @@ deep_nesting1_negative_test: Skip # Issue 31158
|
|||
deep_nesting2_negative_test: Skip # Issue 31158
|
||||
default_factory2_test/01: MissingCompileTimeError
|
||||
default_factory_test/01: MissingCompileTimeError
|
||||
deferred_call_empty_before_load_test: RuntimeError # Fasta/KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_call_empty_before_load_test: CompileTimeError # Fasta/KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_closurize_load_library_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_constant_list_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_constraints_constants_test: SkipByDesign
|
||||
|
@ -1176,7 +1166,7 @@ deferred_load_library_wrong_args_test/01: Pass # Passes by mistake. KernelVM bug
|
|||
deferred_load_library_wrong_args_test/none: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_mixin_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_no_such_method_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_not_loaded_check_test: RuntimeError # Fasta/KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_not_loaded_check_test: CompileTimeError # Fasta/KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_only_constant_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_optimized_test: CompileTimeError # KernelVM bug: Deferred loading kernel issue 28335.
|
||||
deferred_redirecting_factory_test: CompileTimeError, Fail, Crash # Issue 23408, KernelVM bug: Deferred loading kernel issue 28335.
|
||||
|
|
|
@ -135,7 +135,7 @@ mirrors/library_imports_shown_test: RuntimeError # Issue 31402 (Invocation argum
|
|||
mirrors/library_metadata_test: RuntimeError
|
||||
mirrors/list_constructor_test/01: Crash, RuntimeError
|
||||
mirrors/list_constructor_test/none: Crash, RuntimeError
|
||||
mirrors/load_library_test: Crash, RuntimeError
|
||||
mirrors/load_library_test: CompileTimeError
|
||||
mirrors/metadata_allowed_values_test/13: MissingCompileTimeError
|
||||
mirrors/metadata_allowed_values_test/14: MissingCompileTimeError
|
||||
mirrors/metadata_allowed_values_test/16: Skip # Flaky, crashes.
|
||||
|
|
Loading…
Reference in a new issue