@@ -12,6 +12,9 @@ abstract class KnownPlatforms {
12
12
static const String flutter = 'flutter' ;
13
13
static const String mirrors = 'mirrors' ;
14
14
15
+ /// Native extensions (Dart VM with C/C++ code).
16
+ static const String native = 'native' ;
17
+
15
18
static const String angular = 'angular' ;
16
19
}
17
20
@@ -45,23 +48,27 @@ class Platform extends Object with _$PlatformSerializerMixin {
45
48
46
49
bool get hasConflict =>
47
50
(! worksAnywhere) ||
48
- (uses.contains (KnownPlatforms .flutter) && ! worksInFlutter);
51
+ (uses.contains (KnownPlatforms .flutter) && ! worksInFlutter) ||
52
+ (uses.contains (KnownPlatforms .native ) && ! worksInConsole);
49
53
50
54
bool get worksEverywhere =>
51
55
worksInBrowser && worksInConsole && worksInFlutter;
52
56
53
57
bool get worksAnywhere => worksInBrowser || worksInConsole || worksInFlutter;
54
58
55
59
bool get worksInBrowser =>
56
- _hasNoUseOf ([KnownPlatforms .flutter]) &&
60
+ _hasNoUseOf ([KnownPlatforms .flutter, KnownPlatforms . native ]) &&
57
61
(uses.contains (KnownPlatforms .browser) ||
58
62
_hasNoUseOf ([KnownPlatforms .console]));
59
63
60
64
bool get worksInConsole =>
61
65
_hasNoUseOf ([KnownPlatforms .browser, KnownPlatforms .flutter]);
62
66
63
- bool get worksInFlutter =>
64
- _hasNoUseOf ([KnownPlatforms .browser, KnownPlatforms .mirrors]);
67
+ bool get worksInFlutter => _hasNoUseOf ([
68
+ KnownPlatforms .browser,
69
+ KnownPlatforms .mirrors,
70
+ KnownPlatforms .native ,
71
+ ]);
65
72
66
73
bool _hasNoUseOf (Iterable <String > platforms) =>
67
74
! platforms.any ((p) => uses.contains (p));
@@ -104,6 +111,10 @@ Platform classifyPlatform(Iterable<String> dependencies) {
104
111
uses.add (KnownPlatforms .mirrors);
105
112
}
106
113
114
+ if (libs.any ((String lib) => lib.startsWith ('dart-ext:' ))) {
115
+ uses.add (KnownPlatforms .native );
116
+ }
117
+
107
118
// packages
108
119
if (libs.any ((p) => p.startsWith ('package:angular2/' ))) {
109
120
uses.add (KnownPlatforms .angular);
0 commit comments