diff --git a/lib/src/model/package.dart b/lib/src/model/package.dart index c09be930a0..46721d50e5 100644 --- a/lib/src/model/package.dart +++ b/lib/src/model/package.dart @@ -226,9 +226,20 @@ class Package extends LibraryContainer case 'b': { Version version = Version.parse(packageMeta.version); - return version.isPreRelease - ? version.preRelease.first - : 'stable'; + String tag = 'stable'; + if (version.isPreRelease) { + // version.preRelease is a List with a mix of + // integers and strings. Given this, handle + // 2.8.0-dev.1.0, 2.9.0-1.0.dev, and similar + // variations. + tag = version.preRelease.whereType().first; + // Who knows about non-SDK packages, but assert that SDKs + // must conform to the known format. + assert( + packageMeta.isSdk == false || int.tryParse(tag) == null, + 'Got an integer as string instead of the expected "dev" tag'); + } + return tag; } case 'n': return name;