From f86859e7c9ef59bb1cc71e8b2468190e43cc31f6 Mon Sep 17 00:00:00 2001 From: Heejae Chang Date: Fri, 25 Aug 2017 11:58:54 -0700 Subject: [PATCH] put both partial method symbol to event queue. --- src/Compilers/CSharp/Portable/Compiler/MethodCompiler.cs | 3 +-- .../Test/Semantic/Diagnostics/GetDiagnosticsTests.cs | 9 +++++---- .../VisualBasic/Portable/Compilation/MethodCompiler.vb | 3 +-- .../Test/Semantic/Diagnostics/GetDiagnosticsTests.vb | 8 ++++---- 4 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/Compilers/CSharp/Portable/Compiler/MethodCompiler.cs b/src/Compilers/CSharp/Portable/Compiler/MethodCompiler.cs index b66f89f5f07..5a045f59e48 100644 --- a/src/Compilers/CSharp/Portable/Compiler/MethodCompiler.cs +++ b/src/Compilers/CSharp/Portable/Compiler/MethodCompiler.cs @@ -1030,8 +1030,7 @@ public override object VisitField(FieldSymbol symbol, TypeCompilationState argum return semanticModel; }); - MethodSymbol symbolToProduce = methodSymbol.PartialDefinitionPart ?? methodSymbol; - _compilation.EventQueue.TryEnqueue(new SymbolDeclaredCompilationEvent(_compilation, symbolToProduce, lazySemanticModel)); + _compilation.EventQueue.TryEnqueue(new SymbolDeclaredCompilationEvent(_compilation, methodSymbol, lazySemanticModel)); } // Don't lower if we're not emitting or if there were errors. diff --git a/src/Compilers/CSharp/Test/Semantic/Diagnostics/GetDiagnosticsTests.cs b/src/Compilers/CSharp/Test/Semantic/Diagnostics/GetDiagnosticsTests.cs index 8b0d3d22b70..be945b2cb8b 100644 --- a/src/Compilers/CSharp/Test/Semantic/Diagnostics/GetDiagnosticsTests.cs +++ b/src/Compilers/CSharp/Test/Semantic/Diagnostics/GetDiagnosticsTests.cs @@ -271,9 +271,10 @@ private static bool DequeueCompilationEvents(AsyncQueue eventQ { var symbol = symbolDeclaredEvent.Symbol; var added = declaredSymbolNames.Add(symbol.Name); - Assert.True(added, "Unexpected multiple symbol declared events for symbol " + symbol); - var method = symbol as Symbols.MethodSymbol; - Assert.Null(method?.PartialDefinitionPart); // we should never get a partial method's implementation part + if (!added) + { + Assert.True(((Symbols.SourceMemberMethodSymbol)symbol).IsPartial, "Unexpected multiple symbol declared events for symbol " + symbol); + } } else { @@ -293,7 +294,7 @@ private static bool DequeueCompilationEvents(AsyncQueue eventQ public void TestEventQueueCompletionForEmptyCompilation() { var compilation = CreateCompilationWithMscorlib45(SpecializedCollections.EmptyEnumerable()).WithEventQueue(new AsyncQueue()); - + // Force complete compilation event queue var unused = compilation.GetDiagnostics(); diff --git a/src/Compilers/VisualBasic/Portable/Compilation/MethodCompiler.vb b/src/Compilers/VisualBasic/Portable/Compilation/MethodCompiler.vb index beec7a0e15e..328ae01e1ea 100644 --- a/src/Compilers/VisualBasic/Portable/Compilation/MethodCompiler.vb +++ b/src/Compilers/VisualBasic/Portable/Compilation/MethodCompiler.vb @@ -1222,8 +1222,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic End If Return semanticModel End Function) - Dim symbolToProduce = If(method.PartialDefinitionPart, method) - compilation.EventQueue.TryEnqueue(New SymbolDeclaredCompilationEvent(compilation, symbolToProduce, lazySemanticModel)) + compilation.EventQueue.TryEnqueue(New SymbolDeclaredCompilationEvent(compilation, method, lazySemanticModel)) End If End If End If diff --git a/src/Compilers/VisualBasic/Test/Semantic/Diagnostics/GetDiagnosticsTests.vb b/src/Compilers/VisualBasic/Test/Semantic/Diagnostics/GetDiagnosticsTests.vb index a6efaa43263..d75c5f44365 100644 --- a/src/Compilers/VisualBasic/Test/Semantic/Diagnostics/GetDiagnosticsTests.vb +++ b/src/Compilers/VisualBasic/Test/Semantic/Diagnostics/GetDiagnosticsTests.vb @@ -1,6 +1,5 @@ ' 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 System.Xml.Linq Imports Microsoft.CodeAnalysis.Diagnostics Imports Microsoft.CodeAnalysis.Test.Utilities Imports Roslyn.Test.Utilities @@ -424,9 +423,10 @@ BC31030: Conditional compilation constant '2' is not valid: Identifier expected. Dim symbolDeclaredEvent = TryCast(compEvent, SymbolDeclaredCompilationEvent) If symbolDeclaredEvent IsNot Nothing Then Dim symbol = symbolDeclaredEvent.Symbol - Assert.True(declaredSymbolNames.Add(symbol.Name), "Unexpected multiple symbol declared events for same symbol") - Dim method = TryCast(symbol, Symbols.MethodSymbol) - Assert.Null(method?.PartialDefinitionPart) ' we should never get a partial method's implementation part + Dim added = declaredSymbolNames.Add(symbol.Name) + If Not added Then + Assert.True(DirectCast(symbol, Symbols.SourceMethodSymbol).IsPartial, "Unexpected multiple symbol declared events for same symbol " + symbol.Name) + End If Else Dim compilationCompeletedEvent = TryCast(compEvent, CompilationUnitCompletedEvent) If compilationCompeletedEvent IsNot Nothing Then -- GitLab