Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
94d1392b
R
roslyn
项目概览
lwm1986
/
roslyn
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
roslyn
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
94d1392b
编写于
5月 18, 2015
作者:
C
Charles Stoner
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Treat .csx/.vbx as regular source files not script
上级
d5da0cd3
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
61 addition
and
14 deletion
+61
-14
src/Compilers/CSharp/Test/CommandLine/CommandLineTests.cs
src/Compilers/CSharp/Test/CommandLine/CommandLineTests.cs
+30
-0
src/Compilers/Core/Portable/CommandLine/CommonCommandLineParser.cs
...lers/Core/Portable/CommandLine/CommonCommandLineParser.cs
+2
-14
src/Compilers/VisualBasic/Test/CommandLine/CommandLineTests.vb
...ompilers/VisualBasic/Test/CommandLine/CommandLineTests.vb
+29
-0
未找到文件。
src/Compilers/CSharp/Test/CommandLine/CommandLineTests.cs
浏览文件 @
94d1392b
...
...
@@ -7677,6 +7677,36 @@ 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
)]
...
...
src/Compilers/Core/Portable/CommandLine/CommonCommandLineParser.cs
浏览文件 @
94d1392b
...
...
@@ -771,21 +771,9 @@ internal IEnumerable<string> ResolveRelativePaths(IEnumerable<string> paths, str
}
}
internal
CommandLineSourceFile
ToCommandLineSourceFile
(
string
resolvedPath
)
private
CommandLineSourceFile
ToCommandLineSourceFile
(
string
resolvedPath
)
{
string
extension
=
PathUtilities
.
GetExtension
(
resolvedPath
);
bool
isScriptFile
;
if
(
IsInteractive
)
{
isScriptFile
=
!
string
.
Equals
(
extension
,
RegularFileExtension
,
StringComparison
.
OrdinalIgnoreCase
);
}
else
{
isScriptFile
=
string
.
Equals
(
extension
,
ScriptFileExtension
,
StringComparison
.
OrdinalIgnoreCase
);
}
return
new
CommandLineSourceFile
(
resolvedPath
,
isScriptFile
);
return
new
CommandLineSourceFile
(
resolvedPath
,
isScript
:
false
);
}
internal
IEnumerable
<
CommandLineSourceFile
>
ParseFileArgument
(
string
arg
,
string
baseDirectory
,
IList
<
Diagnostic
>
errors
)
...
...
src/Compilers/VisualBasic/Test/CommandLine/CommandLineTests.vb
浏览文件 @
94d1392b
...
...
@@ -7135,6 +7135,35 @@ 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
)
>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录