提交 5cfa41de 编写于 作者: A Andrew Hall (METAL)

Don't suggest an upgrade to an unsupported state

上级 10a3c83f
......@@ -85,8 +85,11 @@ public override bool IsUpgrade(ParseOptions projectOptions, string newVersion)
var parseOptions = (CSharpParseOptions)projectOptions;
Contract.ThrowIfFalse(LanguageVersionFacts.TryParse(newVersion, out var parsedNewVersion));
var mappedVersion = parsedNewVersion.MapSpecifiedToEffectiveVersion();
// treat equivalent versions (one generic and one specific) to be a valid upgrade
return parsedNewVersion.MapSpecifiedToEffectiveVersion() >= parseOptions.LanguageVersion &&
return mappedVersion >= parseOptions.LanguageVersion &&
mappedVersion < LanguageVersion.CSharp8 &&
parseOptions.SpecifiedLanguageVersion.ToDisplayString() != newVersion;
}
}
......
......@@ -39,15 +39,24 @@ protected ImmutableArray<CodeAction> GetUpgradeProjectCodeActionsAsync(CodeFixCo
var project = context.Document.Project;
var solution = project.Solution;
var newVersion = SuggestedVersion(context.Diagnostics);
var result = new List<CodeAction>();
var language = project.Language;
var upgradeableProjects = solution.Projects.Where(p => CanUpgrade(p, language, newVersion)).AsImmutable();
if (upgradeableProjects.Length == 0)
{
return ImmutableArray<CodeAction>.Empty;
}
var fixOneProjectTitle = string.Format(UpgradeThisProjectResource, newVersion);
var fixOneProject = new ProjectOptionsChangeAction(fixOneProjectTitle,
_ => Task.FromResult(UpgradeProject(project, newVersion)));
result.Add(fixOneProject);
if (solution.Projects.Count(p => CanUpgrade(p, language, newVersion)) > 1)
if (upgradeableProjects.Length > 1)
{
var fixAllProjectsTitle = string.Format(UpgradeAllProjectsResource, newVersion);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册