提交 39e74ee4 编写于 作者: D Don Syme 提交者: Kevin Ransom (msft)

Fix 5233 - PrivateScope mebmer access (#5250)

上级 e29cc675
......@@ -1228,6 +1228,7 @@ type ILMethodBody =
[<RequireQualifiedAccess>]
type ILMemberAccess =
| Assembly
| CompilerControlled
| FamilyAndAssembly
| FamilyOrAssembly
| Family
......@@ -1546,7 +1547,7 @@ let memberAccessOfFlags flags =
elif f = 0x00000002 then ILMemberAccess.FamilyAndAssembly
elif f = 0x00000005 then ILMemberAccess.FamilyOrAssembly
elif f = 0x00000003 then ILMemberAccess.Assembly
else failwith "impossible: the flags parameter value is come from enums MethodAttributes and FieldAttributes must have access flag"
else ILMemberAccess.CompilerControlled
let convertMemberAccess (ilMemberAccess:ILMemberAccess) =
match ilMemberAccess with
......@@ -1554,6 +1555,7 @@ let convertMemberAccess (ilMemberAccess:ILMemberAccess) =
| ILMemberAccess.Private -> MethodAttributes.Private
| ILMemberAccess.Assembly -> MethodAttributes.Assembly
| ILMemberAccess.FamilyAndAssembly -> MethodAttributes.FamANDAssem
| ILMemberAccess.CompilerControlled -> MethodAttributes.PrivateScope
| ILMemberAccess.FamilyOrAssembly -> MethodAttributes.FamORAssem
| ILMemberAccess.Family -> MethodAttributes.Family
......@@ -1805,6 +1807,7 @@ type ILPropertyDefs =
let convertFieldAccess (ilMemberAccess:ILMemberAccess) =
match ilMemberAccess with
| ILMemberAccess.Assembly -> FieldAttributes.Assembly
| ILMemberAccess.CompilerControlled -> enum<FieldAttributes>(0)
| ILMemberAccess.FamilyAndAssembly -> FieldAttributes.FamANDAssem
| ILMemberAccess.FamilyOrAssembly -> FieldAttributes.FamORAssem
| ILMemberAccess.Family -> FieldAttributes.Family
......@@ -1946,6 +1949,7 @@ let convertTypeAccessFlags access =
| ILTypeDefAccess.Nested ILMemberAccess.Public -> TypeAttributes.NestedPublic
| ILTypeDefAccess.Nested ILMemberAccess.Private -> TypeAttributes.NestedPrivate
| ILTypeDefAccess.Nested ILMemberAccess.Family -> TypeAttributes.NestedFamily
| ILTypeDefAccess.Nested ILMemberAccess.CompilerControlled -> TypeAttributes.NestedPrivate
| ILTypeDefAccess.Nested ILMemberAccess.FamilyAndAssembly -> TypeAttributes.NestedFamANDAssem
| ILTypeDefAccess.Nested ILMemberAccess.FamilyOrAssembly -> TypeAttributes.NestedFamORAssem
| ILTypeDefAccess.Nested ILMemberAccess.Assembly -> TypeAttributes.NestedAssembly
......@@ -1973,6 +1977,7 @@ let convertEncoding encoding =
let convertToNestedTypeAccess (ilMemberAccess:ILMemberAccess) =
match ilMemberAccess with
| ILMemberAccess.Assembly -> TypeAttributes.NestedAssembly
| ILMemberAccess.CompilerControlled -> failwith "Method access compiler controlled."
| ILMemberAccess.FamilyAndAssembly -> TypeAttributes.NestedFamANDAssem
| ILMemberAccess.FamilyOrAssembly -> TypeAttributes.NestedFamORAssem
| ILMemberAccess.Family -> TypeAttributes.NestedFamily
......
......@@ -720,6 +720,7 @@ type ILMethodBody =
[<RequireQualifiedAccess>]
type ILMemberAccess =
| Assembly
| CompilerControlled
| FamilyAndAssembly
| FamilyOrAssembly
| Family
......
......@@ -397,6 +397,7 @@ let output_member_access os access =
| ILMemberAccess.Public -> "public"
| ILMemberAccess.Private -> "private"
| ILMemberAccess.Family -> "family"
| ILMemberAccess.CompilerControlled -> "privatescope"
| ILMemberAccess.FamilyAndAssembly -> "famandassem"
| ILMemberAccess.FamilyOrAssembly -> "famorassem"
| ILMemberAccess.Assembly -> "assembly")
......
......@@ -1724,6 +1724,7 @@ let typeAttrbutesOfTypeAccess x =
| ILTypeDefAccess.Nested macc ->
match macc with
| ILMemberAccess.Assembly -> TypeAttributes.NestedAssembly
| ILMemberAccess.CompilerControlled -> failwith "Nested compiler controled."
| ILMemberAccess.FamilyAndAssembly -> TypeAttributes.NestedFamANDAssem
| ILMemberAccess.FamilyOrAssembly -> TypeAttributes.NestedFamORAssem
| ILMemberAccess.Family -> TypeAttributes.NestedFamily
......
......@@ -1074,6 +1074,7 @@ let GetMemberAccessFlags access =
| ILMemberAccess.Public -> 0x00000006
| ILMemberAccess.Private -> 0x00000001
| ILMemberAccess.Family -> 0x00000004
| ILMemberAccess.CompilerControlled -> 0x00000000
| ILMemberAccess.FamilyAndAssembly -> 0x00000002
| ILMemberAccess.FamilyOrAssembly -> 0x00000005
| ILMemberAccess.Assembly -> 0x00000003
......@@ -1085,6 +1086,7 @@ let GetTypeAccessFlags access =
| ILTypeDefAccess.Nested ILMemberAccess.Public -> 0x00000002
| ILTypeDefAccess.Nested ILMemberAccess.Private -> 0x00000003
| ILTypeDefAccess.Nested ILMemberAccess.Family -> 0x00000004
| ILTypeDefAccess.Nested ILMemberAccess.CompilerControlled -> failwith "bad type acccess"
| ILTypeDefAccess.Nested ILMemberAccess.FamilyAndAssembly -> 0x00000006
| ILTypeDefAccess.Nested ILMemberAccess.FamilyOrAssembly -> 0x00000007
| ILTypeDefAccess.Nested ILMemberAccess.Assembly -> 0x00000005
......
......@@ -123,6 +123,7 @@ module Impl =
/// Convert an IL member accessibility into an F# accessibility
let getApproxFSharpAccessibilityOfMember (declaringEntity: EntityRef) (ilAccess: ILMemberAccess) =
match ilAccess with
| ILMemberAccess.CompilerControlled
| ILMemberAccess.FamilyAndAssembly
| ILMemberAccess.Assembly ->
taccessPrivate (CompPath(declaringEntity.CompilationPath.ILScopeRef, []))
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册