Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
8b596f4a
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,发现更多精彩内容 >>
提交
8b596f4a
编写于
4月 15, 2015
作者:
C
Charles Stoner
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add IgnoreAccessibility to PEModuleBuilder
上级
c8e8ad36
变更
12
隐藏空白更改
内联
并排
Showing
12 changed file
with
59 addition
and
23 deletion
+59
-23
src/Compilers/CSharp/Portable/Compiler/MethodCompiler.cs
src/Compilers/CSharp/Portable/Compiler/MethodCompiler.cs
+1
-0
src/Compilers/CSharp/Portable/Emitter/Model/PEModuleBuilder.cs
...ompilers/CSharp/Portable/Emitter/Model/PEModuleBuilder.cs
+9
-0
src/Compilers/CSharp/Portable/Lowering/AsyncRewriter/AsyncRewriter.cs
...s/CSharp/Portable/Lowering/AsyncRewriter/AsyncRewriter.cs
+3
-1
src/Compilers/VisualBasic/Portable/BasicCodeAnalysis.vbproj
src/Compilers/VisualBasic/Portable/BasicCodeAnalysis.vbproj
+1
-0
src/Compilers/VisualBasic/Portable/Binding/IgnoreAccessibilityBinder.vb
...VisualBasic/Portable/Binding/IgnoreAccessibilityBinder.vb
+8
-1
src/Compilers/VisualBasic/Portable/Emit/PEModuleBuilder.vb
src/Compilers/VisualBasic/Portable/Emit/PEModuleBuilder.vb
+10
-0
src/Compilers/VisualBasic/Portable/Lowering/AsyncRewriter/AsyncRewriter.vb
...ualBasic/Portable/Lowering/AsyncRewriter/AsyncRewriter.vb
+12
-19
src/Compilers/VisualBasic/Portable/Lowering/Rewriter.vb
src/Compilers/VisualBasic/Portable/Lowering/Rewriter.vb
+3
-0
src/ExpressionEvaluator/CSharp/Source/ExpressionCompiler/EEAssemblyBuilder.cs
...tor/CSharp/Source/ExpressionCompiler/EEAssemblyBuilder.cs
+5
-0
src/ExpressionEvaluator/VisualBasic/Source/ExpressionCompiler/BasicExpressionCompiler.vbproj
.../Source/ExpressionCompiler/BasicExpressionCompiler.vbproj
+0
-1
src/ExpressionEvaluator/VisualBasic/Source/ExpressionCompiler/EEAssemblyBuilder.vb
...isualBasic/Source/ExpressionCompiler/EEAssemblyBuilder.vb
+6
-0
src/ExpressionEvaluator/VisualBasic/Test/ExpressionCompiler/ExpressionCompilerTests.vb
...lBasic/Test/ExpressionCompiler/ExpressionCompilerTests.vb
+1
-1
未找到文件。
src/Compilers/CSharp/Portable/Compiler/MethodCompiler.cs
浏览文件 @
8b596f4a
...
...
@@ -581,6 +581,7 @@ private void CompileSynthesizedMethods(ImmutableArray<NamedTypeSymbol> additiona
private
void
CompileSynthesizedMethods
(
TypeCompilationState
compilationState
)
{
Debug
.
Assert
(
_moduleBeingBuiltOpt
!=
null
);
Debug
.
Assert
(
compilationState
.
ModuleBuilderOpt
==
_moduleBeingBuiltOpt
);
if
(!
compilationState
.
HasSynthesizedMethods
)
{
...
...
src/Compilers/CSharp/Portable/Emitter/Model/PEModuleBuilder.cs
浏览文件 @
8b596f4a
...
...
@@ -324,6 +324,15 @@ private Location GetSmallestSourceLocationOrNull(Symbol symbol)
return
result
;
}
/// <summary>
/// Ignore accessibility when resolving well-known type
/// members, in particular for generic type arguments.
/// </summary>
internal
virtual
bool
IgnoreAccessibility
{
get
{
return
false
;
}
}
internal
virtual
VariableSlotAllocator
TryCreateVariableSlotAllocator
(
MethodSymbol
method
)
{
return
null
;
...
...
src/Compilers/CSharp/Portable/Lowering/AsyncRewriter/AsyncRewriter.cs
浏览文件 @
8b596f4a
...
...
@@ -13,6 +13,7 @@ internal partial class AsyncRewriter : StateMachineRewriter
private
readonly
AsyncMethodBuilderMemberCollection
_asyncMethodBuilderMemberCollection
;
private
readonly
bool
_constructedSuccessfully
;
private
readonly
int
_methodOrdinal
;
private
readonly
bool
_ignoreAccessibility
;
private
FieldSymbol
_builderField
;
...
...
@@ -37,6 +38,7 @@ internal partial class AsyncRewriter : StateMachineRewriter
}
_methodOrdinal
=
methodOrdinal
;
_ignoreAccessibility
=
compilationState
.
ModuleBuilderOpt
.
IgnoreAccessibility
;
}
/// <summary>
...
...
@@ -166,7 +168,7 @@ protected override BoundStatement GenerateStateMachineCreation(LocalSymbol state
bodyBuilder
.
Add
(
F
.
Assignment
(
F
.
Field
(
F
.
Local
(
stateMachineVariable
),
_builderField
.
AsMember
(
frameType
)),
F
.
StaticCall
(
BinderFlags
.
IgnoreAccessibility
,
methodScopeAsyncMethodBuilderMemberCollection
.
BuilderType
,
"Create"
,
ImmutableArray
<
TypeSymbol
>.
Empty
)));
F
.
StaticCall
(
_ignoreAccessibility
?
BinderFlags
.
IgnoreAccessibility
:
BinderFlags
.
None
,
methodScopeAsyncMethodBuilderMemberCollection
.
BuilderType
,
"Create"
,
ImmutableArray
<
TypeSymbol
>.
Empty
)));
// local.$stateField = NotStartedStateMachine
bodyBuilder
.
Add
(
...
...
src/Compilers/VisualBasic/Portable/BasicCodeAnalysis.vbproj
浏览文件 @
8b596f4a
...
...
@@ -181,6 +181,7 @@
<Compile
Include=
"Binding\ForOrForEachBlockBinder.vb"
/>
<Compile
Include=
"Binding\ForEachEnumeratorInfo.vb"
/>
<Compile
Include=
"Binding\GetTypeBinder.vb"
/>
<Compile
Include=
"Binding\IgnoreAccessibilityBinder.vb"
/>
<Compile
Include=
"Binding\IgnoreBaseClassesBinder.vb"
/>
<Compile
Include=
"Binding\ImplicitVariableBinder.vb"
/>
<Compile
Include=
"Binding\ImportAliasesBinder.vb"
/>
...
...
src/
ExpressionEvaluator/VisualBasic/Source/ExpressionCompiler/Binders
/IgnoreAccessibilityBinder.vb
→
src/
Compilers/VisualBasic/Portable/Binding
/IgnoreAccessibilityBinder.vb
浏览文件 @
8b596f4a
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Namespace
Microsoft.CodeAnalysis.VisualBasic.ExpressionEvaluator
Imports
System.Runtime.InteropServices
Imports
Microsoft.CodeAnalysis.VisualBasic.Symbols
Namespace
Microsoft.CodeAnalysis.VisualBasic
Friend
NotInheritable
Class
IgnoreAccessibilityBinder
Inherits
Binder
...
...
@@ -11,5 +14,9 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.ExpressionEvaluator
Friend
Overrides
Function
BinderSpecificLookupOptions
(
options
As
LookupOptions
)
As
LookupOptions
Return
ContainingBinder
.
BinderSpecificLookupOptions
(
options
)
Or
LookupOptions
.
IgnoreAccessibility
End
Function
Public
Overrides
Function
CheckAccessibility
(
sym
As
Symbol
,
<
[
In
]
>
<
Out
>
ByRef
useSiteDiagnostics
As
HashSet
(
Of
DiagnosticInfo
),
Optional
accessThroughType
As
TypeSymbol
=
Nothing
,
Optional
basesBeingResolved
As
ConsList
(
Of
Symbol
)
=
Nothing
)
As
AccessCheckResult
Return
AccessCheckResult
.
Accessible
End
Function
End
Class
End
Namespace
src/Compilers/VisualBasic/Portable/Emit/PEModuleBuilder.vb
浏览文件 @
8b596f4a
...
...
@@ -300,6 +300,16 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Emit
Return
result
End
Function
''' <summary>
''' Ignore accessibility when resolving well-known type
''' members, in particular for generic type arguments.
''' </summary>
Friend
Overridable
ReadOnly
Property
IgnoreAccessibility
As
Boolean
Get
Return
False
End
Get
End
Property
Friend
Overridable
Function
TryCreateVariableSlotAllocator
(
method
As
MethodSymbol
)
As
VariableSlotAllocator
Return
Nothing
End
Function
...
...
src/Compilers/VisualBasic/Portable/Lowering/AsyncRewriter/AsyncRewriter.vb
浏览文件 @
8b596f4a
...
...
@@ -2,14 +2,9 @@
Imports
System.Collections.Generic
Imports
System.Collections.Immutable
Imports
System.Runtime.CompilerServices
Imports
System.Runtime.InteropServices
Imports
System.Threading
Imports
Microsoft.Cci
Imports
Microsoft.CodeAnalysis
Imports
Microsoft.CodeAnalysis.CodeGen
Imports
Microsoft.CodeAnalysis.Collections
Imports
Microsoft.CodeAnalysis.Text
Imports
Microsoft.CodeAnalysis.VisualBasic.Symbols
Imports
Microsoft.CodeAnalysis.VisualBasic.Syntax
...
...
@@ -19,6 +14,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Inherits
StateMachineRewriter
(
Of
CapturedSymbolOrExpression
)
Private
ReadOnly
_binder
As
Binder
Private
ReadOnly
_lookupOptions
As
LookupOptions
Private
ReadOnly
_asyncMethodKind
As
AsyncMethodKind
Private
ReadOnly
_builderType
As
NamedTypeSymbol
Private
ReadOnly
_resultType
As
TypeSymbol
...
...
@@ -37,6 +33,12 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
MyBase
.
New
(
body
,
method
,
stateMachineType
,
slotAllocatorOpt
,
compilationState
,
diagnostics
)
Me
.
_binder
=
CreateMethodBinder
(
method
)
Me
.
_lookupOptions
=
LookupOptions
.
AllMethodsOfAnyArity
Or
LookupOptions
.
IgnoreExtensionMethods
Or
LookupOptions
.
NoBaseClassLookup
If
compilationState
.
ModuleBuilderOpt
.
IgnoreAccessibility
Then
Me
.
_binder
=
New
IgnoreAccessibilityBinder
(
Me
.
_binder
)
Me
.
_lookupOptions
=
Me
.
_lookupOptions
Or
LookupOptions
.
IgnoreAccessibility
End
If
Debug
.
Assert
(
asyncKind
<>
AsyncMethodKind
.
None
)
Debug
.
Assert
(
asyncKind
=
GetAsyncMethodKind
(
method
))
...
...
@@ -498,19 +500,12 @@ lCaptureRValue:
typeArgs
As
ImmutableArray
(
Of
TypeSymbol
),
ParamArray
arguments
As
BoundExpression
())
As
BoundExpression
Dim
anyArgumentsWithErrors
=
False
' Check if we have any bad arguments.
For
Each
a
In
arguments
If
a
.
HasErrors
Then
anyArgumentsWithErrors
=
True
End
If
Next
' Get the method group
Dim
methodGroup
=
FindMethodAndReturnMethodGroup
(
receiver
,
type
,
methodName
,
typeArgs
)
If
methodGroup
Is
Nothing
OrElse
anyArgumentsWithErrors
OrElse
(
receiver
IsNot
Nothing
AndAlso
receiver
.
HasErrors
)
Then
If
methodGroup
Is
Nothing
OrElse
arguments
.
Any
(
Function
(
a
)
a
.
HasErrors
)
OrElse
(
receiver
IsNot
Nothing
AndAlso
receiver
.
HasErrors
)
Then
Return
Me
.
F
.
BadExpression
(
arguments
)
End
If
...
...
@@ -534,9 +529,8 @@ lCaptureRValue:
Dim
group
As
BoundMethodGroup
=
Nothing
Dim
result
=
LookupResult
.
GetInstance
()
Dim
options
As
LookupOptions
=
LookupOptions
.
AllMethodsOfAnyArity
Or
LookupOptions
.
IgnoreExtensionMethods
Or
LookupOptions
.
NoBaseClassLookup
Dim
useSiteDiagnostics
As
HashSet
(
Of
DiagnosticInfo
)
=
Nothing
Me
.
_binder
.
LookupMember
(
result
,
type
,
methodName
,
arity
:
=
0
,
options
:
=
o
ptions
,
useSiteDiagnostics
:
=
useSiteDiagnostics
)
Me
.
_binder
.
LookupMember
(
result
,
type
,
methodName
,
arity
:
=
0
,
options
:
=
_lookupO
ptions
,
useSiteDiagnostics
:
=
useSiteDiagnostics
)
Me
.
Diagnostics
.
Add
(
Me
.
F
.
Syntax
,
useSiteDiagnostics
)
If
result
.
IsGood
Then
...
...
@@ -594,9 +588,8 @@ lCaptureRValue:
Dim
group
As
BoundPropertyGroup
=
Nothing
Dim
result
=
LookupResult
.
GetInstance
()
Dim
options
As
LookupOptions
=
LookupOptions
.
AllMethodsOfAnyArity
Or
LookupOptions
.
IgnoreExtensionMethods
Or
LookupOptions
.
NoBaseClassLookup
Dim
useSiteDiagnostics
As
HashSet
(
Of
DiagnosticInfo
)
=
Nothing
Me
.
_binder
.
LookupMember
(
result
,
type
,
propertyName
,
arity
:
=
0
,
options
:
=
o
ptions
,
useSiteDiagnostics
:
=
useSiteDiagnostics
)
Me
.
_binder
.
LookupMember
(
result
,
type
,
propertyName
,
arity
:
=
0
,
options
:
=
_lookupO
ptions
,
useSiteDiagnostics
:
=
useSiteDiagnostics
)
Me
.
Diagnostics
.
Add
(
Me
.
F
.
Syntax
,
useSiteDiagnostics
)
If
result
.
IsGood
Then
...
...
src/Compilers/VisualBasic/Portable/Lowering/Rewriter.vb
浏览文件 @
8b596f4a
...
...
@@ -24,6 +24,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
isBodySynthesized
As
Boolean
)
As
BoundBlock
Debug
.
Assert
(
Not
body
.
HasErrors
)
Debug
.
Assert
(
compilationState
.
ModuleBuilderOpt
IsNot
Nothing
)
' performs node-specific lowering.
Dim
sawLambdas
As
Boolean
...
...
@@ -89,6 +90,8 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
slotAllocatorOpt
As
VariableSlotAllocator
,
<
Out
>
ByRef
stateMachineTypeOpt
As
StateMachineTypeSymbol
)
As
BoundBlock
Debug
.
Assert
(
compilationState
.
ModuleBuilderOpt
IsNot
Nothing
)
Dim
iteratorStateMachine
As
IteratorStateMachine
=
Nothing
Dim
bodyWithoutIterators
=
IteratorRewriter
.
Rewrite
(
bodyWithoutLambdas
,
method
,
...
...
src/ExpressionEvaluator/CSharp/Source/ExpressionCompiler/EEAssemblyBuilder.cs
浏览文件 @
8b596f4a
...
...
@@ -61,6 +61,11 @@ protected override IModuleReference TranslateModule(ModuleSymbol symbol, Diagnos
return
base
.
TranslateModule
(
symbol
,
diagnostics
);
}
internal
override
bool
IgnoreAccessibility
{
get
{
return
true
;
}
}
public
override
int
CurrentGenerationOrdinal
=>
0
;
internal
override
VariableSlotAllocator
TryCreateVariableSlotAllocator
(
MethodSymbol
symbol
)
...
...
src/ExpressionEvaluator/VisualBasic/Source/ExpressionCompiler/BasicExpressionCompiler.vbproj
浏览文件 @
8b596f4a
...
...
@@ -74,7 +74,6 @@
</ItemGroup>
<ItemGroup>
<Compile
Include=
"Binders\EENamedTypeBinder.vb"
/>
<Compile
Include=
"Binders\IgnoreAccessibilityBinder.vb"
/>
<Compile
Include=
"Binders\ParametersAndLocalsBinder.vb"
/>
<Compile
Include=
"Binders\SuppressObsoleteDiagnosticsBinder.vb"
/>
<Compile
Include=
"CompilationContext.vb"
/>
...
...
src/ExpressionEvaluator/VisualBasic/Source/ExpressionCompiler/EEAssemblyBuilder.vb
浏览文件 @
8b596f4a
...
...
@@ -60,6 +60,12 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.ExpressionEvaluator
Return
MyBase
.
TranslateModule
(
symbol
,
diagnostics
)
End
Function
Friend
Overrides
ReadOnly
Property
IgnoreAccessibility
As
Boolean
Get
Return
True
End
Get
End
Property
Public
Overrides
ReadOnly
Property
CurrentGenerationOrdinal
As
Integer
Get
Return
0
...
...
src/ExpressionEvaluator/VisualBasic/Test/ExpressionCompiler/ExpressionCompilerTests.vb
浏览文件 @
8b596f4a
...
...
@@ -4154,7 +4154,7 @@ End Class"
''' Ignore accessibility in async rewriter.
''' </summary>
<
WorkItem
(
1813
,
"https://github.com/dotnet/roslyn/issues/1813"
)
>
<
Fact
(
Skip
:
=
"1813"
)
>
<
Fact
>
Public
Sub
AsyncRewriterIgnoreAccessibility
()
Const
source
=
"Imports System
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录