Index: pkg/compiler/lib/src/js_backend/lookup_map_analysis.dart |
diff --git a/pkg/compiler/lib/src/js_backend/lookup_map_analysis.dart b/pkg/compiler/lib/src/js_backend/lookup_map_analysis.dart |
index 7be572b6c95e73e2049cdcc84abc6d30bc226ca6..4f372c38ce4dac32196b16edb0869fbf66e035cf 100644 |
--- a/pkg/compiler/lib/src/js_backend/lookup_map_analysis.dart |
+++ b/pkg/compiler/lib/src/js_backend/lookup_map_analysis.dart |
@@ -28,6 +28,7 @@ import '../elements/elements.dart' show |
import '../enqueue.dart' show Enqueuer; |
import 'js_backend.dart' show JavaScriptBackend; |
import '../dart_types.dart' show DynamicType, InterfaceType; |
+import 'package:pub_semver/pub_semver.dart'; |
/// An analysis and optimization to remove unused entries from a `LookupMap`. |
/// |
@@ -162,8 +163,12 @@ class LookupMapAnalysis { |
// TODO(sigmund): add proper version resolution using the pub_semver package |
// when we introduce the next version. |
- String version = value.primitiveValue.slowToString(); |
- if (version != '0.0.1') { |
+ Version version; |
+ try { |
+ version = new Version.parse(value.primitiveValue.slowToString()); |
+ } catch (e) {} |
+ |
+ if (version == null || !_validLookupMapVersionConstraint.allows(version)) { |
backend.compiler.reportInfo(lookupMapVersionVariable, |
MessageKind.UNRECOGNIZED_VERSION_OF_LOOKUP_MAP); |
return; |
@@ -430,3 +435,6 @@ class _LookupMapInfo { |
} |
} |
} |
+ |
+final _validLookupMapVersionConstraint = |
+ new VersionConstraint.parse('^0.0.1'); |