Index: pkg/kernel/lib/target/targets.dart |
diff --git a/pkg/kernel/lib/target/targets.dart b/pkg/kernel/lib/target/targets.dart |
index c47c117fe972d1c61487e542d1d93fa44f648396..3227f012c7b72a3ae7ef275653378886a0a37049 100644 |
--- a/pkg/kernel/lib/target/targets.dart |
+++ b/pkg/kernel/lib/target/targets.dart |
@@ -121,6 +121,29 @@ abstract class Target { |
void performGlobalTransformations(CoreTypes coreTypes, Program program, |
{void logger(String msg)}); |
+ /// Whether a platform library may define a restricted type, such as `bool`, |
+ /// `int`, `double`, `num`, and `String`. |
+ /// |
+ /// By default only `dart:core` may define restricted types, but some target |
+ /// implementations override this. |
+ bool mayDefineRestrictedType(Uri uri) => |
+ uri.scheme == 'dart' && uri.path == 'core'; |
+ |
+ /// Whether the `native` language extension is supported within [library]. |
+ /// |
+ /// The `native` language extension is not part of the language specification, |
+ /// it means something else to each target, and it is enabled under different |
+ /// circumstances for each target implementation. For example, the VM target |
+ /// enables it everywhere because of existing support for "dart-ext:" native |
+ /// extensions, but targets like dart2js only enable it on the core libraries. |
+ bool enableNative(Uri uri) => false; |
+ |
+ /// There are two variants of the `native` language extension. The VM expects |
+ /// the native token to be followed by string, whereas dart2js and DDC do not. |
+ // TODO(sigmund, ahe): ideally we should remove the `native` syntax, if not, |
+ // we should at least unify the VM and non-VM variants. |
+ bool get nativeExtensionExpectsString => false; |
+ |
/// Builds an expression that instantiates an [Invocation] that can be passed |
/// to [noSuchMethod]. |
Expression instantiateInvocation(CoreTypes coreTypes, Expression receiver, |