提交 f8156e40 编写于 作者: M Manish Vasani

Merge remote-tracking branch 'upstream/master' into OperationsRename

...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
<!-- The release moniker for our packages. Developers should use "dev" and official builds pick the branch <!-- The release moniker for our packages. Developers should use "dev" and official builds pick the branch
moniker listed below --> moniker listed below -->
<RoslynNuGetMoniker Condition="'$(RoslynNuGetMoniker)' == ''">dev</RoslynNuGetMoniker> <RoslynNuGetMoniker Condition="'$(RoslynNuGetMoniker)' == ''">dev</RoslynNuGetMoniker>
<RoslynNuGetMoniker Condition="'$(OfficialBuild)' == 'true'">beta2</RoslynNuGetMoniker> <RoslynNuGetMoniker Condition="'$(OfficialBuild)' == 'true'">beta3</RoslynNuGetMoniker>
<!-- This is the base of the NuGet versioning for prerelease packages --> <!-- This is the base of the NuGet versioning for prerelease packages -->
<NuGetPreReleaseVersion>$(RoslynFileVersionBase)-$(RoslynNuGetMoniker)</NuGetPreReleaseVersion> <NuGetPreReleaseVersion>$(RoslynFileVersionBase)-$(RoslynNuGetMoniker)</NuGetPreReleaseVersion>
......
...@@ -5,14 +5,7 @@ ...@@ -5,14 +5,7 @@
"version": "2.6.*", "version": "2.6.*",
"nuget": [ "https://dotnet.myget.org/F/roslyn/api/v2/package" ], "nuget": [ "https://dotnet.myget.org/F/roslyn/api/v2/package" ],
"vsix": [ "https://dotnet.myget.org/F/roslyn/vsix/upload" ], "vsix": [ "https://dotnet.myget.org/F/roslyn/vsix/upload" ],
"channels": [ "dev15.5", "dev15.5p2" ] "channels": [ "dev15.5", "dev15.5p3" ]
},
"dev15.5-preview1": {
"nugetKind": "PerBuildPreRelease",
"version": "2.6.*",
"nuget": [ "https://dotnet.myget.org/F/roslyn/api/v2/package" ],
"vsix": [ "https://dotnet.myget.org/F/roslyn/vsix/upload" ],
"channels": [ "dev15.5p1" ]
}, },
"dev/jaredpar/fix-publish": { "dev/jaredpar/fix-publish": {
"nugetKind": "PerBuildPreRelease", "nugetKind": "PerBuildPreRelease",
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. // Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.CSharp.Test.Utilities; using Microsoft.CodeAnalysis.CSharp.Test.Utilities;
...@@ -160,5 +160,83 @@ public void IFieldReferenceExpression_InferenceDeconstructionDeclaration_Alterna ...@@ -160,5 +160,83 @@ public void IFieldReferenceExpression_InferenceDeconstructionDeclaration_Alterna
VerifyOperationTreeAndDiagnosticsForTest<DeclarationExpressionSyntax>(source, expectedOperationTree, expectedDiagnostics, VerifyOperationTreeAndDiagnosticsForTest<DeclarationExpressionSyntax>(source, expectedOperationTree, expectedDiagnostics,
parseOptions: TestOptions.Script); parseOptions: TestOptions.Script);
} }
[CompilerTrait(CompilerFeature.IOperation)]
[WorkItem(7582, "https://github.com/dotnet/roslyn/issues/7582")]
[Fact]
public void IFieldReferenceExpression_ImplicitThis ()
{
string source = @"
class C
{
int i;
void M()
{
/*<bind>*/i/*</bind>*/ = 1;
i++;
}
}
";
string expectedOperationTree = @"
IFieldReferenceExpression: System.Int32 C.i (OperationKind.FieldReferenceExpression, Type: System.Int32) (Syntax: 'i')
Instance Receiver:
IInstanceReferenceExpression (OperationKind.InstanceReferenceExpression, Type: C, IsImplicit) (Syntax: 'i')";
var expectedDiagnostics = DiagnosticDescription.None;
VerifyOperationTreeAndDiagnosticsForTest<IdentifierNameSyntax>(source, expectedOperationTree, expectedDiagnostics);
}
[CompilerTrait(CompilerFeature.IOperation)]
[WorkItem(7582, "https://github.com/dotnet/roslyn/issues/7582")]
[Fact]
public void IFieldReferenceExpression_ExplicitThis()
{
string source = @"
class C
{
int i;
void M()
{
/*<bind>*/this.i/*</bind>*/ = 1;
i++;
}
}
";
string expectedOperationTree = @"
IFieldReferenceExpression: System.Int32 C.i (OperationKind.FieldReferenceExpression, Type: System.Int32) (Syntax: 'this.i')
Instance Receiver:
IInstanceReferenceExpression (OperationKind.InstanceReferenceExpression, Type: C) (Syntax: 'this')";
var expectedDiagnostics = DiagnosticDescription.None;
VerifyOperationTreeAndDiagnosticsForTest<MemberAccessExpressionSyntax>(source, expectedOperationTree, expectedDiagnostics);
}
[CompilerTrait(CompilerFeature.IOperation)]
[WorkItem(7582, "https://github.com/dotnet/roslyn/issues/7582")]
[Fact]
public void IFieldReferenceExpression_base()
{
string source = @"
class C
{
protected int i;
}
class B : C
{
void M()
{
/*<bind>*/base.i/*</bind>*/ = 1;
i++;
}
}
";
string expectedOperationTree = @"
IFieldReferenceExpression: System.Int32 C.i (OperationKind.FieldReferenceExpression, Type: System.Int32) (Syntax: 'base.i')
Instance Receiver:
IInstanceReferenceExpression (OperationKind.InstanceReferenceExpression, Type: C) (Syntax: 'base')";
var expectedDiagnostics = DiagnosticDescription.None;
VerifyOperationTreeAndDiagnosticsForTest<MemberAccessExpressionSyntax>(source, expectedOperationTree, expectedDiagnostics);
}
} }
} }
...@@ -39,7 +39,7 @@ public interface IConversionOperation : IOperation ...@@ -39,7 +39,7 @@ public interface IConversionOperation : IOperation
#pragma warning restore RS0010 // Avoid using cref tags with a prefix #pragma warning restore RS0010 // Avoid using cref tags with a prefix
CommonConversion Conversion { get; } CommonConversion Conversion { get; }
/// <summary> /// <summary>
/// True if and only if the conversion is indicated explicity by a cast operation in the source code. /// True if and only if the conversion is indicated explicitly by a cast operation in the source code.
/// </summary> /// </summary>
bool IsExplicitInCode { get; } bool IsExplicitInCode { get; }
/// <summary> /// <summary>
......
...@@ -2084,21 +2084,19 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Symbols ...@@ -2084,21 +2084,19 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Symbols
Friend NotOverridable Overrides ReadOnly Property ObsoleteAttributeData As ObsoleteAttributeData Friend NotOverridable Overrides ReadOnly Property ObsoleteAttributeData As ObsoleteAttributeData
Get Get
' If there are no attributes then this symbol is not Obsolete. Dim lazyCustomAttributesBag = m_lazyCustomAttributesBag
If Not GetAttributeDeclarations().Any() Then If lazyCustomAttributesBag IsNot Nothing AndAlso lazyCustomAttributesBag.IsEarlyDecodedWellKnownAttributeDataComputed Then
Return Nothing Dim data = DirectCast(lazyCustomAttributesBag.EarlyDecodedWellKnownAttributeData, CommonTypeEarlyWellKnownAttributeData)
Return If(data IsNot Nothing, data.ObsoleteAttributeData, Nothing)
End If End If
If m_lazyCustomAttributesBag Is Nothing Then For Each decl In TypeDeclaration.Declarations
Return ObsoleteAttributeData.Uninitialized If decl.HasAnyAttributes Then
End If Return ObsoleteAttributeData.Uninitialized
End If
Next
If m_lazyCustomAttributesBag.IsEarlyDecodedWellKnownAttributeDataComputed Then Return Nothing
Dim data = DirectCast(m_lazyCustomAttributesBag.EarlyDecodedWellKnownAttributeData, TypeEarlyWellKnownAttributeData)
Return If(data IsNot Nothing, data.ObsoleteAttributeData, Nothing)
Else
Return ObsoleteAttributeData.Uninitialized
End If
End Get End Get
End Property End Property
......
' Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. ' 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.Operations Imports Microsoft.CodeAnalysis.Operations
Imports Microsoft.CodeAnalysis.Test.Utilities Imports Microsoft.CodeAnalysis.Test.Utilities
...@@ -36,5 +36,99 @@ IOperation: (OperationKind.None, Type: null) (Syntax: 'Conditional(field)') ...@@ -36,5 +36,99 @@ IOperation: (OperationKind.None, Type: null) (Syntax: 'Conditional(field)')
VerifyOperationTreeAndDiagnosticsForTest(Of AttributeSyntax)(source, expectedOperationTree, expectedDiagnostics) VerifyOperationTreeAndDiagnosticsForTest(Of AttributeSyntax)(source, expectedOperationTree, expectedDiagnostics)
End Sub End Sub
<CompilerTrait(CompilerFeature.IOperation)>
<Fact, WorkItem(7582, "https://github.com/dotnet/roslyn/issues/7582")>
Public Sub FieldReference_ImplicitMe()
Dim source = <![CDATA[
Class C
Private i As Integer
Private Sub M()
i = 1 'BIND:"i"
End Sub
End Class]]>.Value
Dim expectedOperationTree = <![CDATA[
IFieldReferenceExpression: C.i As System.Int32 (OperationKind.FieldReferenceExpression, Type: System.Int32) (Syntax: 'i')
Instance Receiver:
IInstanceReferenceExpression (OperationKind.InstanceReferenceExpression, Type: C, IsImplicit) (Syntax: 'i')
]]>.Value
Dim expectedDiagnostics = String.Empty
VerifyOperationTreeAndDiagnosticsForTest(Of IdentifierNameSyntax)(source, expectedOperationTree, expectedDiagnostics)
End Sub
<CompilerTrait(CompilerFeature.IOperation)>
<Fact, WorkItem(7582, "https://github.com/dotnet/roslyn/issues/7582")>
Public Sub FieldReference_ExplicitMe()
Dim source = <![CDATA[
Class C
Private i As Integer
Private Sub M()
Me.i = 1 'BIND:"Me.i"
End Sub
End Class]]>.Value
Dim expectedOperationTree = <![CDATA[
IFieldReferenceExpression: C.i As System.Int32 (OperationKind.FieldReferenceExpression, Type: System.Int32) (Syntax: 'Me.i')
Instance Receiver:
IInstanceReferenceExpression (OperationKind.InstanceReferenceExpression, Type: C) (Syntax: 'Me')
]]>.Value
Dim expectedDiagnostics = String.Empty
VerifyOperationTreeAndDiagnosticsForTest(Of MemberAccessExpressionSyntax)(source, expectedOperationTree, expectedDiagnostics)
End Sub
<CompilerTrait(CompilerFeature.IOperation)>
<Fact, WorkItem(7582, "https://github.com/dotnet/roslyn/issues/7582")>
Public Sub FieldReference_MyBase()
Dim source = <![CDATA[
Class C
Protected i As Integer
End Class
Class B
Inherits C
Private Sub M()
MyBase.i = 1 'BIND:"MyBase.i"
End Sub
End Class]]>.Value
Dim expectedOperationTree = <![CDATA[
IFieldReferenceExpression: C.i As System.Int32 (OperationKind.FieldReferenceExpression, Type: System.Int32) (Syntax: 'MyBase.i')
Instance Receiver:
IInstanceReferenceExpression (OperationKind.InstanceReferenceExpression, Type: C) (Syntax: 'MyBase')
]]>.Value
Dim expectedDiagnostics = String.Empty
VerifyOperationTreeAndDiagnosticsForTest(Of MemberAccessExpressionSyntax)(source, expectedOperationTree, expectedDiagnostics)
End Sub
<CompilerTrait(CompilerFeature.IOperation)>
<Fact, WorkItem(7582, "https://github.com/dotnet/roslyn/issues/7582")>
Public Sub FieldReference_MyClass()
Dim source = <![CDATA[
Class C
Private i As Integer
Private Sub M()
MyClass.i = 1 'BIND:"MyClass.i"
End Sub
End Class]]>.Value
Dim expectedOperationTree = <![CDATA[
IFieldReferenceExpression: C.i As System.Int32 (OperationKind.FieldReferenceExpression, Type: System.Int32) (Syntax: 'MyClass.i')
Instance Receiver:
IInstanceReferenceExpression (OperationKind.InstanceReferenceExpression, Type: C) (Syntax: 'MyClass')
]]>.Value
Dim expectedDiagnostics = String.Empty
VerifyOperationTreeAndDiagnosticsForTest(Of MemberAccessExpressionSyntax)(source, expectedOperationTree, expectedDiagnostics)
End Sub
End Class End Class
End Namespace End Namespace
...@@ -26,10 +26,11 @@ internal static partial class SymbolSearchUpdateEngineFactory ...@@ -26,10 +26,11 @@ internal static partial class SymbolSearchUpdateEngineFactory
RemoteFeatureOptions.SymbolSearchEnabled, cancellationToken).ConfigureAwait(false); RemoteFeatureOptions.SymbolSearchEnabled, cancellationToken).ConfigureAwait(false);
if (client != null) if (client != null)
{ {
var session = await client.TryCreateKeepAliveSessionAsync(WellKnownServiceHubServices.RemoteSymbolSearchUpdateEngine, logService, cancellationToken).ConfigureAwait(false); var callbackObject = new CallbackObject(logService, progressService);
var session = await client.TryCreateKeepAliveSessionAsync(WellKnownServiceHubServices.RemoteSymbolSearchUpdateEngine, callbackObject, cancellationToken).ConfigureAwait(false);
if (session != null) if (session != null)
{ {
return new RemoteUpdateEngine(workspace, session, logService, progressService); return new RemoteUpdateEngine(workspace, session);
} }
} }
...@@ -37,27 +38,19 @@ internal static partial class SymbolSearchUpdateEngineFactory ...@@ -37,27 +38,19 @@ internal static partial class SymbolSearchUpdateEngineFactory
return new SymbolSearchUpdateEngine(logService, progressService); return new SymbolSearchUpdateEngine(logService, progressService);
} }
private partial class RemoteUpdateEngine : ISymbolSearchUpdateEngine, ISymbolSearchLogService, ISymbolSearchProgressService private partial class RemoteUpdateEngine : ISymbolSearchUpdateEngine
{ {
private readonly SemaphoreSlim _gate = new SemaphoreSlim(initialCount: 1); private readonly SemaphoreSlim _gate = new SemaphoreSlim(initialCount: 1);
private readonly Workspace _workspace; private readonly Workspace _workspace;
private readonly ISymbolSearchLogService _logService;
private readonly ISymbolSearchProgressService _progressService;
private readonly KeepAliveSession _session; private readonly KeepAliveSession _session;
public RemoteUpdateEngine( public RemoteUpdateEngine(
Workspace workspace, Workspace workspace,
KeepAliveSession session, KeepAliveSession session)
ISymbolSearchLogService logService,
ISymbolSearchProgressService progressService)
{ {
_workspace = workspace; _workspace = workspace;
_session = session; _session = session;
_logService = logService;
_progressService = progressService;
} }
public async Task<ImmutableArray<PackageWithTypeResult>> FindPackagesWithTypeAsync( public async Task<ImmutableArray<PackageWithTypeResult>> FindPackagesWithTypeAsync(
...@@ -97,8 +90,18 @@ private partial class RemoteUpdateEngine : ISymbolSearchUpdateEngine, ISymbolSea ...@@ -97,8 +90,18 @@ private partial class RemoteUpdateEngine : ISymbolSearchUpdateEngine, ISymbolSea
nameof(IRemoteSymbolSearchUpdateEngine.UpdateContinuouslyAsync), nameof(IRemoteSymbolSearchUpdateEngine.UpdateContinuouslyAsync),
new object[] { sourceName, localSettingsDirectory }, CancellationToken.None).ConfigureAwait(false); new object[] { sourceName, localSettingsDirectory }, CancellationToken.None).ConfigureAwait(false);
} }
}
private class CallbackObject : ISymbolSearchLogService, ISymbolSearchProgressService
{
private readonly ISymbolSearchLogService _logService;
private readonly ISymbolSearchProgressService _progressService;
#region RPC callbacks public CallbackObject(ISymbolSearchLogService logService, ISymbolSearchProgressService progressService)
{
_logService = logService;
_progressService = progressService;
}
public Task LogExceptionAsync(string exception, string text) public Task LogExceptionAsync(string exception, string text)
=> _logService.LogExceptionAsync(exception, text); => _logService.LogExceptionAsync(exception, text);
...@@ -117,8 +120,6 @@ public Task OnDownloadFullDatabaseCanceledAsync() ...@@ -117,8 +120,6 @@ public Task OnDownloadFullDatabaseCanceledAsync()
public Task OnDownloadFullDatabaseFailedAsync(string message) public Task OnDownloadFullDatabaseFailedAsync(string message)
=> _progressService.OnDownloadFullDatabaseFailedAsync(message); => _progressService.OnDownloadFullDatabaseFailedAsync(message);
#endregion
} }
} }
} }
...@@ -143,17 +143,31 @@ string[] TestPackageNames = { ...@@ -143,17 +143,31 @@ string[] TestPackageNames = {
// or they will not be published anywhere at all // or they will not be published anywhere at all
var PreReleaseOnlyPackages = new HashSet<string> var PreReleaseOnlyPackages = new HashSet<string>
{ {
// Contains the compiler build task, but Microsoft.NET.Compilers
// should be preferred. Used to construct a standalone compiler for
// dotnet CLI.
"Microsoft.CodeAnalysis.Build.Tasks", "Microsoft.CodeAnalysis.Build.Tasks",
"Microsoft.CodeAnalysis.CSharp.CodeStyle", "Microsoft.CodeAnalysis.CSharp.CodeStyle",
"Microsoft.CodeAnalysis.VisualBasic.CodeStyle", "Microsoft.CodeAnalysis.VisualBasic.CodeStyle",
"Microsoft.CodeAnalysis.VisualBasic.Scripting", "Microsoft.CodeAnalysis.VisualBasic.Scripting",
// Only contains exes. Only used for insertion into dotnet CLI
"Microsoft.Net.Compilers.netcore", "Microsoft.Net.Compilers.netcore",
// C# Interactive on CoreCLR is pre-release
"Microsoft.Net.CSharp.Interactive.netcore", "Microsoft.Net.CSharp.Interactive.netcore",
// Pre-release package, API and structure not finalized
"Microsoft.NETCore.Compilers", "Microsoft.NETCore.Compilers",
"Microsoft.CodeAnalysis.Remote.Razor.ServiceHub", "Microsoft.CodeAnalysis.Remote.Razor.ServiceHub",
"Microsoft.CodeAnalysis.Remote.ServiceHub", "Microsoft.CodeAnalysis.Remote.ServiceHub",
"Microsoft.CodeAnalysis.Remote.Workspaces", "Microsoft.CodeAnalysis.Remote.Workspaces",
// Only used in Roslyn testing code
"Microsoft.CodeAnalysis.Test.Resources.Proprietary", "Microsoft.CodeAnalysis.Test.Resources.Proprietary",
"Microsoft.VisualStudio.IntegrationTest.Utilities", "Microsoft.VisualStudio.IntegrationTest.Utilities",
"Microsoft.VisualStudio.LanguageServices.Razor.RemoteClient", "Microsoft.VisualStudio.LanguageServices.Razor.RemoteClient",
"Microsoft.CodeAnalysis.PooledObjects", "Microsoft.CodeAnalysis.PooledObjects",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册