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

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

......@@ -15,7 +15,7 @@
<!-- The release moniker for our packages. Developers should use "dev" and official builds pick the branch
moniker listed below -->
<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 -->
<NuGetPreReleaseVersion>$(RoslynFileVersionBase)-$(RoslynNuGetMoniker)</NuGetPreReleaseVersion>
......
......@@ -5,14 +5,7 @@
"version": "2.6.*",
"nuget": [ "https://dotnet.myget.org/F/roslyn/api/v2/package" ],
"vsix": [ "https://dotnet.myget.org/F/roslyn/vsix/upload" ],
"channels": [ "dev15.5", "dev15.5p2" ]
},
"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" ]
"channels": [ "dev15.5", "dev15.5p3" ]
},
"dev/jaredpar/fix-publish": {
"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.Test.Utilities;
......@@ -160,5 +160,83 @@ public void IFieldReferenceExpression_InferenceDeconstructionDeclaration_Alterna
VerifyOperationTreeAndDiagnosticsForTest<DeclarationExpressionSyntax>(source, expectedOperationTree, expectedDiagnostics,
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
#pragma warning restore RS0010 // Avoid using cref tags with a prefix
CommonConversion Conversion { get; }
/// <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>
bool IsExplicitInCode { get; }
/// <summary>
......
......@@ -2084,21 +2084,19 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Symbols
Friend NotOverridable Overrides ReadOnly Property ObsoleteAttributeData As ObsoleteAttributeData
Get
' If there are no attributes then this symbol is not Obsolete.
If Not GetAttributeDeclarations().Any() Then
Return Nothing
Dim lazyCustomAttributesBag = m_lazyCustomAttributesBag
If lazyCustomAttributesBag IsNot Nothing AndAlso lazyCustomAttributesBag.IsEarlyDecodedWellKnownAttributeDataComputed Then
Dim data = DirectCast(lazyCustomAttributesBag.EarlyDecodedWellKnownAttributeData, CommonTypeEarlyWellKnownAttributeData)
Return If(data IsNot Nothing, data.ObsoleteAttributeData, Nothing)
End If
If m_lazyCustomAttributesBag Is Nothing Then
Return ObsoleteAttributeData.Uninitialized
End If
For Each decl In TypeDeclaration.Declarations
If decl.HasAnyAttributes Then
Return ObsoleteAttributeData.Uninitialized
End If
Next
If m_lazyCustomAttributesBag.IsEarlyDecodedWellKnownAttributeDataComputed Then
Dim data = DirectCast(m_lazyCustomAttributesBag.EarlyDecodedWellKnownAttributeData, TypeEarlyWellKnownAttributeData)
Return If(data IsNot Nothing, data.ObsoleteAttributeData, Nothing)
Else
Return ObsoleteAttributeData.Uninitialized
End If
Return Nothing
End Get
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.Test.Utilities
......@@ -36,5 +36,99 @@ IOperation: (OperationKind.None, Type: null) (Syntax: 'Conditional(field)')
VerifyOperationTreeAndDiagnosticsForTest(Of AttributeSyntax)(source, expectedOperationTree, expectedDiagnostics)
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 Namespace
......@@ -26,10 +26,11 @@ internal static partial class SymbolSearchUpdateEngineFactory
RemoteFeatureOptions.SymbolSearchEnabled, cancellationToken).ConfigureAwait(false);
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)
{
return new RemoteUpdateEngine(workspace, session, logService, progressService);
return new RemoteUpdateEngine(workspace, session);
}
}
......@@ -37,27 +38,19 @@ internal static partial class SymbolSearchUpdateEngineFactory
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 Workspace _workspace;
private readonly ISymbolSearchLogService _logService;
private readonly ISymbolSearchProgressService _progressService;
private readonly KeepAliveSession _session;
public RemoteUpdateEngine(
Workspace workspace,
KeepAliveSession session,
ISymbolSearchLogService logService,
ISymbolSearchProgressService progressService)
KeepAliveSession session)
{
_workspace = workspace;
_session = session;
_logService = logService;
_progressService = progressService;
}
public async Task<ImmutableArray<PackageWithTypeResult>> FindPackagesWithTypeAsync(
......@@ -97,8 +90,18 @@ private partial class RemoteUpdateEngine : ISymbolSearchUpdateEngine, ISymbolSea
nameof(IRemoteSymbolSearchUpdateEngine.UpdateContinuouslyAsync),
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)
=> _logService.LogExceptionAsync(exception, text);
......@@ -117,8 +120,6 @@ public Task OnDownloadFullDatabaseCanceledAsync()
public Task OnDownloadFullDatabaseFailedAsync(string message)
=> _progressService.OnDownloadFullDatabaseFailedAsync(message);
#endregion
}
}
}
......@@ -143,17 +143,31 @@ string[] TestPackageNames = {
// or they will not be published anywhere at all
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.CSharp.CodeStyle",
"Microsoft.CodeAnalysis.VisualBasic.CodeStyle",
"Microsoft.CodeAnalysis.VisualBasic.Scripting",
// Only contains exes. Only used for insertion into dotnet CLI
"Microsoft.Net.Compilers.netcore",
// C# Interactive on CoreCLR is pre-release
"Microsoft.Net.CSharp.Interactive.netcore",
// Pre-release package, API and structure not finalized
"Microsoft.NETCore.Compilers",
"Microsoft.CodeAnalysis.Remote.Razor.ServiceHub",
"Microsoft.CodeAnalysis.Remote.ServiceHub",
"Microsoft.CodeAnalysis.Remote.Workspaces",
// Only used in Roslyn testing code
"Microsoft.CodeAnalysis.Test.Resources.Proprietary",
"Microsoft.VisualStudio.IntegrationTest.Utilities",
"Microsoft.VisualStudio.LanguageServices.Razor.RemoteClient",
"Microsoft.CodeAnalysis.PooledObjects",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册