Skip to content

Commit 7282a40

Browse files
scheglovCommit Bot
authored and
Commit Bot
committed
Report ILLEGAL_LANGUAGE_VERSION_OVERRIDE even when the package language version causes it.
Change-Id: I617d67ba06758e3f57d9ff0048a080d0a699fc96 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/232126 Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent 5b1a22f commit 7282a40

File tree

2 files changed

+40
-10
lines changed

2 files changed

+40
-10
lines changed

pkg/analyzer/lib/src/generated/error_verifier.dart

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2745,21 +2745,26 @@ class ErrorVerifier extends RecursiveAstVisitor<void>
27452745
return;
27462746
}
27472747

2748-
var languageVersionToken = node.languageVersionToken;
2749-
if (languageVersionToken == null) {
2750-
return;
2751-
}
2752-
27532748
var languageVersion = _currentLibrary.languageVersion.effective;
27542749
if (sourceLanguageConstraint.allows(languageVersion)) {
27552750
return;
27562751
}
27572752

2758-
errorReporter.reportErrorForToken(
2759-
CompileTimeErrorCode.ILLEGAL_LANGUAGE_VERSION_OVERRIDE,
2760-
languageVersionToken,
2761-
['$sourceLanguageConstraint'],
2762-
);
2753+
var languageVersionToken = node.languageVersionToken;
2754+
if (languageVersionToken != null) {
2755+
errorReporter.reportErrorForToken(
2756+
CompileTimeErrorCode.ILLEGAL_LANGUAGE_VERSION_OVERRIDE,
2757+
languageVersionToken,
2758+
['$sourceLanguageConstraint'],
2759+
);
2760+
} else {
2761+
errorReporter.reportErrorForOffset(
2762+
CompileTimeErrorCode.ILLEGAL_LANGUAGE_VERSION_OVERRIDE,
2763+
0,
2764+
0,
2765+
['$sourceLanguageConstraint'],
2766+
);
2767+
}
27632768
}
27642769

27652770
/// Verify that the given implements [clause] does not implement classes such

pkg/analyzer/test/src/diagnostics/illegal_language_version_override_test.dart

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,31 @@ int a = null;
4040
]);
4141
}
4242

43+
test_hasPackageLanguage_less_hasOverride_greater() async {
44+
writeTestPackageConfig(
45+
PackageConfigFileBuilder(),
46+
languageVersion: '2.9',
47+
);
48+
49+
await assertNoErrorsInCode(r'''
50+
// @dart = 2.12
51+
void f() {}
52+
''');
53+
}
54+
55+
test_hasPackageLanguage_less_noOverride_less() async {
56+
writeTestPackageConfig(
57+
PackageConfigFileBuilder(),
58+
languageVersion: '2.9',
59+
);
60+
61+
await assertErrorsInCode(r'''
62+
void f() {}
63+
''', [
64+
error(CompileTimeErrorCode.ILLEGAL_LANGUAGE_VERSION_OVERRIDE, 0, 0),
65+
]);
66+
}
67+
4368
test_noOverride() async {
4469
await assertNoErrorsInCode(r'''
4570
void f() {}

0 commit comments

Comments
 (0)