diff --git a/src/Compilers/CSharp/Desktop/CommandLine/CommandLineParser.cs b/src/Compilers/CSharp/Desktop/CommandLine/CommandLineParser.cs
index a066561e3287742e9becb27ac3ec56e663c2a5fa..f744ddb0f8dab121c9ffad8317361334cfa16a7a 100644
--- a/src/Compilers/CSharp/Desktop/CommandLine/CommandLineParser.cs
+++ b/src/Compilers/CSharp/Desktop/CommandLine/CommandLineParser.cs
@@ -1477,19 +1477,7 @@ private static void ValidateWin32Settings(string win32ResourceFile, string win32
{
// Use FileShare.ReadWrite because the file could be opened by the current process.
// For example, it is an XML doc file produced by the build.
- var stream = new FileStream(fullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
-
- // Lock the entire content to prevent others from modifying it while we are reading.
- try
- {
- stream.Lock(0, long.MaxValue);
- return stream;
- }
- catch
- {
- stream.Dispose();
- throw;
- }
+ return new FileStream(fullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
};
return new ResourceDescription(resourceName, fileName, dataProvider, isPublic, embedded, checkArgs: false);
}
diff --git a/src/Compilers/VisualBasic/Desktop/CommandLine/CommandLineParser.vb b/src/Compilers/VisualBasic/Desktop/CommandLine/CommandLineParser.vb
index ab83a51d6194a070c9da725233a07ada8bed7d9f..2ca80508ca539323bf7fe4da0f6b825961cd0e60 100644
--- a/src/Compilers/VisualBasic/Desktop/CommandLine/CommandLineParser.vb
+++ b/src/Compilers/VisualBasic/Desktop/CommandLine/CommandLineParser.vb
@@ -1388,16 +1388,7 @@ lVbRuntimePlus:
Dim dataProvider As Func(Of Stream) = Function()
' Use FileShare.ReadWrite because the file could be opened by the current process.
' For example, it Is an XML doc file produced by the build.
- Dim stream = New FileStream(fullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
-
- ' Lock the entire content to prevent others from modifying it while we are reading.
- Try
- stream.Lock(0, Long.MaxValue)
- Return stream
- Catch
- stream.Dispose()
- Throw
- End Try
+ Return New FileStream(fullPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)
End Function
Return New ResourceDescription(resourceName, fileName, dataProvider, isPublic, embedded, checkArgs:=False)
End Function
diff --git a/src/Compilers/VisualBasic/Desktop/VisualBasicSerializableCompilationOptions.vb b/src/Compilers/VisualBasic/Desktop/VisualBasicSerializableCompilationOptions.vb
index 417e5fc5def9c15279c6c8ec30c12724a0804489..bc246d66b28b4ed0acdd0348e3ff48db714c1a62 100644
--- a/src/Compilers/VisualBasic/Desktop/VisualBasicSerializableCompilationOptions.vb
+++ b/src/Compilers/VisualBasic/Desktop/VisualBasicSerializableCompilationOptions.vb
@@ -18,6 +18,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Private Const OptionExplicitString = "OptionExplicit"
Private Const OptionCompareTextString = "OptionCompareText"
Private Const EmbedVbCoreRuntimeString = "EmbedVbCoreRuntime"
+ Private Const SuppressEmbeddedDeclarations = "SuppressEmbeddedDeclarations"
Private Const ParseOptionsString = "ParseOptions"
Sub New(options As VisualBasicCompilationOptions)
@@ -60,6 +61,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
optionExplicit:=info.GetBoolean(OptionExplicitString),
optionCompareText:=info.GetBoolean(OptionCompareTextString),
embedVbCoreRuntime:=info.GetBoolean(EmbedVbCoreRuntimeString),
+ suppressEmbeddedDeclarations:=info.GetBoolean(SuppressEmbeddedDeclarations),
parseOptions:=If(serializableOptions IsNot Nothing, serializableOptions.Options, Nothing))
End Sub
@@ -73,6 +75,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
info.AddValue(OptionExplicitString, _options.OptionExplicit)
info.AddValue(OptionCompareTextString, _options.OptionCompareText)
info.AddValue(EmbedVbCoreRuntimeString, _options.EmbedVbCoreRuntime)
+ info.AddValue(SuppressEmbeddedDeclarations, _options.SuppressEmbeddedDeclarations)
info.AddValue(ParseOptionsString, If(_options.ParseOptions IsNot Nothing, New VisualBasicSerializableParseOptions(_options.ParseOptions), Nothing))
End Sub
diff --git a/src/Compilers/VisualBasic/Portable/Compilation/VisualBasicCompilation.vb b/src/Compilers/VisualBasic/Portable/Compilation/VisualBasicCompilation.vb
index d0982e77014a6bb0ff039fa8596ab13751ae7f1a..fff8e8e8a9e56e7dd6d1c6418d27c044b9302940 100644
--- a/src/Compilers/VisualBasic/Portable/Compilation/VisualBasicCompilation.vb
+++ b/src/Compilers/VisualBasic/Portable/Compilation/VisualBasicCompilation.vb
@@ -225,11 +225,12 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Friend Property MyTemplate As SyntaxTree
Get
If m_lazyMyTemplate Is VisualBasicSyntaxTree.Dummy Then
- If Me.Options.EmbedVbCoreRuntime Then
+ Dim compilationOptions = Me.Options
+ If compilationOptions.EmbedVbCoreRuntime OrElse compilationOptions.SuppressEmbeddedDeclarations Then
m_lazyMyTemplate = Nothing
Else
' first see whether we can use one from global cache
- Dim parseOptions = If(Me.Options.ParseOptions, VisualBasicParseOptions.Default)
+ Dim parseOptions = If(compilationOptions.ParseOptions, VisualBasicParseOptions.Default)
Dim tree As SyntaxTree = Nothing
If s_myTemplateCache.TryGetValue(parseOptions, tree) Then
@@ -1108,7 +1109,8 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
' In new flavors of the framework, types, that XML helpers depend upon, are
' defined in assemblies with different names. Let's not hardcode these names,
' let's check for presence of types instead.
- Return InternalXmlHelperDependencyIsSatisfied(WellKnownType.System_Linq_Enumerable) AndAlso
+ Return Not Me.Options.SuppressEmbeddedDeclarations AndAlso
+ InternalXmlHelperDependencyIsSatisfied(WellKnownType.System_Linq_Enumerable) AndAlso
InternalXmlHelperDependencyIsSatisfied(WellKnownType.System_Xml_Linq_XElement) AndAlso
InternalXmlHelperDependencyIsSatisfied(WellKnownType.System_Xml_Linq_XName) AndAlso
InternalXmlHelperDependencyIsSatisfied(WellKnownType.System_Xml_Linq_XAttribute) AndAlso
diff --git a/src/Compilers/VisualBasic/Portable/VisualBasicCompilationOptions.vb b/src/Compilers/VisualBasic/Portable/VisualBasicCompilationOptions.vb
index 2e2544a59a6e971fef99bb04c62d1ef3669e3959..c76b8dd70a082814b07f720f2bb2105fd08029b4 100644
--- a/src/Compilers/VisualBasic/Portable/VisualBasicCompilationOptions.vb
+++ b/src/Compilers/VisualBasic/Portable/VisualBasicCompilationOptions.vb
@@ -29,6 +29,10 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Private _embedVbCoreRuntime As Boolean
Private _parseOptions As VisualBasicParseOptions
+ ' The assemblies emitted by the expression compiler should never contain embedded declarations -
+ ' those should come from the user's code.
+ Private _suppressEmbeddedDeclarations As Boolean
+
'''
''' Initializes a new instance of the VisualBasicCompilationOptions type with various options.
'''
@@ -108,6 +112,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
generalDiagnosticOption,
specificDiagnosticOptions,
concurrentBuild,
+ suppressEmbeddedDeclarations:=False,
extendedCustomDebugInformation:=True,
xmlReferenceResolver:=xmlReferenceResolver,
sourceReferenceResolver:=sourceReferenceResolver,
@@ -141,6 +146,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
generalDiagnosticOption As ReportDiagnostic,
specificDiagnosticOptions As IEnumerable(Of KeyValuePair(Of String, ReportDiagnostic)),
concurrentBuild As Boolean,
+ suppressEmbeddedDeclarations As Boolean,
extendedCustomDebugInformation As Boolean,
xmlReferenceResolver As XmlReferenceResolver,
sourceReferenceResolver As SourceReferenceResolver,
@@ -181,7 +187,11 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
_optionExplicit = optionExplicit
_optionCompareText = optionCompareText
_embedVbCoreRuntime = embedVbCoreRuntime
+ _suppressEmbeddedDeclarations = suppressEmbeddedDeclarations
_parseOptions = parseOptions
+
+ Debug.Assert(Not (_embedVbCoreRuntime AndAlso _suppressEmbeddedDeclarations),
+ "_embedVbCoreRuntime and _suppressEmbeddedDeclarations are mutually exclusive")
End Sub
Private Sub New(other As VisualBasicCompilationOptions)
@@ -198,6 +208,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
optionCompareText:=other.OptionCompareText,
parseOptions:=other.ParseOptions,
embedVbCoreRuntime:=other.EmbedVbCoreRuntime,
+ suppressEmbeddedDeclarations:=other.SuppressEmbeddedDeclarations,
optimizationLevel:=other.OptimizationLevel,
checkOverflow:=other.CheckOverflow,
cryptoKeyContainer:=other.CryptoKeyContainer,
@@ -301,6 +312,18 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
End Get
End Property
+ '''
+ ''' Gets the embedded declaration suppression setting.
+ '''
+ '''
+ ''' The embedded declaration suppression setting.
+ '''
+ Friend ReadOnly Property SuppressEmbeddedDeclarations As Boolean
+ Get
+ Return _suppressEmbeddedDeclarations
+ End Get
+ End Property
+
'''
''' Gets the Parse Options setting.
''' Compilation level parse options. Used when compiling synthetic embedded code such as My template
@@ -512,6 +535,20 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Return New VisualBasicCompilationOptions(Me) With {.ExtendedCustomDebugInformation_internal_protected_set = extendedCustomDebugInformation}
End Function
+ '''
+ ''' Creates a new VisualBasicCompilationOptions instance with different embedded declaration suppression setting specified.
+ '''
+ ''' The embedded declaration suppression setting.
+ ''' A new instance of VisualBasicCompilationOptions, if the embedded declaration suppression setting is different; otherwise current instance.
+ ''' Only expected to be called from the expression compiler.
+ Friend Function WithSuppressEmbeddedDeclarations(suppressEmbeddedDeclarations As Boolean) As VisualBasicCompilationOptions
+ If suppressEmbeddedDeclarations = _suppressEmbeddedDeclarations Then
+ Return Me
+ End If
+
+ Return New VisualBasicCompilationOptions(Me) With {._suppressEmbeddedDeclarations = suppressEmbeddedDeclarations}
+ End Function
+
'''
''' Creates a new VisualBasicCompilationOptions instance with a different cryptography key container specified
'''
@@ -805,6 +842,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Me.OptionExplicit = other.OptionExplicit AndAlso
Me.OptionCompareText = other.OptionCompareText AndAlso
Me.EmbedVbCoreRuntime = other.EmbedVbCoreRuntime AndAlso
+ Me.SuppressEmbeddedDeclarations = other.SuppressEmbeddedDeclarations AndAlso
If(Me.ParseOptions Is Nothing, other.ParseOptions Is Nothing, Me.ParseOptions.Equals(other.ParseOptions))
End Function
@@ -831,7 +869,8 @@ Namespace Microsoft.CodeAnalysis.VisualBasic
Hash.Combine(Me.OptionExplicit,
Hash.Combine(Me.OptionCompareText,
Hash.Combine(Me.EmbedVbCoreRuntime,
- Hash.Combine(Me.ParseOptions, 0)))))))))
+ Hash.Combine(Me.SuppressEmbeddedDeclarations,
+ Hash.Combine(Me.ParseOptions, 0))))))))))
End Function
End Class
End Namespace
diff --git a/src/Compilers/VisualBasic/Test/Semantic/Binding/Binder_Expressions_Tests.vb b/src/Compilers/VisualBasic/Test/Semantic/Binding/Binder_Expressions_Tests.vb
index 4edbfaeaebd16dbdd9ed4ef6fbde02718d60754a..50f6685f57a1391aa48f33d139977a7cc810f65d 100644
--- a/src/Compilers/VisualBasic/Test/Semantic/Binding/Binder_Expressions_Tests.vb
+++ b/src/Compilers/VisualBasic/Test/Semantic/Binding/Binder_Expressions_Tests.vb
@@ -1,12 +1,8 @@
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
Imports Microsoft.CodeAnalysis
-Imports Microsoft.CodeAnalysis.Test.Utilities
-Imports Microsoft.CodeAnalysis.Text
Imports Microsoft.CodeAnalysis.VisualBasic
-Imports Microsoft.CodeAnalysis.VisualBasic.Symbols
Imports Microsoft.CodeAnalysis.VisualBasic.Syntax
-Imports Microsoft.CodeAnalysis.VisualBasic.UnitTests.Emit
Imports Roslyn.Test.Utilities
Namespace Microsoft.CodeAnalysis.VisualBasic.UnitTests
@@ -21,7 +17,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.UnitTests
' Test that BC30157 is generated for a member access off With when there is no containing With.
Public Sub MemberAccessNoContainingWith()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(
Imports System
@@ -34,7 +30,7 @@ End Module
)
- CompilationUtils.AssertTheseDiagnostics(compilation,
+ AssertTheseDiagnostics(compilation,
BC30157: Leading '.' or '!' can only appear inside a 'With' statement.
x = .foo
@@ -109,7 +105,7 @@ End Module
' Test access to a local variable, parameter, type parameter, namespace with arity.
Public Sub LocalVariableWrongArity()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(
Imports System
@@ -137,7 +133,7 @@ End Class
)
- CompilationUtils.AssertTheseDiagnostics(compilation,
+ AssertTheseDiagnostics(compilation,
BC32045: 'x' has no type parameters and so cannot have type arguments.
y = x(Of Integer)
@@ -179,7 +175,7 @@ End Module
' Test access to a local variable and assignment of them..
Public Sub ArrayAssignmentError1()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(
Imports System
@@ -194,7 +190,7 @@ End Module
)
- CompilationUtils.AssertTheseDiagnostics(compilation,
+ AssertTheseDiagnostics(compilation,
BC30106: Number of indices exceeds the number of dimensions of the indexed array.
z(1,1) = "world"
@@ -232,7 +228,7 @@ End Module
' Test access to a local variable and assignment of them..
Public Sub ArrayAssignmentError2()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(
Option strict on
@@ -249,7 +245,7 @@ End Module
)
- CompilationUtils.AssertTheseDiagnostics(compilation,
+ AssertTheseDiagnostics(compilation,
BC30512: Option Strict On disallows implicit conversions from 'UInteger' to 'Integer'.
z(i) = "world"
@@ -361,7 +357,7 @@ End Module
' Test access to simple identifier that isn't found anywhere.
Public Sub SimpleNameNotFound()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(
Imports System
@@ -375,7 +371,7 @@ End Module
)
- CompilationUtils.AssertTheseDiagnostics(compilation,
+ AssertTheseDiagnostics(compilation,
BC30451: 'foo' is not declared. It may be inaccessible due to its protection level.
x = foo
@@ -386,7 +382,7 @@ BC30451: 'foo' is not declared. It may be inaccessible due to its protection lev
Public Sub QualifiedNameBeforeDotNotFound()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(
Imports System
@@ -403,7 +399,7 @@ End Module
)
- CompilationUtils.AssertTheseDiagnostics(compilation,
+ AssertTheseDiagnostics(compilation,
BC30451: 'Rdim123' is not declared. It may be inaccessible due to its protection level.
Rdim123.Rdim456()
@@ -417,7 +413,7 @@ BC30456: 'B' is not a member of 'MainModule.A'.
' Test access to qualified identifier not found, in various scopes
Public Sub QualifiedNameNotFound()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(
Imports System
@@ -443,7 +439,7 @@ End Module
)
- CompilationUtils.AssertTheseDiagnostics(compilation,
+ AssertTheseDiagnostics(compilation,
BC30456: 'foo' is not a member of 'N'.
x = N.foo
@@ -463,7 +459,7 @@ BC30456: 'foo' is not a member of 'M1'.
' Test access qualified identifier off of type parameter
Public Sub TypeParamCantQualify()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlib(
+ Dim compilation = CreateCompilationWithMscorlib(
Imports System
@@ -478,7 +474,7 @@ End Class
)
- CompilationUtils.AssertTheseDiagnostics(compilation,
+ AssertTheseDiagnostics(compilation,
BC32098: Type parameters cannot be used as qualifiers.
x = T.foo
@@ -489,7 +485,7 @@ BC32098: Type parameters cannot be used as qualifiers.
' Test access to simple identifier that can be found, but has an error.
Public Sub BadSimpleName()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(
Imports System
@@ -507,7 +503,7 @@ End Module
)
- CompilationUtils.AssertTheseDiagnostics(compilation,
+ AssertTheseDiagnostics(compilation,
BC32042: Too few type arguments to 'Foo(Of T)'.
y = Foo.x
@@ -518,7 +514,7 @@ BC32042: Too few type arguments to 'Foo(Of T)'.
' Test access to qualified identifier that can be found, but has an error.
Public Sub BadQualifiedName()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(
Imports System
@@ -549,7 +545,7 @@ End Module
)
' Note that we produce different (but I think better) error messages than Dev10.
- CompilationUtils.AssertTheseDiagnostics(compilation,
+ AssertTheseDiagnostics(compilation,
BC32042: Too few type arguments to 'Foo(Of T)'.
y = N.Foo.x
@@ -569,7 +565,7 @@ BC42025: Access of shared member, constant member, enum member or nested type th
' Test access to instance member in various ways to get various errors.
Public Sub AccessInstanceFromStatic()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlib(
+ Dim compilation = CreateCompilationWithMscorlib(
Class K
@@ -604,7 +600,7 @@ End Class
)
- CompilationUtils.AssertTheseDiagnostics(compilation,
+ AssertTheseDiagnostics(compilation,
BC30469: Reference to a non-shared member requires an object reference.
y()
@@ -630,7 +626,7 @@ BC30469: Reference to a non-shared member requires an object reference.
' Test access to static member in various ways to get various errors.
Public Sub AccessStaticViaInstance()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlib(
+ Dim compilation = CreateCompilationWithMscorlib(
Class K
@@ -665,7 +661,7 @@ End Class
)
- CompilationUtils.AssertTheseDiagnostics(compilation,
+ AssertTheseDiagnostics(compilation,
BC42025: Access of shared member, constant member, enum member or nested type through an instance; qualifying expression will not be evaluated.
zInstance.yy()
@@ -694,7 +690,7 @@ End Class
- Dim c1 = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(source).VerifyDiagnostics(
+ Dim c1 = CreateCompilationWithMscorlibAndVBRuntime(source).VerifyDiagnostics(
Diagnostic(ERRID.WRN_SharedMemberThroughInstance, "j.MaxValue"),
Diagnostic(ERRID.WRN_SharedMemberThroughInstance, "i.MaxValue"))
@@ -702,7 +698,7 @@ End Class
Public Sub ConstantFields1()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(
Module Module1
@@ -807,9 +803,9 @@ End Module
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
- CompilationUtils.AssertTheseDiagnostics(compilation,
+ AssertTheseDiagnostics(compilation,
BC30068: Expression is a value and therefore cannot be the target of an assignment.
Foo(1) = Nothing
@@ -867,7 +863,7 @@ End Class
- compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(compilationDef, TestOptions.ReleaseExe)
+ compilation = CreateCompilationWithMscorlibAndVBRuntime(compilationDef, TestOptions.ReleaseExe)
CompileAndVerify(compilation,
- compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
+ compilation = CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
- CompilationUtils.AssertTheseDiagnostics(compilation,
+ AssertTheseDiagnostics(compilation,
BC42105: Function 'Foo' doesn't return a value on all code paths. A null reference exception could occur at run time when the result is used.
End Function
@@ -953,9 +949,9 @@ End Module
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
- CompilationUtils.AssertTheseDiagnostics(compilation,
+ AssertTheseDiagnostics(compilation,
BC30491: Expression does not produce a value.
Main().ToString
@@ -986,7 +982,7 @@ End Module
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(compilationDef, TestOptions.ReleaseExe)
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(compilationDef, TestOptions.ReleaseExe)
CompileAndVerify(compilation,
- compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(compilationDef, TestOptions.ReleaseExe)
+ compilation = CreateCompilationWithMscorlibAndVBRuntime(compilationDef, TestOptions.ReleaseExe)
- CompilationUtils.AssertTheseDiagnostics(compilation,
+ AssertTheseDiagnostics(compilation,
BC30455: Argument not specified for parameter 'x' of 'Public Function Foo(x As Integer) As Integer'.
System.Console.WriteLine(Foo.ToString)
@@ -1060,9 +1056,9 @@ End Class
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
- CompilationUtils.AssertTheseDiagnostics(compilation,
+ AssertTheseDiagnostics(compilation,
BC30108: 'S' is a type and cannot be used as an expression.
S()
@@ -1090,9 +1086,9 @@ BC30108: 'S' is a type and cannot be used as an expression.
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
- CompilationUtils.AssertNoErrors(compilation)
+ AssertNoErrors(compilation)
End Sub
@@ -1112,9 +1108,9 @@ BC30108: 'S' is a type and cannot be used as an expression.
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
- CompilationUtils.AssertTheseDiagnostics(compilation,
+ AssertTheseDiagnostics(compilation,
BC32059: Array lower bounds can be only '0'.
Dim x1(0! To 5) as Single
@@ -1148,9 +1144,9 @@ End Class
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
- CompilationUtils.AssertTheseDiagnostics(compilation,
+ AssertTheseDiagnostics(compilation,
BC42024: Unused local variable: 'foo'.
Dim foo As Integer
@@ -1263,9 +1259,9 @@ End Class
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
- CompilationUtils.AssertNoErrors(compilation)
+ AssertNoErrors(compilation)
End Sub
@@ -1292,9 +1288,9 @@ End Class
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
- CompilationUtils.AssertTheseDiagnostics(compilation,
+ AssertTheseDiagnostics(compilation,
BC30369: Cannot refer to an instance member of a class from within a shared method or shared member initializer without an explicit instance of the class.
Dim x As Integer = Q.Zip 'this should be an error
@@ -1343,9 +1339,9 @@ End Class
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
- CompilationUtils.AssertTheseDiagnostics(compilation,
+ AssertTheseDiagnostics(compilation,
BC30455: Argument not specified for parameter 'x' of 'Public ReadOnly Property color(x As Integer) As Color'.
dim a = color.G(1) ' error, missing parameter to color property
~~~~~
@@ -1396,9 +1392,9 @@ End Class
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
- CompilationUtils.AssertNoErrors(compilation)
+ AssertNoErrors(compilation)
End Sub
@@ -1451,9 +1447,9 @@ End Module
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
- CompilationUtils.AssertNoErrors(compilation)
+ AssertNoErrors(compilation)
CompileAndVerify(compilationDef, expectedOutput:="evaluated").
VerifyIL("Module1.Test.DefaultColor",
@@ -1521,9 +1517,9 @@ End Module
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
- CompilationUtils.AssertNoErrors(compilation)
+ AssertNoErrors(compilation)
CompileAndVerify(compilationDef, expectedOutput:="evaluated").
VerifyIL("Module1.Test.DefaultColor",
@@ -1593,10 +1589,10 @@ End Module
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
- CompilationUtils.AssertTheseDiagnostics(compilation,
+ AssertTheseDiagnostics(compilation,
BC30455: Argument not specified for parameter 'x' of 'Public ReadOnly Property Color(x As Integer) As Module1.Color'.
c1 = Color.G(1) ' missing parameter x
@@ -1656,10 +1652,10 @@ End Module
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
- CompilationUtils.AssertNoDiagnostics(compilation)
+ AssertNoDiagnostics(compilation)
End Sub
@@ -1717,9 +1713,9 @@ End Module
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
- CompilationUtils.AssertNoErrors(compilation)
+ AssertNoErrors(compilation)
CompileAndVerify(compilationDef, expectedOutput:="evaluated").
VerifyIL("Module1.Test.DefaultColor",
@@ -1793,9 +1789,9 @@ End Module
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
- CompilationUtils.AssertNoErrors(compilation)
+ AssertNoErrors(compilation)
CompileAndVerify(compilationDef, expectedOutput:="evaluated").
VerifyIL("Module1.Test.DefaultColor",
@@ -1890,9 +1886,9 @@ End Module
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
- CompilationUtils.AssertNoErrors(compilation)
+ AssertNoErrors(compilation)
CompileAndVerify(compilationDef, expectedOutput:="evaluated").
VerifyIL("Module1.Test.DefaultColor",
@@ -1950,9 +1946,9 @@ End Class
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
- CompilationUtils.AssertNoDiagnostics(compilation)
+ AssertNoDiagnostics(compilation)
CompileAndVerify(compilationDef, expectedOutput:="48").
VerifyIL("Foo.M",
@@ -2006,9 +2002,9 @@ End Class
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(compilationDef)
- CompilationUtils.AssertTheseDiagnostics(compilation,
+ AssertTheseDiagnostics(compilation,
BC30369: Cannot refer to an instance member of a class from within a shared method or shared member initializer without an explicit instance of the class.
Return Bar2.c
~~~~
@@ -2036,8 +2032,8 @@ End Module
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(text)
- CompilationUtils.AssertTheseDiagnostics(compilation,
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(text)
+ AssertTheseDiagnostics(compilation,
BC42024: Unused local variable: 'y'.
Dim y As System.Collections.Generic.List(Of M)
@@ -2075,8 +2071,8 @@ End Module
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(text)
- CompilationUtils.AssertTheseDiagnostics(compilation,
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(text)
+ AssertTheseDiagnostics(compilation,
BC30182: Type expected.
Dim x = GetType(NS)
@@ -2105,8 +2101,8 @@ End Namespace
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(text)
- CompilationUtils.AssertNoErrors(compilation)
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(text)
+ AssertNoErrors(compilation)
End Sub
@@ -2129,14 +2125,14 @@ Imports Con = System.Console
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(text)
- CompilationUtils.AssertNoErrors(compilation)
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(text)
+ AssertNoErrors(compilation)
End Sub
Public Sub Bug9300_1()
- Dim compilation1 = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation1 = CreateCompilationWithMscorlibAndVBRuntime(
Imports System.Runtime.CompilerServices
@@ -2175,12 +2171,12 @@ BC30251: Type 'Object()' has no constructors.
Foo(Sub(x) x.New())
~~~~~
- CompilationUtils.AssertTheseDiagnostics(compilation1, expectedErrors1)
+ AssertTheseDiagnostics(compilation1, expectedErrors1)
End Sub
Public Sub Bug9300_2()
- Dim compilation1 = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation1 = CreateCompilationWithMscorlibAndVBRuntime(
Imports System.Runtime.CompilerServices
@@ -2220,12 +2216,12 @@ BC30282: Constructor call is valid only as the first statement in an instance co
Foo(Sub(x) x.New())
~~~~~
- CompilationUtils.AssertTheseDiagnostics(compilation1, expectedErrors1)
+ AssertTheseDiagnostics(compilation1, expectedErrors1)
End Sub
Public Sub Bug9300_3()
- Dim compilation1 = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation1 = CreateCompilationWithMscorlibAndVBRuntime(
Imports System.Runtime.CompilerServices
@@ -2272,7 +2268,7 @@ Action(Of IEnumerable)
Public Sub IllegalTypeExpressionsFromParserShouldNotBlowUpBinding()
- Dim compilation1 = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation1 = CreateCompilationWithMscorlibAndVBRuntime(
Class Outer(Of T)
@@ -2289,7 +2285,7 @@ Action(Of IEnumerable)
)
- CompilationUtils.AssertTheseDiagnostics(compilation1,
+ AssertTheseDiagnostics(compilation1,
BC32099: Comma or ')' expected.
System.Console.WriteLine(GetType(Outer(Of ).Inner(Of T))) ' BC32099: Comma or ')' expected.
~
@@ -2316,7 +2312,7 @@ BC30182: Type expected.
- Dim c1 = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntimeAndReferences(source1_with)
+ Dim c1 = CreateCompilationWithMscorlibAndVBRuntimeAndReferences(source1_with)
Dim baseBuffer = CompileAndVerify(c1).EmittedAssemblyData
@@ -2344,7 +2340,7 @@ BC30182: Type expected.
- Dim c2 = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntimeAndReferences(source2, {MetadataReference.CreateFromImage(baseBuffer)})
+ Dim c2 = CreateCompilationWithMscorlibAndVBRuntimeAndReferences(source2, {MetadataReference.CreateFromImage(baseBuffer)})
Dim derivedBuffer = CompileAndVerify(c2).EmittedAssemblyData
@@ -2370,11 +2366,11 @@ BC30182: Type expected.
- Dim c1_without = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntimeAndReferences(source1_without)
+ Dim c1_without = CreateCompilationWithMscorlibAndVBRuntimeAndReferences(source1_without)
Dim image = CompileAndVerify(c1_without).EmittedAssemblyData
- Dim c3 = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntimeAndReferences(source3, {MetadataReference.CreateFromImage(derivedBuffer), MetadataReference.CreateFromImage(image)})
+ Dim c3 = CreateCompilationWithMscorlibAndVBRuntimeAndReferences(source3, {MetadataReference.CreateFromImage(derivedBuffer), MetadataReference.CreateFromImage(image)})
AssertTheseDiagnostics(c3,
BC30545: Property access must assign to the property or use its value.
@@ -2416,7 +2412,7 @@ End Class
)
- CompilationUtils.AssertNoDiagnostics(compilation)
+ AssertNoDiagnostics(compilation)
End Sub
@@ -2447,7 +2443,7 @@ End Class
)
- CompilationUtils.AssertTheseDiagnostics(compilation,
+ AssertTheseDiagnostics(compilation,
BC30455: Argument not specified for parameter 'a' of 'Public Overridable ReadOnly Property TypeSubstitution(a As Integer) As TypeSubstitution'.
Return TypeSubstitution.Create()
~~~~~~~~~~~~~~~~
@@ -2485,7 +2481,7 @@ End Class
)
- CompilationUtils.AssertNoDiagnostics(compilation)
+ AssertNoDiagnostics(compilation)
End Sub
@@ -2530,7 +2526,7 @@ BC30068: Expression is a value and therefore cannot be the target of an assignme
Public Sub Bug12900()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(
Imports System
@@ -2542,7 +2538,7 @@ End Module
)
- CompilationUtils.AssertTheseDiagnostics(compilation,
+ AssertTheseDiagnostics(compilation,
BC30438: Constants must have a value.
Const local _? As Integer
@@ -2555,7 +2551,7 @@ BC30203: Identifier expected.
Public Sub Bug13080()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(
Imports System
@@ -2567,7 +2563,7 @@ End Module
)
- CompilationUtils.AssertTheseDiagnostics(compilation,
+ AssertTheseDiagnostics(compilation,
BC30203: Identifier expected.
Const '
@@ -2581,7 +2577,7 @@ BC30438: Constants must have a value.
Public Sub GetTypeAllowsArrayOfModules()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(
Imports System
@@ -2644,7 +2640,7 @@ BC31422: 'System.Void' can only be used in a GetType expression.
Public Sub GetTypeAllowsModuleAlias()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(
Imports ModuleAlias = Bar.Test
@@ -2694,7 +2690,7 @@ End Class
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntimeAndReferences(source, { SystemCoreRef }, options:=TestOptions.ReleaseExe)
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntimeAndReferences(source, {SystemCoreRef}, options:=TestOptions.ReleaseExe)
AssertTheseDiagnostics(compilation, )
CompileAndVerify(compilation, expectedOutput:="42")
@@ -2703,7 +2699,7 @@ End Class
Public Sub Bug1108036()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(
Class Color
@@ -2744,7 +2740,7 @@ BC30521: Overload resolution failed because no accessible 'Color' is most specif
Public Sub Bug1108036_2()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(
Class Color
@@ -2785,7 +2781,7 @@ BC30521: Overload resolution failed because no accessible 'Color' is most specif
Public Sub Bug969006_1()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(
Enum E
@@ -2831,7 +2827,7 @@ End Class
Public Sub Bug969006_2()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(
Enum E
@@ -2877,7 +2873,7 @@ End Class
Public Sub Bug969006_3()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(
Enum E
@@ -2928,7 +2924,7 @@ BC42104: Variable 'e' is used before it has been assigned a value. A null refere
Public Sub Bug969006_4()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(
Enum E
@@ -2979,7 +2975,7 @@ BC42104: Variable 'e' is used before it has been assigned a value. A null refere
Public Sub Bug1108007_1()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(
Class Color
@@ -3012,14 +3008,14 @@ End Class
Assert.Equal(SymbolKind.NamedType, symbol.Kind)
AssertTheseDiagnostics(compilation, )
-
+
CompileAndVerify(compilation, expectedOutput:="42")
End Sub
Public Sub Bug1108007_2()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(
Imports System
@@ -3041,7 +3037,7 @@ Class Program
Dim x As Object = ""
Color.M(x)
Catch e As Exception
- Console.WriteLine(e)
+ Console.WriteLine(e.GetType())
End Try
End Sub
End Class
@@ -3059,19 +3055,13 @@ End Class
AssertTheseDiagnostics(compilation, )
- CompileAndVerify(compilation, expectedOutput:=)
+ CompileAndVerify(compilation, expectedOutput:=)
End Sub
Public Sub Bug1108007_3()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(
Public Sub Bug1108007_4()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(
Imports System
@@ -3136,7 +3126,7 @@ Class Color
Dim x As Object = ""
Color.M(x)
Catch e As Exception
- Console.WriteLine(e)
+ Console.WriteLine(e.GetType())
End Try
End Sub
@@ -3160,17 +3150,13 @@ End Class
AssertTheseDiagnostics(compilation, )
- CompileAndVerify(compilation, expectedOutput:=)
+ CompileAndVerify(compilation, expectedOutput:=)
End Sub
Public Sub Bug1108007_5()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(
Imports System
@@ -3224,7 +3210,7 @@ End Class
Public Sub Bug1108007_6()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(
Imports System
@@ -3248,7 +3234,7 @@ Class Program
Try
Dim p = New Program()
Catch e As Exception
- Console.WriteLine(e)
+ Console.WriteLine(e.GetType())
End Try
End Sub
End Class
@@ -3266,18 +3252,13 @@ End Class
AssertTheseDiagnostics(compilation, )
- CompileAndVerify(compilation, expectedOutput:=)
+ CompileAndVerify(compilation, expectedOutput:=)
End Sub
Public Sub Bug1108007_7()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(
Imports System
@@ -3321,7 +3302,7 @@ End Class
Public Sub Bug1108007_8()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(
Imports System
@@ -3344,7 +3325,7 @@ Class Outer
Dim x As Object = ""
Color.M(x)
Catch e As Exception
- Console.WriteLine(e)
+ Console.WriteLine(e.GetType())
End Try
End Sub
@@ -3368,19 +3349,13 @@ End Class
AssertTheseDiagnostics(compilation, )
- CompileAndVerify(compilation, expectedOutput:=)
+ CompileAndVerify(compilation, expectedOutput:=)
End Sub
Public Sub Bug1108007_9()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(
Class Color
@@ -3426,7 +3401,7 @@ End Class
Public Sub Bug1114969()
- Dim compilation = CompilationUtils.CreateCompilationWithMscorlibAndVBRuntime(
+ Dim compilation = CreateCompilationWithMscorlibAndVBRuntime(
Class Color
diff --git a/src/Compilers/VisualBasic/Test/Semantic/Compilation/VisualBasicCompilationOptionsTests.vb b/src/Compilers/VisualBasic/Test/Semantic/Compilation/VisualBasicCompilationOptionsTests.vb
index c63b626b7dbea88c6f5d0975021264547c6b35ce..951cb5922f332e1d5bbda94e61c06dee521eb005 100644
--- a/src/Compilers/VisualBasic/Test/Semantic/Compilation/VisualBasicCompilationOptionsTests.vb
+++ b/src/Compilers/VisualBasic/Test/Semantic/Compilation/VisualBasicCompilationOptionsTests.vb
@@ -495,6 +495,7 @@ BC2042: The options /vbruntime* and /target:module cannot be combined.
"OptionExplicit",
"OptionCompareText",
"EmbedVbCoreRuntime",
+ "SuppressEmbeddedDeclarations",
"ParseOptions")
End Sub
diff --git a/src/EditorFeatures/CSharpTest/Recommendations/ThisKeywordRecommenderTests.cs b/src/EditorFeatures/CSharpTest/Recommendations/ThisKeywordRecommenderTests.cs
index 5e4df94ffc0fe7dcba04eb69e0bfec3a1f291579..5252c106d245dd275b9fab6a16ccfd605b42f98f 100644
--- a/src/EditorFeatures/CSharpTest/Recommendations/ThisKeywordRecommenderTests.cs
+++ b/src/EditorFeatures/CSharpTest/Recommendations/ThisKeywordRecommenderTests.cs
@@ -526,5 +526,97 @@ void M()
{
var c = new C { x = 2, y = 3, $$");
}
+
+ [WorkItem(725, "https://github.com/dotnet/roslyn/issues/725")]
+ [WorkItem(1107414)]
+ [Fact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
+ public void InExpressionBodiedMembersProperty()
+ {
+ VerifyKeyword(@"
+class C
+{
+ int x;
+ int M => $$
+ int p;
+}");
+ }
+
+ [WorkItem(725, "https://github.com/dotnet/roslyn/issues/725")]
+ [WorkItem(1107414)]
+ [Fact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
+ public void InExpressionBodiedMembersMethod()
+ {
+ VerifyKeyword(@"
+class C
+{
+ int x;
+ int give() => $$");
+ }
+
+ [WorkItem(725, "https://github.com/dotnet/roslyn/issues/725")]
+ [WorkItem(1107414)]
+ [Fact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
+ public void InExpressionBodiedMembersIndexer()
+ {
+ VerifyKeyword(@"
+class C
+{
+ int x;
+ public object this[int i] => $$");
+ }
+
+ [WorkItem(725, "https://github.com/dotnet/roslyn/issues/725")]
+ [WorkItem(1107414)]
+ [Fact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
+ public void NotInExpressionBodiedMembers_Static()
+ {
+ VerifyAbsence(@"
+class C
+{
+ int x;
+ static int M => $$");
+ }
+
+ [WorkItem(725, "https://github.com/dotnet/roslyn/issues/725")]
+ [WorkItem(1107414)]
+ [Fact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
+ public void NotInExpressionBodiedMembersOperator()
+ {
+ VerifyAbsence(@"
+class C
+{
+ int x;
+ public static C operator - (C c1) => $$");
+ }
+
+ [WorkItem(725, "https://github.com/dotnet/roslyn/issues/725")]
+ [WorkItem(1107414)]
+ [Fact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
+ public void NotInExpressionBodiedMembersConversionOperator()
+ {
+ VerifyAbsence(@"
+class F
+{
+}
+
+class C
+{
+ int x;
+ public static explicit operator F(C c1) => $$");
+ }
+
+ [WorkItem(725, "https://github.com/dotnet/roslyn/issues/725")]
+ [WorkItem(1107414)]
+ [Fact, Trait(Traits.Feature, Traits.Features.KeywordRecommending)]
+ public void OutsideExpressionBodiedMember()
+ {
+ VerifyAbsence(@"
+class C
+{
+ int x;
+ int M => this.x;$$
+ int p;
+}");
+ }
}
}
diff --git a/src/ExpressionEvaluator/CSharp/Test/ExpressionCompiler/LocalsTests.cs b/src/ExpressionEvaluator/CSharp/Test/ExpressionCompiler/LocalsTests.cs
index 86bca7ac6acb07c45e24ec68336e8036ff2f7b76..bdf3d2083282683cddace2ec08599ef1cc44c341 100644
--- a/src/ExpressionEvaluator/CSharp/Test/ExpressionCompiler/LocalsTests.cs
+++ b/src/ExpressionEvaluator/CSharp/Test/ExpressionCompiler/LocalsTests.cs
@@ -2392,6 +2392,56 @@ .maxstack 1
locals.Free();
}
+ [WorkItem(947)]
+ [Fact]
+ public void DuplicateEditorBrowsableAttributes()
+ {
+ const string libSource = @"
+namespace System.ComponentModel
+{
+ public enum EditorBrowsableState
+ {
+ Always = 0,
+ Never = 1,
+ Advanced = 2
+ }
+
+ [AttributeUsage(AttributeTargets.All)]
+ internal sealed class EditorBrowsableAttribute : Attribute
+ {
+ public EditorBrowsableAttribute(EditorBrowsableState state) { }
+ }
+}
+";
+
+ const string source = @"
+[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+class C
+{
+ void M()
+ {
+ }
+}
+";
+ var libRef = CreateCompilationWithMscorlib(libSource).EmitToImageReference();
+ var comp = CreateCompilationWithMscorlib(source, new[] { SystemRef }, TestOptions.DebugDll);
+
+ byte[] exeBytes;
+ byte[] pdbBytes;
+ ImmutableArray unusedReferences;
+ var result = comp.EmitAndGetReferences(out exeBytes, out pdbBytes, out unusedReferences);
+ Assert.True(result);
+
+ var runtime = CreateRuntimeInstance(GetUniqueName(), ImmutableArray.Create(MscorlibRef, SystemRef, SystemCoreRef, SystemXmlLinqRef, libRef), exeBytes, new SymReader(pdbBytes));
+
+ string typeName;
+ var locals = ArrayBuilder.GetInstance();
+ CompilationTestData testData;
+ GetLocals(runtime, "C.M", argumentsOnly: false, locals: locals, count: 1, typeName: out typeName, testData: out testData);
+ Assert.Equal("this", locals.Single().LocalName);
+ locals.Free();
+ }
+
private static void GetLocals(RuntimeInstance runtime, string methodName, bool argumentsOnly, ArrayBuilder locals, int count, out string typeName, out CompilationTestData testData)
{
var context = CreateMethodContext(runtime, methodName);
diff --git a/src/ExpressionEvaluator/Core/Source/Concord/Microsoft.VisualStudio.Debugger.Engine.il b/src/ExpressionEvaluator/Core/Source/Concord/Microsoft.VisualStudio.Debugger.Engine.il
index fc5448795e6db1271fbcbd53c0c03b731d3e17ba..e64c0eecddb7b8c2daf616dd0b9f25bf0e0c7fd3 100644
--- a/src/ExpressionEvaluator/Core/Source/Concord/Microsoft.VisualStudio.Debugger.Engine.il
+++ b/src/ExpressionEvaluator/Core/Source/Concord/Microsoft.VisualStudio.Debugger.Engine.il
@@ -39,13 +39,13 @@
.ver 1:0:0:0
}
.module Microsoft.VisualStudio.Debugger.Engine.dll
-// MVID: {F69E895E-D452-4E38-95BE-7B90DD70E62B}
+// MVID: {163431D2-419D-4E9C-8C45-797F632D58BA}
.imagebase 0x00400000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003 // WINDOWS_CUI
.corflags 0x00000001 // ILONLY
-// Image base: 0x018D0000
+// Image base: 0x02B50000
// =============== CLASS MEMBERS DECLARATION ===================
diff --git a/src/ExpressionEvaluator/Core/Source/Concord/Microsoft.VisualStudio.Debugger.Metadata.il b/src/ExpressionEvaluator/Core/Source/Concord/Microsoft.VisualStudio.Debugger.Metadata.il
index 73323dfc0fe74576884e2d19b8d11d325e2dec5e..3eb0d052d95962d84ddec5669d23e972c7a4f4d7 100644
--- a/src/ExpressionEvaluator/Core/Source/Concord/Microsoft.VisualStudio.Debugger.Metadata.il
+++ b/src/ExpressionEvaluator/Core/Source/Concord/Microsoft.VisualStudio.Debugger.Metadata.il
@@ -38,13 +38,13 @@
.ver 14:0:0:0
}
.module Microsoft.VisualStudio.Debugger.Metadata.dll
-// MVID: {9E55C756-FD12-43E3-ADCD-A828058B43EB}
+// MVID: {AAC4EFF2-9AD3-4C4A-9D40-218365A20C54}
.imagebase 0x00400000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003 // WINDOWS_CUI
.corflags 0x00000001 // ILONLY
-// Image base: 0x00E60000
+// Image base: 0x00BC0000
// =============== CLASS MEMBERS DECLARATION ===================
diff --git a/src/ExpressionEvaluator/VisualBasic/Source/ExpressionCompiler/CompilationExtensions.vb b/src/ExpressionEvaluator/VisualBasic/Source/ExpressionCompiler/CompilationExtensions.vb
index 542c87c94329012619da9c170f7a20188e2715cf..f3bf3e20b0f3a7eabc657785414a813dc25ba53e 100644
--- a/src/ExpressionEvaluator/VisualBasic/Source/ExpressionCompiler/CompilationExtensions.vb
+++ b/src/ExpressionEvaluator/VisualBasic/Source/ExpressionCompiler/CompilationExtensions.vb
@@ -102,7 +102,8 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.ExpressionEvaluator
platform:=Platform.AnyCpu, ' Platform should match PEModule.Machine, in this case I386.
optimizationLevel:=OptimizationLevel.Release,
assemblyIdentityComparer:=DesktopAssemblyIdentityComparer.Default).
- WithMetadataImportOptions(MetadataImportOptions.All)
+ WithMetadataImportOptions(MetadataImportOptions.All).
+ WithSuppressEmbeddedDeclarations(True)
End Module
diff --git a/src/ExpressionEvaluator/VisualBasic/Test/ExpressionCompiler/ExpressionCompilerTests.vb b/src/ExpressionEvaluator/VisualBasic/Test/ExpressionCompiler/ExpressionCompilerTests.vb
index 89ef9dd54f53d1ffc4aa7a81032827fd9a47a581..7e9e21434a3ee98e8d683ed92c048e7d00be5852 100644
--- a/src/ExpressionEvaluator/VisualBasic/Test/ExpressionCompiler/ExpressionCompilerTests.vb
+++ b/src/ExpressionEvaluator/VisualBasic/Test/ExpressionCompiler/ExpressionCompilerTests.vb
@@ -1694,7 +1694,8 @@ End Class
Assert.Equal(DkmEvaluationResultStorageType.None, resultProperties.StorageType)
End Sub
-
+
+
Public Sub EvaluateXmlMemberAccess()
Dim source =
"Class C
@@ -1721,6 +1722,7 @@ End Class"
Dim errorMessage As String = Nothing
Dim testData = New CompilationTestData()
Dim result = context.CompileExpression("x.@a", resultProperties, errorMessage, testData, VisualBasicDiagnosticFormatter.Instance)
+ Assert.Null(errorMessage)
testData.GetMethodData("<>x.<>m0").VerifyIL(
"{
// Code size 22 (0x16)
@@ -3119,7 +3121,8 @@ End Module
End Sub
-
+
+
Public Sub ConditionalAccessExpressionType()
Dim source =
"Class C
@@ -3179,6 +3182,7 @@ End Class"
testData = New CompilationTestData()
result = context.CompileExpression("Me?.X.@a", resultProperties, errorMessage, testData, VisualBasicDiagnosticFormatter.Instance)
+ Assert.Null(errorMessage)
methodData = testData.GetMethodData("<>x.<>m0")
Assert.Equal(DirectCast(methodData.Method, MethodSymbol).ReturnType.SpecialType, SpecialType.System_String)
methodData.VerifyIL(
diff --git a/src/ExpressionEvaluator/VisualBasic/Test/ExpressionCompiler/LocalsTests.vb b/src/ExpressionEvaluator/VisualBasic/Test/ExpressionCompiler/LocalsTests.vb
index 295040285709b7de02431b979b2a248a333c0311..49e6717db7a61a309ea04f42f726ee1f7de921c5 100644
--- a/src/ExpressionEvaluator/VisualBasic/Test/ExpressionCompiler/LocalsTests.vb
+++ b/src/ExpressionEvaluator/VisualBasic/Test/ExpressionCompiler/LocalsTests.vb
@@ -2414,6 +2414,59 @@ End Class"
locals.Free()
End Sub
+
+
+ Public Sub DuplicateEditorBrowsableAttributes()
+ Const libSource = "
+Namespace System.ComponentModel
+
+ Public Enum EditorBrowsableState
+ Always = 0
+ Never = 1
+ Advanced = 2
+ End Enum
+
+
+ Friend NotInheritable Class EditorBrowsableAttribute
+ Inherits Attribute
+
+ Public Sub New(state As EditorBrowsableState)
+ End Sub
+ End Class
+
+End Namespace
+"
+
+ Const source = "
+
+Class C
+ Sub M()
+ End Sub
+End Class
+"
+
+ Dim libRef = CreateCompilationWithMscorlib({libSource}, compOptions:=TestOptions.DebugDll).EmitToImageReference()
+ Dim comp = CreateCompilationWithReferences({VisualBasicSyntaxTree.ParseText(source)}, {MscorlibRef, SystemRef}, TestOptions.DebugDll)
+
+ Dim exeBytes As Byte() = Nothing
+ Dim pdbBytes As Byte() = Nothing
+ Dim unusedReferences As ImmutableArray(Of MetadataReference) = Nothing
+ Dim result = comp.EmitAndGetReferences(exeBytes, pdbBytes, unusedReferences)
+ Assert.True(result)
+
+ ' Referencing SystemCoreRef and SystemXmlLinqRef will cause Microsoft.VisualBasic.Embedded to be compiled
+ ' and it depends on EditorBrowsableAttribute.
+ Dim runtimeReferences = ImmutableArray.Create(MscorlibRef, SystemRef, SystemCoreRef, SystemXmlLinqRef, libRef)
+ Dim runtime = CreateRuntimeInstance(GetUniqueName(), runtimeReferences, exeBytes, New SymReader(pdbBytes))
+
+ Dim typeName As String = Nothing
+ Dim locals = ArrayBuilder(Of LocalAndMethod).GetInstance()
+ Dim testData As CompilationTestData = Nothing
+ GetLocals(runtime, "C.M", argumentsOnly:=False, locals:=locals, count:=1, typeName:=typeName, testData:=testData)
+ Assert.Equal("Me", locals.Single().LocalName)
+ locals.Free()
+ End Sub
+
Private Shared Sub GetLocals(runtime As RuntimeInstance, methodName As String, argumentsOnly As Boolean, locals As ArrayBuilder(Of LocalAndMethod), count As Integer, ByRef typeName As String, ByRef testData As CompilationTestData)
Dim context = CreateMethodContext(runtime, methodName)
testData = New CompilationTestData()
diff --git a/src/Workspaces/CSharp/Portable/Extensions/ContextQuery/SyntaxTreeExtensions.cs b/src/Workspaces/CSharp/Portable/Extensions/ContextQuery/SyntaxTreeExtensions.cs
index 31e193b1140010e0d96131c9106620bb12c2d320..5a16d80bcb441e63380682e151661f3fcab397a4 100644
--- a/src/Workspaces/CSharp/Portable/Extensions/ContextQuery/SyntaxTreeExtensions.cs
+++ b/src/Workspaces/CSharp/Portable/Extensions/ContextQuery/SyntaxTreeExtensions.cs
@@ -3,7 +3,6 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading;
-using Microsoft.CodeAnalysis.CSharp;
using Microsoft.CodeAnalysis.CSharp.Symbols;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.CSharp.Utilities;
@@ -1422,6 +1421,12 @@ public static bool IsInstanceContext(this SyntaxTree syntaxTree, int position, S
return false;
}
+ var expressionBody = containingMember.GetExpressionBody();
+ if (expressionBody != null)
+ {
+ return TextSpan.FromBounds(expressionBody.ArrowToken.Span.End, expressionBody.FullSpan.End).IntersectsWith(position);
+ }
+
// Must be a property or something method-like.
if (containingMember.HasMethodShape())
{
diff --git a/src/Workspaces/CSharp/Portable/Extensions/MemberDeclarationSyntaxExtensions.cs b/src/Workspaces/CSharp/Portable/Extensions/MemberDeclarationSyntaxExtensions.cs
index c609d048abe5d3361fc977bef2cb0e5fe6e26aa6..c97c60fb6151220dbff1993c353d7f3a41fd6d6f 100644
--- a/src/Workspaces/CSharp/Portable/Extensions/MemberDeclarationSyntaxExtensions.cs
+++ b/src/Workspaces/CSharp/Portable/Extensions/MemberDeclarationSyntaxExtensions.cs
@@ -316,6 +316,25 @@ public static BlockSyntax GetBody(this MemberDeclarationSyntax memberDeclaration
return null;
}
+ public static ArrowExpressionClauseSyntax GetExpressionBody(this MemberDeclarationSyntax memberDeclaration)
+ {
+ switch (memberDeclaration?.Kind())
+ {
+ case SyntaxKind.PropertyDeclaration:
+ return ((PropertyDeclarationSyntax)memberDeclaration).ExpressionBody;
+ case SyntaxKind.MethodDeclaration:
+ return ((MethodDeclarationSyntax)memberDeclaration).ExpressionBody;
+ case SyntaxKind.IndexerDeclaration:
+ return ((IndexerDeclarationSyntax)memberDeclaration).ExpressionBody;
+ case SyntaxKind.OperatorDeclaration:
+ return ((OperatorDeclarationSyntax)memberDeclaration).ExpressionBody;
+ case SyntaxKind.ConversionOperatorDeclaration:
+ return ((ConversionOperatorDeclarationSyntax)memberDeclaration).ExpressionBody;
+ default:
+ return null;
+ }
+ }
+
public static MemberDeclarationSyntax WithBody(
this MemberDeclarationSyntax memberDeclaration,
BlockSyntax body)