提交 99cbfacc 编写于 作者: C Charles Stoner

Revert commit 021867a0

上级 f75bdbea
......@@ -83,7 +83,7 @@ public override IEnumerable<string> PreprocessorSymbolNames
this.PreprocessorSymbols = preprocessorSymbols;
}
internal new CSharpParseOptions WithKind(SourceCodeKind kind)
public new CSharpParseOptions WithKind(SourceCodeKind kind)
{
if (kind == this.Kind)
{
......@@ -153,7 +153,7 @@ public new CSharpParseOptions WithDocumentationMode(DocumentationMode documentat
return new CSharpParseOptions(this) { DocumentationMode = documentationMode };
}
internal override ParseOptions CommonWithKind(SourceCodeKind kind)
public override ParseOptions CommonWithKind(SourceCodeKind kind)
{
return WithKind(kind);
}
......
......@@ -70,6 +70,7 @@ Microsoft.CodeAnalysis.CSharp.CSharpParseOptions.Equals(Microsoft.CodeAnalysis.C
Microsoft.CodeAnalysis.CSharp.CSharpParseOptions.LanguageVersion.get -> Microsoft.CodeAnalysis.CSharp.LanguageVersion
Microsoft.CodeAnalysis.CSharp.CSharpParseOptions.WithDocumentationMode(Microsoft.CodeAnalysis.DocumentationMode documentationMode) -> Microsoft.CodeAnalysis.CSharp.CSharpParseOptions
Microsoft.CodeAnalysis.CSharp.CSharpParseOptions.WithFeatures(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string, string>> features) -> Microsoft.CodeAnalysis.CSharp.CSharpParseOptions
Microsoft.CodeAnalysis.CSharp.CSharpParseOptions.WithKind(Microsoft.CodeAnalysis.SourceCodeKind kind) -> Microsoft.CodeAnalysis.CSharp.CSharpParseOptions
Microsoft.CodeAnalysis.CSharp.CSharpParseOptions.WithLanguageVersion(Microsoft.CodeAnalysis.CSharp.LanguageVersion version) -> Microsoft.CodeAnalysis.CSharp.CSharpParseOptions
Microsoft.CodeAnalysis.CSharp.CSharpParseOptions.WithPreprocessorSymbols(System.Collections.Generic.IEnumerable<string> preprocessorSymbols) -> Microsoft.CodeAnalysis.CSharp.CSharpParseOptions
Microsoft.CodeAnalysis.CSharp.CSharpParseOptions.WithPreprocessorSymbols(System.Collections.Immutable.ImmutableArray<string> symbols) -> Microsoft.CodeAnalysis.CSharp.CSharpParseOptions
......@@ -2490,6 +2491,7 @@ override Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions.Equals(object ob
override Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions.GetHashCode() -> int
override Microsoft.CodeAnalysis.CSharp.CSharpParseOptions.CommonWithDocumentationMode(Microsoft.CodeAnalysis.DocumentationMode documentationMode) -> Microsoft.CodeAnalysis.ParseOptions
override Microsoft.CodeAnalysis.CSharp.CSharpParseOptions.CommonWithFeatures(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string, string>> features) -> Microsoft.CodeAnalysis.ParseOptions
override Microsoft.CodeAnalysis.CSharp.CSharpParseOptions.CommonWithKind(Microsoft.CodeAnalysis.SourceCodeKind kind) -> Microsoft.CodeAnalysis.ParseOptions
override Microsoft.CodeAnalysis.CSharp.CSharpParseOptions.Equals(object obj) -> bool
override Microsoft.CodeAnalysis.CSharp.CSharpParseOptions.Features.get -> System.Collections.Generic.IReadOnlyDictionary<string, string>
override Microsoft.CodeAnalysis.CSharp.CSharpParseOptions.GetHashCode() -> int
......
......@@ -7677,36 +7677,6 @@ static void Main()
CleanupAllGeneratedFiles(src.Path);
}
/// <summary>
/// Script compilation should be internal only.
/// </summary>
[WorkItem(1979, "https://github.com/dotnet/roslyn/issues/1979")]
[Fact]
public void ScriptCompilationInternalOnly()
{
const string source = @"System.Console.WriteLine();";
var dir = Temp.CreateDirectory();
var file = dir.CreateFile("c.csx");
file.WriteAllText(source);
// Compiling script file with internal API should be supported.
var compilation = CreateCompilationWithMscorlib(
source,
sourceFileName: file.Path,
parseOptions: new CSharpParseOptions(kind: SourceCodeKind.Script),
options: new CSharpCompilationOptions(OutputKind.ConsoleApplication));
compilation.VerifyDiagnostics();
// Compiling with command-line compiler, should not treat .csx as script.
var compiler = new MockCSharpCompiler(null, _baseDirectory, new[] { "/nologo", "/preferreduilang:en", file.Path });
var outWriter = new StringWriter(CultureInfo.InvariantCulture);
int exitCode = compiler.Run(outWriter);
Assert.Equal(1, exitCode);
Assert.True(outWriter.ToString().Contains("(1,25): error CS1022: Type or namespace definition, or end-of-file expected"));
CleanupAllGeneratedFiles(file.Path);
}
}
[DiagnosticAnalyzer(LanguageNames.CSharp, LanguageNames.VisualBasic)]
......
......@@ -773,7 +773,6 @@ internal IEnumerable<string> ResolveRelativePaths(IEnumerable<string> paths, str
private CommandLineSourceFile ToCommandLineSourceFile(string resolvedPath)
{
#if SCRIPTING
string extension = PathUtilities.GetExtension(resolvedPath);
bool isScriptFile;
......@@ -787,9 +786,6 @@ private CommandLineSourceFile ToCommandLineSourceFile(string resolvedPath)
}
return new CommandLineSourceFile(resolvedPath, isScriptFile);
#else
return new CommandLineSourceFile(resolvedPath, isScript: false);
#endif
}
internal IEnumerable<CommandLineSourceFile> ParseFileArgument(string arg, string baseDirectory, IList<Diagnostic> errors)
......
......@@ -32,12 +32,12 @@ internal ParseOptions(SourceCodeKind kind, DocumentationMode documentationMode)
/// <summary>
/// Creates a new options instance with the specified source code kind.
/// </summary>
internal ParseOptions WithKind(SourceCodeKind kind)
public ParseOptions WithKind(SourceCodeKind kind)
{
return CommonWithKind(kind);
}
internal abstract ParseOptions CommonWithKind(SourceCodeKind kind);
public abstract ParseOptions CommonWithKind(SourceCodeKind kind);
/// <summary>
/// Creates a new options instance with the specified documentation mode.
......
......@@ -752,6 +752,7 @@ Microsoft.CodeAnalysis.ParseOptions.Kind.get -> Microsoft.CodeAnalysis.SourceCod
Microsoft.CodeAnalysis.ParseOptions.Kind.set -> void
Microsoft.CodeAnalysis.ParseOptions.WithDocumentationMode(Microsoft.CodeAnalysis.DocumentationMode documentationMode) -> Microsoft.CodeAnalysis.ParseOptions
Microsoft.CodeAnalysis.ParseOptions.WithFeatures(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string, string>> features) -> Microsoft.CodeAnalysis.ParseOptions
Microsoft.CodeAnalysis.ParseOptions.WithKind(Microsoft.CodeAnalysis.SourceCodeKind kind) -> Microsoft.CodeAnalysis.ParseOptions
Microsoft.CodeAnalysis.Platform
Microsoft.CodeAnalysis.Platform.AnyCpu = 0 -> Microsoft.CodeAnalysis.Platform
Microsoft.CodeAnalysis.Platform.AnyCpu32BitPreferred = 4 -> Microsoft.CodeAnalysis.Platform
......@@ -1648,6 +1649,7 @@ abstract Microsoft.CodeAnalysis.Metadata.Kind.get -> Microsoft.CodeAnalysis.Meta
abstract Microsoft.CodeAnalysis.MetadataReferenceResolver.ResolveReference(string reference, string baseFilePath, Microsoft.CodeAnalysis.MetadataReferenceProperties properties) -> System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.PortableExecutableReference>
abstract Microsoft.CodeAnalysis.ParseOptions.CommonWithDocumentationMode(Microsoft.CodeAnalysis.DocumentationMode documentationMode) -> Microsoft.CodeAnalysis.ParseOptions
abstract Microsoft.CodeAnalysis.ParseOptions.CommonWithFeatures(System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string, string>> features) -> Microsoft.CodeAnalysis.ParseOptions
abstract Microsoft.CodeAnalysis.ParseOptions.CommonWithKind(Microsoft.CodeAnalysis.SourceCodeKind kind) -> Microsoft.CodeAnalysis.ParseOptions
abstract Microsoft.CodeAnalysis.ParseOptions.Features.get -> System.Collections.Generic.IReadOnlyDictionary<string, string>
abstract Microsoft.CodeAnalysis.ParseOptions.PreprocessorSymbolNames.get -> System.Collections.Generic.IEnumerable<string>
abstract Microsoft.CodeAnalysis.PortableExecutableReference.CreateDocumentationProvider() -> Microsoft.CodeAnalysis.DocumentationProvider
......@@ -2257,4 +2259,4 @@ virtual Microsoft.CodeAnalysis.Text.SourceText.WithChanges(System.Collections.Ge
virtual Microsoft.CodeAnalysis.Text.SourceText.Write(System.IO.TextWriter writer, Microsoft.CodeAnalysis.Text.TextSpan span, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> void
virtual Microsoft.CodeAnalysis.Text.TextLineCollection.GetLineFromPosition(int position) -> Microsoft.CodeAnalysis.Text.TextLine
virtual Microsoft.CodeAnalysis.Text.TextLineCollection.GetLinePosition(int position) -> Microsoft.CodeAnalysis.Text.LinePosition
virtual Microsoft.CodeAnalysis.XmlFileResolver.FileExists(string resolvedPath) -> bool
virtual Microsoft.CodeAnalysis.XmlFileResolver.FileExists(string resolvedPath) -> bool
\ No newline at end of file
......@@ -3231,6 +3231,7 @@ Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.LanguageVersion() ->
Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.New(languageVersion As Microsoft.CodeAnalysis.VisualBasic.LanguageVersion = Microsoft.CodeAnalysis.VisualBasic.LanguageVersion.VisualBasic14, documentationMode As Microsoft.CodeAnalysis.DocumentationMode = Microsoft.CodeAnalysis.DocumentationMode.Parse, kind As Microsoft.CodeAnalysis.SourceCodeKind = Microsoft.CodeAnalysis.SourceCodeKind.Regular, preprocessorSymbols As System.Collections.Generic.IEnumerable(Of System.Collections.Generic.KeyValuePair(Of String, Object)) = Nothing) -> Void
Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.PreprocessorSymbols() -> System.Collections.Immutable.ImmutableArray(Of System.Collections.Generic.KeyValuePair(Of String, Object))
Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.WithFeatures(features As System.Collections.Generic.IEnumerable(Of System.Collections.Generic.KeyValuePair(Of String, String))) -> Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions
Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.WithKind(kind As Microsoft.CodeAnalysis.SourceCodeKind) -> Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions
Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.WithLanguageVersion(version As Microsoft.CodeAnalysis.VisualBasic.LanguageVersion) -> Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions
Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.WithPreprocessorSymbols(ParamArray symbols As System.Collections.Generic.KeyValuePair(Of String, Object)()) -> Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions
Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.WithPreprocessorSymbols(symbols As System.Collections.Generic.IEnumerable(Of System.Collections.Generic.KeyValuePair(Of String, Object))) -> Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions
......@@ -4408,6 +4409,7 @@ Overrides Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.Equal
Overrides Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.GetHashCode() -> Integer
Overrides Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.CommonWithDocumentationMode(documentationMode As Microsoft.CodeAnalysis.DocumentationMode) -> Microsoft.CodeAnalysis.ParseOptions
Overrides Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.CommonWithFeatures(features As System.Collections.Generic.IEnumerable(Of System.Collections.Generic.KeyValuePair(Of String, String))) -> Microsoft.CodeAnalysis.ParseOptions
Overrides Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.CommonWithKind(kind As Microsoft.CodeAnalysis.SourceCodeKind) -> Microsoft.CodeAnalysis.ParseOptions
Overrides Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.Equals(obj As Object) -> Boolean
Overrides Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.Features() -> System.Collections.Generic.IReadOnlyDictionary(Of String, String)
Overrides Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.GetHashCode() -> Integer
......@@ -154,7 +154,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
''' </summary>
''' <param name="kind">The parser source code kind.</param>
''' <returns>A new instance of VisualBasicParseOptions if source code kind is different; otherwise current instance.</returns>
Friend Shadows Function WithKind(kind As SourceCodeKind) As VisualBasicParseOptions
Public Shadows Function WithKind(kind As SourceCodeKind) As VisualBasicParseOptions
If kind = Me.Kind Then
Return Me
End If
......@@ -225,7 +225,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
''' </summary>
''' <param name="kind">The parser source code kind.</param>
''' <returns>A new instance of ParseOptions.</returns>
Friend Overrides Function CommonWithKind(kind As SourceCodeKind) As ParseOptions
Public Overrides Function CommonWithKind(kind As SourceCodeKind) As ParseOptions
Return WithKind(kind)
End Function
......
......@@ -7135,35 +7135,6 @@ End Class
Assert.Contains(CodeAnalysisResources.AnalyzerExecutionTimeColumnHeader, output, StringComparison.Ordinal)
CleanupAllGeneratedFiles(source)
End Sub
''' <summary>
''' Script compilation should be internal only.
''' </summary>
<WorkItem(1979, "https://github.com/dotnet/roslyn/issues/1979")>
<Fact>
Public Sub ScriptCompilationInternalOnly()
Dim source = "System.Console.WriteLine()"
Dim dir = Temp.CreateDirectory()
Dim file = dir.CreateFile("b.vbx")
file.WriteAllText(source)
' Compiling script file with internal API should be supported.
Dim compilation = CreateCompilationWithMscorlib(
<compilation>
<file name="b.vbx"><%= source %></file>
</compilation>,
parseOptions:=New VisualBasicParseOptions(kind:=SourceCodeKind.Script),
options:=New VisualBasicCompilationOptions(OutputKind.ConsoleApplication))
compilation.VerifyDiagnostics()
' Compiling with command-line compiler, should not treat .vbx as script.
Dim cmd = New MockVisualBasicCompiler(Nothing, _baseDirectory, {"/nologo", "/preferreduilang:en", file.Path})
Dim output As StringWriter = New StringWriter()
cmd.Run(output, Nothing)
Assert.True(output.ToString().Contains("error BC30689: Statement cannot appear outside of a method body."))
CleanupAllGeneratedFiles(file.Path)
End Sub
End Class
<DiagnosticAnalyzer(LanguageNames.VisualBasic)>
......
......@@ -242,16 +242,12 @@ private DocumentState SetParseOptions(ParseOptions options)
public DocumentState UpdateSourceCodeKind(SourceCodeKind kind)
{
#if SCRIPTING
if (this.ParseOptions == null || kind == this.SourceCodeKind)
{
return this;
}
return this.SetParseOptions(this.ParseOptions.WithKind(kind));
#else
return this;
#endif
}
public DocumentState UpdateFolders(IList<string> folders)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册