add Pubspec.dependencyOverrides
Closes #34513
https://github.com/dart-lang/sdk/pull/34513
GitOrigin-RevId: 067b26fde3631f877a6a84453ab60702bd242142
Change-Id: I4eb6ec3567d6dabfbf0a5e69fe4c6094e3a22d04
Reviewed-on: https://dart-review.googlesource.com/75360
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analyzer/lib/src/lint/linter.dart b/pkg/analyzer/lib/src/lint/linter.dart
index e4fde6c..d9050f4 100644
--- a/pkg/analyzer/lib/src/lint/linter.dart
+++ b/pkg/analyzer/lib/src/lint/linter.dart
@@ -288,9 +288,8 @@
Source source = createSource(node.span.sourceUrl);
// Cache error and location info for creating AnalysisErrorInfos
- // Note that error columns are 1-based
AnalysisError error = new AnalysisError(
- source, node.span.start.column + 1, node.span.length, lintCode);
+ source, node.span.start.offset, node.span.length, lintCode);
LineInfo lineInfo = new LineInfo.fromContent(source.contents.data);
_locationInfo.add(new AnalysisErrorInfoImpl([error], lineInfo));
diff --git a/pkg/analyzer/lib/src/lint/pub.dart b/pkg/analyzer/lib/src/lint/pub.dart
index 8d12e13..1db39bf 100644
--- a/pkg/analyzer/lib/src/lint/pub.dart
+++ b/pkg/analyzer/lib/src/lint/pub.dart
@@ -122,6 +122,7 @@
PSEntry get author;
PSNodeList get authors;
PSDependencyList get dependencies;
+ PSDependencyList get dependencyOverrides;
PSEntry get description;
PSDependencyList get devDependencies;
PSEntry get documentation;
@@ -136,6 +137,8 @@
T visitPackageAuthors(PSNodeList authors) => null;
T visitPackageDependencies(PSDependencyList dependencies) => null;
T visitPackageDependency(PSDependency dependency) => null;
+ T visitPackageDependencyOverrides(PSDependencyList dependencies) => null;
+ T visitPackageDependencyOverride(PSDependency dependency) => null;
T visitPackageDescription(PSEntry description) => null;
T visitPackageDevDependencies(PSDependencyList dependencies) => null;
T visitPackageDevDependency(PSDependency dependency) => null;
@@ -318,6 +321,8 @@
PSDependencyList dependencies;
@override
PSDependencyList devDependencies;
+ @override
+ PSDependencyList dependencyOverrides;
_Pubspec(String src, {Uri sourceUrl}) {
try {
@@ -352,11 +357,15 @@
}
if (dependencies != null) {
visitor.visitPackageDependencies(dependencies);
- dependencies.forEach((d) => visitor.visitPackageDependency(d));
+ dependencies.forEach(visitor.visitPackageDependency);
}
if (devDependencies != null) {
visitor.visitPackageDevDependencies(devDependencies);
- devDependencies.forEach((d) => visitor.visitPackageDevDependency(d));
+ devDependencies.forEach(visitor.visitPackageDevDependency);
+ }
+ if (dependencyOverrides != null) {
+ visitor.visitPackageDependencyOverrides(dependencyOverrides);
+ dependencyOverrides.forEach(visitor.visitPackageDependencyOverride);
}
}
@@ -371,6 +380,7 @@
sb.writelin(homepage);
sb.writelin(dependencies);
sb.writelin(devDependencies);
+ sb.writelin(dependencyOverrides);
return sb.toString();
}
@@ -410,6 +420,9 @@
case 'dev_dependencies':
devDependencies = _processDependencies(key, v);
break;
+ case 'dependency_overrides':
+ dependencyOverrides = _processDependencies(key, v);
+ break;
case 'version':
version = _processScalar(key, v);
break;
diff --git a/pkg/analyzer/test/src/lint/pub_test.dart b/pkg/analyzer/test/src/lint/pub_test.dart
index 5a7f721..aa3412e 100644
--- a/pkg/analyzer/test/src/lint/pub_test.dart
+++ b/pkg/analyzer/test/src/lint/pub_test.dart
@@ -39,6 +39,8 @@
dev_dependencies:
markdown: '>=0.7.1+2 <0.8.0'
unittest: '>=0.11.0 <0.12.0'
+dependency_overrides:
+ foo: 1.2.0
""";
Pubspec ps = new Pubspec.parse(src);
@@ -83,6 +85,10 @@
{'markdown': '>=0.7.1+2 <0.8.0'}
]);
+ testDepListContains('dependency_overrides', ps.dependencyOverrides, [
+ {'foo': '1.2.0'}
+ ]);
+
group('hosted', () {
PSDependency dep =
findDependency(ps.dependencies, name: 'transmogrify');