diff --git a/pkg/kernel/lib/ast.dart b/pkg/kernel/lib/ast.dart index d738ec503c6..2da3cd52561 100644 --- a/pkg/kernel/lib/ast.dart +++ b/pkg/kernel/lib/ast.dart @@ -155,8 +155,6 @@ abstract class TreeNode extends Node { Component get enclosingComponent => parent?.enclosingComponent; - Library get enclosingLibrary => parent?.enclosingLibrary; - /// Returns the best known source location of the given AST node, or `null` if /// the node is orphaned. /// @@ -468,8 +466,6 @@ class Library extends NamedNode implements Comparable, FileUriNode { Location _getLocationInEnclosingFile(int offset) { return _getLocationInComponent(enclosingComponent, fileUri, offset); } - - Library get enclosingLibraray => this; } /// An import or export declaration in a library. diff --git a/pkg/vm/lib/transformations/ffi_use_sites.dart b/pkg/vm/lib/transformations/ffi_use_sites.dart index 8e9227caba1..178de15f4c2 100644 --- a/pkg/vm/lib/transformations/ffi_use_sites.dart +++ b/pkg/vm/lib/transformations/ffi_use_sites.dart @@ -46,6 +46,8 @@ class _FfiUseSiteTransformer extends FfiTransformer { final Map replacedGetters; final Map replacedSetters; + bool isFfiLibrary; + _FfiUseSiteTransformer( ClassHierarchy hierarchy, CoreTypes coreTypes, @@ -54,6 +56,12 @@ class _FfiUseSiteTransformer extends FfiTransformer { this.replacedSetters) : super(hierarchy, coreTypes, diagnosticReporter) {} + @override + TreeNode visitLibrary(Library node) { + isFfiLibrary = node == ffiLibrary; + return super.visitLibrary(node); + } + @override visitClass(Class node) { env.thisType = InterfaceType(node); @@ -124,7 +132,7 @@ class _FfiUseSiteTransformer extends FfiTransformer { _ensureNativeTypeValid(nativeType, node); _ensureNativeTypeToDartType(nativeType, dartType, node); } else if (target == asFunctionMethod) { - if (node.enclosingLibrary == ffiLibrary) { + if (isFfiLibrary) { // Library code of dart:ffi uses asFunction to implement // lookupFunction. Since we treat lookupFunction as well, this call // can be generic and still support AOT.