From fa95c9f1ea8e2c4025434cd0694b40481e8d9290 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 12 May 2025 08:52:02 +0200 Subject: [PATCH 01/32] [main] Update dependencies from dotnet/arcade-services (#488) Co-authored-by: dotnet-maestro[bot] --- .config/dotnet-tools.json | 2 +- eng/Version.Details.xml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 04e469de677..8f18a12d27c 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "microsoft.dotnet.darc": { - "version": "1.1.0-beta.25257.6", + "version": "1.1.0-beta.25259.3", "commands": [ "darc" ] diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 161b3e41b5f..5e3225c2815 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -10,9 +10,9 @@ https://github.com/dotnet/arcade f68e9e905ba5a7b6437b7560d5a6b170057ecb2f - + https://github.com/dotnet/arcade-services - 83dd68a5d7d5ccaed7e821cfc7e3c08e10cc3d8d + bd2309670213218bc0e2073379e4985b346600c7 From 4b859f7c0dc5e43685c117d2afd6f0f1d5d94711 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 12 May 2025 08:53:06 +0200 Subject: [PATCH 02/32] [main] Source code updates from dotnet/arcade (#491) Co-authored-by: dotnet-maestro[bot] --- prereqs/git-info/arcade.props | 6 +++--- src/arcade/eng/common/build.sh | 2 +- src/arcade/eng/common/darc-init.sh | 2 +- src/source-manifest.json | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/prereqs/git-info/arcade.props b/prereqs/git-info/arcade.props index f8defe97e78..d8f51fdc5a1 100644 --- a/prereqs/git-info/arcade.props +++ b/prereqs/git-info/arcade.props @@ -1,8 +1,8 @@  - 48c22bf560e40ae692a9098d29466539aa6c2e14 - 20250507.2 - 10.0.0-beta.25257.2 + 80c4e4d26cb85c86f7e1be77d2d9eceeef0f3493 + 20250509.2 + 10.0.0-beta.25259.2 \ No newline at end of file diff --git a/src/arcade/eng/common/build.sh b/src/arcade/eng/common/build.sh index 36fba82a379..27ae2c85601 100755 --- a/src/arcade/eng/common/build.sh +++ b/src/arcade/eng/common/build.sh @@ -136,7 +136,7 @@ while [[ $# > 0 ]]; do restore=true pack=true ;; - -productBuild|-pb) + -productbuild|-pb) build=true product_build=true restore=true diff --git a/src/arcade/eng/common/darc-init.sh b/src/arcade/eng/common/darc-init.sh index 36dbd45e1ce..e889f439b8d 100755 --- a/src/arcade/eng/common/darc-init.sh +++ b/src/arcade/eng/common/darc-init.sh @@ -68,7 +68,7 @@ function InstallDarcCli { fi fi - local arcadeServicesSource="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json" + local arcadeServicesSource="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" echo "Installing Darc CLI version $darcVersion..." echo "You may need to restart your command shell if this is the first dotnet tool you have installed." diff --git a/src/source-manifest.json b/src/source-manifest.json index 79f025ab5ef..b571f4bffcc 100644 --- a/src/source-manifest.json +++ b/src/source-manifest.json @@ -1,11 +1,11 @@ { "repositories": [ { - "packageVersion": "10.0.0-beta.25257.2", - "barId": 267228, + "packageVersion": "10.0.0-beta.25259.2", + "barId": 267715, "path": "arcade", "remoteUri": "https://github.com/dotnet/arcade", - "commitSha": "48c22bf560e40ae692a9098d29466539aa6c2e14" + "commitSha": "80c4e4d26cb85c86f7e1be77d2d9eceeef0f3493" }, { "packageVersion": "8.2.2-preview.1.24521.5", From 6f2c6583eae9eb2fbcfe981b4ea0197aec0e0b92 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 12 May 2025 08:54:58 +0200 Subject: [PATCH 03/32] [main] Source code updates from dotnet/roslyn (#495) Co-authored-by: dotnet-maestro[bot] --- prereqs/git-info/roslyn.props | 6 +- src/roslyn/Roslyn.sln | 2 + src/roslyn/azure-pipelines-integration.yml | 2 +- src/roslyn/eng/test-rebuild.ps1 | 1 + ...nExpressionForBuilderDiagnosticAnalyzer.cs | 3 +- ...SharpChangeToIEnumerableCodeFixProvider.cs | 6 +- ...ecessaryLambdaExpressionCodeFixProvider.cs | 3 +- .../UpdateExpressionState.cs | 3 +- .../AbstractPopulateSwitchCodeFixProvider.cs | 3 +- .../CSharp/Portable/CSharpResources.resx | 3 + .../CSharp/Portable/CodeGen/CodeGenerator.cs | 18 +- .../CSharp/Portable/CodeGen/EmitAddress.cs | 2 +- .../Portable/CodeGen/EmitArrayInitializer.cs | 26 +- .../CSharp/Portable/CodeGen/EmitExpression.cs | 70 +- .../CSharp/Portable/CodeGen/EmitOperators.cs | 4 +- .../CodeGen/EmitStackAllocInitializer.cs | 11 +- .../CSharp/Portable/CodeGen/EmitStatement.cs | 31 +- .../Portable/Compilation/CSharpCompilation.cs | 7 +- .../Portable/Compiler/MethodCompiler.cs | 53 +- .../EditAndContinue/CSharpSymbolMatcher.cs | 10 +- .../Emitter/EditAndContinue/EmitHelpers.cs | 3 +- .../EditAndContinue/PEDeltaAssemblyBuilder.cs | 6 +- .../Emitter/Model/PEAssemblyBuilder.cs | 3 +- .../Portable/Emitter/Model/PEModuleBuilder.cs | 2 +- .../Emitter/Model/PENetModuleBuilder.cs | 1 + .../CSharp/Portable/Errors/ErrorCode.cs | 2 + .../CSharp/Portable/Errors/ErrorFacts.cs | 1 + .../CSharp/Portable/Errors/MessageProvider.cs | 1 + .../Source/SourceNamedTypeSymbol_Extension.cs | 17 +- .../Portable/xlf/CSharpResources.cs.xlf | 5 + .../Portable/xlf/CSharpResources.de.xlf | 5 + .../Portable/xlf/CSharpResources.es.xlf | 5 + .../Portable/xlf/CSharpResources.fr.xlf | 5 + .../Portable/xlf/CSharpResources.it.xlf | 5 + .../Portable/xlf/CSharpResources.ja.xlf | 5 + .../Portable/xlf/CSharpResources.ko.xlf | 5 + .../Portable/xlf/CSharpResources.pl.xlf | 5 + .../Portable/xlf/CSharpResources.pt-BR.xlf | 5 + .../Portable/xlf/CSharpResources.ru.xlf | 5 + .../Portable/xlf/CSharpResources.tr.xlf | 5 + .../Portable/xlf/CSharpResources.zh-Hans.xlf | 5 + .../Portable/xlf/CSharpResources.zh-Hant.xlf | 5 + .../CSharp/Test/Emit/Emit/EmitErrorTests.cs | 8 +- .../Test/Emit/Emit/EmitMetadataTests.cs | 59 + .../AssemblyReferencesTests.cs | 16 +- .../EditAndContinueClosureTests.cs | 197 +- .../EditAndContinue/EditAndContinueTests.cs | 1088 ++- .../Test/Emit3/Semantics/ExtensionTests.cs | 19 +- .../MetadataHelpersTests.cs | 11 + .../Core/Portable/CodeGen/ILBuilder.cs | 90 +- .../Core/Portable/CodeGen/ILBuilderEmit.cs | 117 +- .../Core/Portable/CodeGen/ITokenDeferral.cs | 34 - .../Core/Portable/CodeGen/MethodBody.cs | 26 +- .../CodeGen/PrivateImplementationDetails.cs | 26 +- .../Core/Portable/CodeGen/StringTokenMap.cs | 71 + .../CodeGen/SwitchIntegralJumpTableEmitter.cs | 15 +- .../CodeGen/SwitchStringJumpTableEmitter.cs | 8 + .../Core/Portable/Compilation/Compilation.cs | 27 +- .../Compilation/EmitDifferenceOptions.cs | 15 + .../Diagnostic/CommonMessageProvider.cs | 1 + .../Portable/Emit/CommonPEModuleBuilder.cs | 138 +- .../Emit/EditAndContinue/DeletedMethodBody.cs | 10 +- .../EditAndContinue/DeltaMetadataWriter.cs | 55 +- .../MetadataReader/MetadataHelpers.cs | 41 + .../Core/Portable/PEWriter/MetadataWriter.cs | 35 +- .../Portable/PEWriter/MethodDefinitionBase.cs | 6 +- .../Core/Portable/PublicAPI.Unshipped.txt | 10 +- .../Core/Compilation/CompilationDifference.cs | 3 +- .../Core/Compilation/CompilationExtensions.cs | 2 + .../Test/Core/Metadata/ILBuilderVisualizer.cs | 22 +- .../Test/Core/Metadata/ILValidation.cs | 102 +- .../Test/Core/Mocks/TestMessageProvider.cs | 8 + .../Test/Utilities/CSharp/CSharpTestBase.cs | 2 + .../Portable/CodeGen/CodeGenerator.vb | 6 +- .../Portable/CodeGen/EmitAddress.vb | 2 +- .../Portable/CodeGen/EmitArrayInitializer.vb | 7 +- .../Portable/CodeGen/EmitConversion.vb | 2 +- .../Portable/CodeGen/EmitExpression.vb | 12 +- .../Portable/CodeGen/EmitOperators.vb | 8 +- .../Portable/CodeGen/EmitStatement.vb | 30 +- .../Portable/Compilation/MethodCompiler.vb | 7 +- .../Compilation/VisualBasicCompilation.vb | 2 + .../Emit/EditAndContinue/EmitHelpers.vb | 3 +- .../EditAndContinue/PEDeltaAssemblyBuilder.vb | 11 +- .../VisualBasicSymbolMatcher.vb | 5 +- .../Portable/Emit/PEAssemblyBuilder.vb | 8 +- .../Portable/Emit/PENetModuleBuilder.vb | 6 + .../VisualBasic/Portable/Errors/ErrorFacts.vb | 1 + .../VisualBasic/Portable/Errors/Errors.vb | 3 +- .../Portable/Errors/MessageProvider.vb | 6 + .../SymbolDisplayVisitor.Types.vb | 5 +- .../VisualBasic/Portable/VBResources.resx | 3 + .../Portable/xlf/VBResources.cs.xlf | 5 + .../Portable/xlf/VBResources.de.xlf | 5 + .../Portable/xlf/VBResources.es.xlf | 5 + .../Portable/xlf/VBResources.fr.xlf | 5 + .../Portable/xlf/VBResources.it.xlf | 5 + .../Portable/xlf/VBResources.ja.xlf | 5 + .../Portable/xlf/VBResources.ko.xlf | 5 + .../Portable/xlf/VBResources.pl.xlf | 5 + .../Portable/xlf/VBResources.pt-BR.xlf | 5 + .../Portable/xlf/VBResources.ru.xlf | 5 + .../Portable/xlf/VBResources.tr.xlf | 5 + .../Portable/xlf/VBResources.zh-Hans.xlf | 5 + .../Portable/xlf/VBResources.zh-Hant.xlf | 5 + .../EditAndContinueClosureTests.vb | 76 +- .../EditAndContinue/EditAndContinueTests.vb | 188 +- .../Test/Emit/Emit/EmitErrorTests.vb | 11 +- .../SymbolDisplay/SymbolDisplayTests.vb | 113 +- src/roslyn/src/Dependencies/.editorconfig | 6 + .../CustomDebugInfoConstants.cs | 2 + .../CustomDebugInfoEncoder.cs | 10 +- .../CustomDebugInfoKind.cs | 2 +- .../CustomDebugInfoReader.cs | 13 +- .../CustomDebugInfoRecord.cs | 2 +- .../DynamicLocalInfo.cs | 2 +- .../ImportTargetKind.cs | 2 + ...soft.CodeAnalysis.Debugging.Package.csproj | 3 +- .../PortableCustomDebugInfoKinds.cs | 2 + .../StateMachineHoistedLocalScope.cs | 2 +- .../TupleElementNamesInfo.cs | 6 +- .../VBImportScopeKind.cs | 2 + .../Extensions/ICollectionExtensions.cs | 2 + .../Extensions/IEnumerableExtensions.cs | 2 + .../Extensions/ImmutableArrayExtensions.cs | 2 + .../Collections/Internal/ArraySortHelper.cs | 2 + .../Collections/Internal/BitHelper.cs | 2 + .../Collections/Internal/HashHelpers.cs | 2 + .../Collections/Internal/ICollectionCalls.cs | 2 + .../Internal/ICollectionCalls`1.cs | 2 + .../Internal/ICollectionDebugView`1.cs | 2 + .../Collections/Internal/IDictionaryCalls.cs | 2 + .../Internal/IDictionaryDebugView`2.cs | 2 + .../Collections/Internal/IEnumerableCalls.cs | 2 + .../Internal/IEnumerableCalls`1.cs | 2 + .../Collections/Internal/IListCalls.cs | 2 + .../Collections/Internal/InsertionBehavior.cs | 2 + .../Collections/Internal/RoslynUnsafe.cs | 2 + .../Internal/SegmentedArrayHelper.cs | 2 + .../Internal/SegmentedArraySegment`1.cs | 2 + .../SegmentedHashSetEqualityComparer`1.cs | 2 + .../Collections/Internal/ThrowHelper.cs | 2 + .../src/Dependencies/Collections/OneOrMany.cs | 2 + .../Collections/RoslynEnumerable.cs | 2 + .../Collections/RoslynImmutableInterlocked.cs | 2 + .../Segmented/ImmutableSegmentedDictionary.cs | 2 + ...entedDictionary`2+Builder+KeyCollection.cs | 2 + ...ntedDictionary`2+Builder+PrivateMarshal.cs | 2 + ...tedDictionary`2+Builder+ValueCollection.cs | 2 + .../ImmutableSegmentedDictionary`2+Builder.cs | 2 + ...mutableSegmentedDictionary`2+Enumerator.cs | 2 + ...edDictionary`2+KeyCollection+Enumerator.cs | 2 + ...ableSegmentedDictionary`2+KeyCollection.cs | 2 + ...bleSegmentedDictionary`2+PrivateMarshal.cs | 2 + ...tableSegmentedDictionary`2+ValueBuilder.cs | 2 + ...Dictionary`2+ValueCollection+Enumerator.cs | 2 + ...leSegmentedDictionary`2+ValueCollection.cs | 2 + .../ImmutableSegmentedDictionary`2.cs | 2 + .../Segmented/ImmutableSegmentedHashSet.cs | 2 + .../ImmutableSegmentedHashSet`1+Builder.cs | 2 + .../ImmutableSegmentedHashSet`1+Enumerator.cs | 2 + ...utableSegmentedHashSet`1+PrivateMarshal.cs | 2 + ...mmutableSegmentedHashSet`1+ValueBuilder.cs | 2 + .../Segmented/ImmutableSegmentedHashSet`1.cs | 2 + .../Segmented/ImmutableSegmentedList.cs | 2 + .../ImmutableSegmentedListExtensions.cs | 2 + .../ImmutableSegmentedList`1+Builder.cs | 2 + .../ImmutableSegmentedList`1+Enumerator.cs | 2 + ...ImmutableSegmentedList`1+PrivateMarshal.cs | 2 + .../ImmutableSegmentedList`1+ValueBuilder.cs | 2 + .../Segmented/ImmutableSegmentedList`1.cs | 2 + .../Collections/Segmented/SegmentedArray.cs | 2 + .../SegmentedArray`1+PrivateMarshal.cs | 2 + .../Collections/Segmented/SegmentedArray`1.cs | 2 + .../Segmented/SegmentedCollectionsMarshal.cs | 2 + .../SegmentedDictionary`2+PrivateMarshal.cs | 2 + .../Segmented/SegmentedDictionary`2.cs | 2 + .../Segmented/SegmentedHashSet`1.cs | 2 + .../Collections/Segmented/SegmentedList`1.cs | 2 + ...SpecializedCollections.Empty.Collection.cs | 2 + ...SpecializedCollections.Empty.Dictionary.cs | 2 + ...SpecializedCollections.Empty.Enumerable.cs | 2 + ...SpecializedCollections.Empty.Enumerator.cs | 2 + ...ecializedCollections.Empty.Enumerator`1.cs | 2 + .../SpecializedCollections.Empty.List.cs | 2 + .../SpecializedCollections.Empty.Set.cs | 2 + .../SpecializedCollections.Empty.cs | 2 + ...cializedCollections.ReadOnly.Collection.cs | 2 + ...alizedCollections.ReadOnly.Enumerable`1.cs | 2 + ...alizedCollections.ReadOnly.Enumerable`2.cs | 2 + .../SpecializedCollections.ReadOnly.Set.cs | 2 + ...lizedCollections.Singleton.Collection`1.cs | 2 + ...lizedCollections.Singleton.Enumerator`1.cs | 2 + .../Specialized/SpecializedCollections.cs | 2 + .../Collections/TemporaryArrayExtensions.cs | 2 + .../Collections/TemporaryArray`1.cs | 2 + .../Contracts/CollectionBuilderAttribute.cs | 2 + .../CompilerFeatureRequiredAttribute.cs | 2 + .../Contract.InterpolatedStringHandlers.cs | 2 + .../src/Dependencies/Contracts/Contract.cs | 2 + .../Contracts/ExceptionUtilities.cs | 2 + .../Contracts/ExperimentalAttribute.cs | 2 + .../Dependencies/Contracts/IReadOnlySet.cs | 2 + .../src/Dependencies/Contracts/Index.cs | 2 + ...erpolatedStringHandlerArgumentAttribute.cs | 4 + .../InterpolatedStringHandlerAttribute.cs | 2 + .../Dependencies/Contracts/IsExternalInit.cs | 2 + .../Contracts/NonCopyableAttribute.cs | 2 + .../Contracts/NonDefaultableAttribute.cs | 2 + .../Contracts/NullableAttributes.cs | 3 + .../src/Dependencies/Contracts/Range.cs | 2 + .../Contracts/RequiredMemberAttribute.cs | 2 + .../Contracts/SetsRequiredMembersAttribute.cs | 2 + .../src/Dependencies/Directory.Build.targets | 17 + .../PooledObjects/ArrayBuilder.Enumerator.cs | 2 + .../PooledObjects/ArrayBuilder.cs | 2 + .../PooledObjects/ArrayBuilderExtensions.cs | 2 + .../src/Dependencies/PooledObjects/IPooled.cs | 2 + ....CodeAnalysis.PooledObjects.Package.csproj | 3 - .../PooledObjects/ObjectPool`1.cs | 2 + .../PooledObjects/PooledDelegates.cs | 2 + .../PooledObjects/PooledDictionary.cs | 2 + .../PooledObjects/PooledDisposer.cs | 2 + .../PooledObjects/PooledHashSet.cs | 2 + .../PooledObjects/PooledStringBuilder.cs | 2 + .../Dependencies/SourcePackage.editorconfig | 2 + .../Threading/AsyncBatchingWorkQueue`0.cs | 2 + .../Threading/AsyncBatchingWorkQueue`1.cs | 2 + .../Threading/AsyncBatchingWorkQueue`2.cs | 9 +- .../Threading/CancellationSeries.cs | 2 + .../Threading/ConfiguredYieldAwaitable.cs | 2 + .../Dependencies/Threading/TaskExtensions.cs | 2 + .../Threading/TestHooks/IAsyncToken.cs | 2 + .../IAsynchronousOperationListener.cs | 2 + .../IAsynchronousOperationListenerProvider.cs | 2 + .../TestHooks/IExpeditableDelaySource.cs | 2 + .../Threading/ValueTaskExtensions.cs | 2 + .../src/Dependencies/Threading/VoidResult.cs | 2 + .../Threading/YieldAwaitableExtensions.cs | 2 + ...HookupSessionManager_EventHookupSession.cs | 7 +- .../Copilot/CopilotWpfTextCreationListener.cs | 43 +- .../VSTypeScriptDidChangeHandler.cs | 11 +- .../VSTypeScriptDidCloseHandler.cs | 11 +- .../VSTypeScriptDidOpenHandler.cs | 11 +- .../VSTypeScriptLifeCycleManager.cs | 12 +- .../VSTypeScriptLspWorkspaceManagerFactory.cs | 5 +- .../VSTypeScriptProjectContextHandler.cs | 11 +- ...TypeScriptRequestTelemetryLoggerFactory.cs | 11 +- .../ExpressionCompiler/EEAssemblyBuilder.cs | 1 + .../ReferencedModulesTests.cs | 1 + .../PDB/MethodDebugInfo.Native.cs | 6 +- .../ExpressionCompiler/EEAssemblyBuilder.vb | 6 + .../ReferencedModulesTests.vb | 8 +- ...ExtensionMethodImportCompletionProvider.cs | 13 +- ...onstructorBaseTypeSignatureHelpProvider.cs | 3 +- .../IntroduceVariableTests.cs | 32 + .../Log/CompletionProvidersLogger.cs | 15 - ...ExtensionMethodImportCompletionProvider.cs | 10 +- ...odImportCompletionHelper.SymbolComputer.cs | 28 +- .../ExtensionMethodImportCompletionHelper.cs | 59 +- ...eExtensionMethodImportCompletionService.cs | 2 +- .../ImportCompletionItem.cs | 4 +- .../SerializableUnimportedExtensionMethods.cs | 33 - ...actReferenceDirectiveCompletionProvider.cs | 3 +- .../Portable/Copilot/CopilotChangeAnalysis.cs | 4 +- .../Copilot/CopilotChangeAnalysisUtilities.cs | 73 +- .../Copilot/ICopilotChangeAnalysisService.cs | 58 +- .../EditAndContinueCapabilities.cs | 10 + .../Portable/EditAndContinue/EditSession.cs | 1 + ...parisonOperatorsCodeRefactoringProvider.cs | 3 +- ...AbstractInlineMethodRefactoringProvider.cs | 9 +- .../AbstractIntroduceVariableService.State.cs | 6 +- ...seNamedArgumentsCodeRefactoringProvider.cs | 3 +- .../EditAndContinueTestVerifier.cs | 9 +- .../AbstractLanguageServerHostTests.cs | 2 +- .../Handler/Restore/RestoreHandler.cs | 2 +- .../LanguageServer/LanguageServerHost.cs | 4 +- .../Logging/LspServiceLogger.cs | 2 +- .../Program.cs | 6 +- .../AbstractLanguageServer.cs | 5 +- .../QueueItem.cs | 2 +- .../Extensions/ProtocolConversions.cs | 2 +- .../UnifiedSuggestedAction.cs | 15 +- .../CodeActions/CodeActionResolveHelper.cs | 2 +- .../Commands/ProvidesCommandAttribute.cs | 8 +- .../Completion/CompletionResolveHandler.cs | 2 +- .../AbstractDocumentPullDiagnosticHandler.cs | 2 +- .../AbstractPullDiagnosticHandler.cs | 14 +- ...AbstractWorkspacePullDiagnosticsHandler.cs | 2 +- .../WorkspaceDiagnosticSourceHelpers.cs | 2 +- .../Diagnostics/DiagnosticsPullCache.cs | 2 +- .../DocumentChanges/DidCloseHandler.cs | 12 +- .../Handler/DocumentChanges/DidOpenHandler.cs | 12 +- .../InlineCompletions/XmlSnippetParser.cs | 2 +- .../Handler/MapCode/MapCodeHandler.cs | 4 +- .../Protocol/Handler/MethodAttribute.cs | 8 +- .../GetTextDocumentWithContextHandler.cs | 10 +- .../RelatedDocumentsHandler.cs | 7 +- .../Protocol/Handler/RequestContext.cs | 7 +- .../AbstractSpellCheckingHandler.cs | 18 +- .../SpellCheck/DocumentSpellCheckHandler.cs | 4 +- .../SpellCheck/WorkspaceSpellCheckHandler.cs | 2 +- .../RequestTelemetryLoggerFactory.cs | 14 +- .../LspServices/AbstractLspServiceProvider.cs | 16 +- ...rpVisualBasicLspServiceFactoryAttribute.cs | 8 +- ...VisualBasicStatelessLspServiceAttribute.cs | 8 +- .../ExportLspServiceFactoryAttribute.cs | 12 +- .../ExportStatelessLspServiceAttribute.cs | 12 +- .../LspServices/RoslynLspServiceProvider.cs | 17 +- .../Protocol/RoslynLanguageServer.cs | 4 +- .../Workspaces/LspWorkspaceManager.cs | 4 +- .../Workspaces/LspWorkspaceManagerFactory.cs | 15 +- .../EditAndContinueTest.GenerationVerifier.cs | 15 +- .../EditAndContinue/EditAndContinueTest.cs | 17 +- .../Xaml/External/XamlCommandAttribute.cs | 7 +- .../Microsoft.CodeAnalysis.VisualBasic.txt | 9 + .../Microsoft.CodeAnalysis.VisualBasic.txt | 6154 +++++++++++++++++ .../SemanticSearch.ReferenceAssemblies.csproj | 8 +- .../VisualStudioLogHubLoggerFactory.cs | 2 +- .../VisualStudioSymbolNavigationService.cs | 3 +- .../AnalyzersCommandHandler.cs | 6 +- .../SolutionExplorer/ContextMenuController.cs | 3 +- .../QuickInfoToStringConverter.cs | 3 +- .../OptionPages/InternalOptionsControl.cs | 3 +- .../CodeActions/CodeActionsHandlerProvider.cs | 34 +- .../Core/Portable/Log/AggregateLogger.cs | 6 +- .../Shared/Extensions/ISymbolExtensions.cs | 3 +- .../Documentation/XmlDocumentationProvider.cs | 6 +- .../Workspace/Solution/Checksum_Factory.cs | 15 + .../Core/Portable/Workspace/Workspace.cs | 9 +- .../src/Workspaces/CoreTest/ChecksumTests.cs | 2 +- .../CoreTest/SolutionTests/SolutionTests.cs | 3 +- .../CoreTestUtilities/ObjectExtensions.cs | 2 +- .../RemoteEncapsulateFieldService.cs | 3 +- ...eExtensionMethodImportCompletionService.cs | 25 +- .../Core/Collections/IntervalTreeHelpers.cs | 10 +- .../SimpleMutableIntervalTree`2.cs | 4 +- .../ISymbolExtensions_Accessibility.cs | 3 +- .../Core/Extensions/ITypeSymbolExtensions.cs | 3 +- src/source-manifest.json | 6 +- 340 files changed, 9505 insertions(+), 1172 deletions(-) delete mode 100644 src/roslyn/src/Compilers/Core/Portable/CodeGen/ITokenDeferral.cs create mode 100644 src/roslyn/src/Compilers/Core/Portable/CodeGen/StringTokenMap.cs create mode 100644 src/roslyn/src/Compilers/Core/Portable/Compilation/EmitDifferenceOptions.cs create mode 100644 src/roslyn/src/Dependencies/.editorconfig create mode 100644 src/roslyn/src/Dependencies/Directory.Build.targets create mode 100644 src/roslyn/src/Dependencies/SourcePackage.editorconfig delete mode 100644 src/roslyn/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/SerializableUnimportedExtensionMethods.cs create mode 100644 src/roslyn/src/Tools/SemanticSearch/ReferenceAssemblies/ApiSet/Microsoft.CodeAnalysis.VisualBasic.txt create mode 100644 src/roslyn/src/Tools/SemanticSearch/ReferenceAssemblies/Apis/Microsoft.CodeAnalysis.VisualBasic.txt diff --git a/prereqs/git-info/roslyn.props b/prereqs/git-info/roslyn.props index 1592b161588..639f84f4896 100644 --- a/prereqs/git-info/roslyn.props +++ b/prereqs/git-info/roslyn.props @@ -1,8 +1,8 @@  - b422f78da6c84f4c1e3685580f9aa79c743d16c7 - 20250508.10 - 5.0.0-1.25258.10 + 7c625024a1984d9f04f317940d518402f5898758 + 20250510.2 + 5.0.0-1.25260.2 \ No newline at end of file diff --git a/src/roslyn/Roslyn.sln b/src/roslyn/Roslyn.sln index fe69d1c9957..fcfe71c1f73 100644 --- a/src/roslyn/Roslyn.sln +++ b/src/roslyn/Roslyn.sln @@ -2269,6 +2269,8 @@ Global src\Dependencies\CodeAnalysis.Debugging\Microsoft.CodeAnalysis.Debugging.projitems*{edc68a0e-c68d-4a74-91b7-bf38ec909888}*SharedItemsImports = 5 src\Dependencies\Contracts\Microsoft.CodeAnalysis.Contracts.projitems*{fa0e905d-ec46-466d-b7b2-3b5557f9428c}*SharedItemsImports = 5 src\ExpressionEvaluator\Core\Source\ResultProvider\ResultProvider.projitems*{fa0e905d-ec46-466d-b7b2-3b5557f9428c}*SharedItemsImports = 5 + src\Dependencies\Contracts\Microsoft.CodeAnalysis.Contracts.projitems*{fc2ae90b-2e4b-4045-9fdd-73d4f5ed6c89}*SharedItemsImports = 5 + src\Dependencies\PooledObjects\Microsoft.CodeAnalysis.PooledObjects.projitems*{fc2ae90b-2e4b-4045-9fdd-73d4f5ed6c89}*SharedItemsImports = 5 src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis.Utilities.projitems*{fcb56cba-fa35-46a8-86b7-bae5433197d9}*SharedItemsImports = 13 src\RoslynAnalyzers\Utilities\Compiler\Analyzer.Utilities.projitems*{fce0046b-03f8-78f6-86a1-8ddcee8f4c9f}*SharedItemsImports = 5 src\Dependencies\Contracts\Microsoft.CodeAnalysis.Contracts.projitems*{fce88bbd-9bbd-4871-b9b0-de176d73a6b0}*SharedItemsImports = 5 diff --git a/src/roslyn/azure-pipelines-integration.yml b/src/roslyn/azure-pipelines-integration.yml index afddf6a20c0..cf70c67c5c5 100644 --- a/src/roslyn/azure-pipelines-integration.yml +++ b/src/roslyn/azure-pipelines-integration.yml @@ -68,7 +68,7 @@ parameters: - name: queueName displayName: Queue Name type: string - default: windows.vs2022preview.scout.amd64.open + default: windows.vs2022preview.amd64.open values: - windows.vs2022.amd64.open - windows.vs2022.scout.amd64.open diff --git a/src/roslyn/eng/test-rebuild.ps1 b/src/roslyn/eng/test-rebuild.ps1 index d98f4b9bb93..d58e2a4f1e2 100644 --- a/src/roslyn/eng/test-rebuild.ps1 +++ b/src/roslyn/eng/test-rebuild.ps1 @@ -73,6 +73,7 @@ try { # The assemblies are not marked with ReferenceAssemblyAttribute attribute. " --exclude net8.0\GeneratedRefAssemblies\Microsoft.CodeAnalysis.dll" + " --exclude net8.0\GeneratedRefAssemblies\Microsoft.CodeAnalysis.CSharp.dll" + + " --exclude net8.0\GeneratedRefAssemblies\Microsoft.CodeAnalysis.VisualBasic.dll" + " --exclude net8.0\GeneratedRefAssemblies\System.Collections.Immutable.dll" + " --debugPath `"$ArtifactsDir/BuildValidator`"" + diff --git a/src/roslyn/src/Analyzers/CSharp/Analyzers/UseCollectionExpression/CSharpUseCollectionExpressionForBuilderDiagnosticAnalyzer.cs b/src/roslyn/src/Analyzers/CSharp/Analyzers/UseCollectionExpression/CSharpUseCollectionExpressionForBuilderDiagnosticAnalyzer.cs index 347115c0d6c..7406d96480a 100644 --- a/src/roslyn/src/Analyzers/CSharp/Analyzers/UseCollectionExpression/CSharpUseCollectionExpressionForBuilderDiagnosticAnalyzer.cs +++ b/src/roslyn/src/Analyzers/CSharp/Analyzers/UseCollectionExpression/CSharpUseCollectionExpressionForBuilderDiagnosticAnalyzer.cs @@ -126,8 +126,7 @@ void FadeOutCode(SyntaxNodeAnalysisContext context, AnalysisResult analysisResul if (createSymbol is not IMethodSymbol { IsStatic: true } createMethod) return null; - var factoryType = semanticModel.GetSymbolInfo(memberAccessExpression.Expression, cancellationToken).Symbol as INamedTypeSymbol; - if (factoryType is null) + if (semanticModel.GetSymbolInfo(memberAccessExpression.Expression, cancellationToken).Symbol is not INamedTypeSymbol factoryType) return null; // has to be the form: diff --git a/src/roslyn/src/Analyzers/CSharp/CodeFixes/Iterator/CSharpChangeToIEnumerableCodeFixProvider.cs b/src/roslyn/src/Analyzers/CSharp/CodeFixes/Iterator/CSharpChangeToIEnumerableCodeFixProvider.cs index 2ce52649e3e..d707a2b05c0 100644 --- a/src/roslyn/src/Analyzers/CSharp/CodeFixes/Iterator/CSharpChangeToIEnumerableCodeFixProvider.cs +++ b/src/roslyn/src/Analyzers/CSharp/CodeFixes/Iterator/CSharpChangeToIEnumerableCodeFixProvider.cs @@ -86,14 +86,12 @@ internal sealed class CSharpChangeToIEnumerableCodeFixProvider() : AbstractItera newDocument = document.WithSyntaxRoot(root.ReplaceNode(node, newOperator)); } - var oldAccessor = node.Parent?.Parent as PropertyDeclarationSyntax; - if (oldAccessor != null) + if (node.Parent?.Parent is PropertyDeclarationSyntax oldAccessor) { newDocument = document.WithSyntaxRoot(root.ReplaceNode(oldAccessor, oldAccessor.WithType(newReturnType))); } - var oldIndexer = node.Parent?.Parent as IndexerDeclarationSyntax; - if (oldIndexer != null) + if (node.Parent?.Parent is IndexerDeclarationSyntax oldIndexer) { newDocument = document.WithSyntaxRoot(root.ReplaceNode(oldIndexer, oldIndexer.WithType(newReturnType))); } diff --git a/src/roslyn/src/Analyzers/CSharp/CodeFixes/RemoveUnnecessaryLambdaExpression/CSharpRemoveUnnecessaryLambdaExpressionCodeFixProvider.cs b/src/roslyn/src/Analyzers/CSharp/CodeFixes/RemoveUnnecessaryLambdaExpression/CSharpRemoveUnnecessaryLambdaExpressionCodeFixProvider.cs index cb003a25207..07b86685805 100644 --- a/src/roslyn/src/Analyzers/CSharp/CodeFixes/RemoveUnnecessaryLambdaExpression/CSharpRemoveUnnecessaryLambdaExpressionCodeFixProvider.cs +++ b/src/roslyn/src/Analyzers/CSharp/CodeFixes/RemoveUnnecessaryLambdaExpression/CSharpRemoveUnnecessaryLambdaExpressionCodeFixProvider.cs @@ -43,8 +43,7 @@ protected override Task FixAllAsync( { foreach (var diagnostic in diagnostics) { - var anonymousFunction = diagnostic.AdditionalLocations[0].FindNode(getInnermostNodeForTie: true, cancellationToken) as AnonymousFunctionExpressionSyntax; - if (anonymousFunction is null) + if (diagnostic.AdditionalLocations[0].FindNode(getInnermostNodeForTie: true, cancellationToken) is not AnonymousFunctionExpressionSyntax anonymousFunction) continue; editor.ReplaceNode(anonymousFunction, diff --git a/src/roslyn/src/Analyzers/Core/Analyzers/UseCollectionInitializer/UpdateExpressionState.cs b/src/roslyn/src/Analyzers/Core/Analyzers/UseCollectionInitializer/UpdateExpressionState.cs index 48a993be1f2..73fd6a7f9a7 100644 --- a/src/roslyn/src/Analyzers/Core/Analyzers/UseCollectionInitializer/UpdateExpressionState.cs +++ b/src/roslyn/src/Analyzers/Core/Analyzers/UseCollectionInitializer/UpdateExpressionState.cs @@ -233,8 +233,7 @@ private bool TryAnalyzeMultiAddInvocation( // values)` If the former, we only allow a single argument. If the latter, we can allow multiple // expressions. The former will be converted to a spread element. The latter will be added // individually. - var method = this.SemanticModel.GetSymbolInfo(memberAccess, cancellationToken).GetAnySymbol() as IMethodSymbol; - if (method is null) + if (this.SemanticModel.GetSymbolInfo(memberAccess, cancellationToken).GetAnySymbol() is not IMethodSymbol method) return false; if (method.Parameters.Length != 1) diff --git a/src/roslyn/src/Analyzers/Core/CodeFixes/PopulateSwitch/AbstractPopulateSwitchCodeFixProvider.cs b/src/roslyn/src/Analyzers/Core/CodeFixes/PopulateSwitch/AbstractPopulateSwitchCodeFixProvider.cs index 5f7d4c204b5..cd6a904563b 100644 --- a/src/roslyn/src/Analyzers/Core/CodeFixes/PopulateSwitch/AbstractPopulateSwitchCodeFixProvider.cs +++ b/src/roslyn/src/Analyzers/Core/CodeFixes/PopulateSwitch/AbstractPopulateSwitchCodeFixProvider.cs @@ -141,8 +141,7 @@ private async Task FixOneDiagnosticAsync( var hasMissingDefaultCase = bool.Parse(diagnostic.Properties[PopulateSwitchStatementHelpers.MissingDefaultCase]!); var switchLocation = diagnostic.AdditionalLocations[0]; - var switchNode = switchLocation.FindNode(getInnermostNodeForTie: true, cancellationToken) as TSwitchSyntax; - if (switchNode == null) + if (switchLocation.FindNode(getInnermostNodeForTie: true, cancellationToken) is not TSwitchSyntax switchNode) return; var model = await document.GetRequiredSemanticModelAsync(cancellationToken).ConfigureAwait(false); diff --git a/src/roslyn/src/Compilers/CSharp/Portable/CSharpResources.resx b/src/roslyn/src/Compilers/CSharp/Portable/CSharpResources.resx index ebb126ee949..61cb849a9e4 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/CSharpResources.resx +++ b/src/roslyn/src/Compilers/CSharp/Portable/CSharpResources.resx @@ -5314,6 +5314,9 @@ To remove the warning, you can use /reference instead (set the Embed Interop Typ Combined length of user strings used by the program exceeds allowed limit. Try to decrease use of string literals or try the EXPERIMENTAL feature flag 'experimental-data-section-string-literals'. + + Combined length of user strings used by the program exceeds allowed limit. Adding a string literal requires restarting the application. + It is not legal to use nullable type '{0}?' in a pattern; use the underlying type '{0}' instead. diff --git a/src/roslyn/src/Compilers/CSharp/Portable/CodeGen/CodeGenerator.cs b/src/roslyn/src/Compilers/CSharp/Portable/CodeGen/CodeGenerator.cs index ce7045499e4..f1bcf5757fc 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/CodeGen/CodeGenerator.cs +++ b/src/roslyn/src/Compilers/CSharp/Portable/CodeGen/CodeGenerator.cs @@ -338,7 +338,7 @@ private void HandleReturn() private void EmitTypeReferenceToken(Cci.ITypeReference symbol, SyntaxNode syntaxNode) { - _builder.EmitToken(symbol, syntaxNode, _diagnostics.DiagnosticBag); + _builder.EmitToken(symbol, syntaxNode); } private void EmitSymbolToken(TypeSymbol symbol, SyntaxNode syntaxNode) @@ -349,18 +349,18 @@ private void EmitSymbolToken(TypeSymbol symbol, SyntaxNode syntaxNode) private void EmitSymbolToken(MethodSymbol method, SyntaxNode syntaxNode, BoundArgListOperator optArgList, bool encodeAsRawDefinitionToken = false) { var methodRef = _module.Translate(method, syntaxNode, _diagnostics.DiagnosticBag, optArgList, needDeclaration: encodeAsRawDefinitionToken); - _builder.EmitToken(methodRef, syntaxNode, _diagnostics.DiagnosticBag, encodeAsRawDefinitionToken ? Cci.MetadataWriter.RawTokenEncoding.RowId : 0); + _builder.EmitToken(methodRef, syntaxNode, encodeAsRawDefinitionToken ? Cci.MetadataWriter.RawTokenEncoding.RowId : 0); } private void EmitSymbolToken(FieldSymbol symbol, SyntaxNode syntaxNode) { var fieldRef = _module.Translate(symbol, syntaxNode, _diagnostics.DiagnosticBag); - _builder.EmitToken(fieldRef, syntaxNode, _diagnostics.DiagnosticBag); + _builder.EmitToken(fieldRef, syntaxNode); } private void EmitSignatureToken(FunctionPointerTypeSymbol symbol, SyntaxNode syntaxNode) { - _builder.EmitToken(_module.Translate(symbol).Signature, syntaxNode, _diagnostics.DiagnosticBag); + _builder.EmitToken(_module.Translate(symbol).Signature, syntaxNode); } private void EmitSequencePointStatement(BoundSequencePoint node) @@ -444,15 +444,15 @@ private void EmitRestorePreviousSequencePoint(BoundRestorePreviousSequencePoint if (_savedSequencePoints is null || !_savedSequencePoints.TryGetValue(node.Identifier, out var span)) return; - EmitStepThroughSequencePoint(node.Syntax.SyntaxTree, span); + EmitStepThroughSequencePoint(node.Syntax, span); } private void EmitStepThroughSequencePoint(BoundStepThroughSequencePoint node) { - EmitStepThroughSequencePoint(node.Syntax.SyntaxTree, node.Span); + EmitStepThroughSequencePoint(node.Syntax, node.Span); } - private void EmitStepThroughSequencePoint(SyntaxTree syntaxTree, TextSpan span) + private void EmitStepThroughSequencePoint(SyntaxNode syntaxNode, TextSpan span) { if (!_emitPdbSequencePoints) return; @@ -460,9 +460,9 @@ private void EmitStepThroughSequencePoint(SyntaxTree syntaxTree, TextSpan span) var label = new object(); // The IL builder is eager to discard unreachable code, so // we fool it by branching on a condition that is always true at runtime. - _builder.EmitConstantValue(ConstantValue.Create(true)); + _builder.EmitConstantValue(ConstantValue.Create(true), syntaxNode); _builder.EmitBranch(ILOpCode.Brtrue, label); - EmitSequencePoint(syntaxTree, span); + EmitSequencePoint(syntaxNode.SyntaxTree, span); _builder.EmitOpCode(ILOpCode.Nop); _builder.MarkLabel(label); EmitHiddenSequencePoint(); diff --git a/src/roslyn/src/Compilers/CSharp/Portable/CodeGen/EmitAddress.cs b/src/roslyn/src/Compilers/CSharp/Portable/CodeGen/EmitAddress.cs index f6358956bf7..c5402c35d4c 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/CodeGen/EmitAddress.cs +++ b/src/roslyn/src/Compilers/CSharp/Portable/CodeGen/EmitAddress.cs @@ -409,7 +409,7 @@ private void EmitArrayElementAddress(BoundArrayAccess arrayAccess, AddressKind a else { _builder.EmitArrayElementAddress(_module.Translate((ArrayTypeSymbol)arrayAccess.Expression.Type), - arrayAccess.Syntax, _diagnostics.DiagnosticBag); + arrayAccess.Syntax); } } diff --git a/src/roslyn/src/Compilers/CSharp/Portable/CodeGen/EmitArrayInitializer.cs b/src/roslyn/src/Compilers/CSharp/Portable/CodeGen/EmitArrayInitializer.cs index e35d326e09b..ef1af66cd67 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/CodeGen/EmitArrayInitializer.cs +++ b/src/roslyn/src/Compilers/CSharp/Portable/CodeGen/EmitArrayInitializer.cs @@ -55,7 +55,7 @@ private void EmitArrayInitializers(ArrayTypeSymbol arrayType, BoundArrayInitiali { ImmutableArray data = this.GetRawData(initExprs); - _builder.EmitArrayBlockInitializer(data, inits.Syntax, _diagnostics.DiagnosticBag); + _builder.EmitArrayBlockInitializer(data, inits.Syntax); if (initializationStyle == ArrayInitializerStyle.Mixed) { @@ -245,10 +245,9 @@ private bool EnableEnumArrayBlockInitialization private ArrayInitializerStyle ShouldEmitBlockInitializer(TypeSymbol elementType, ImmutableArray inits) { - if (_module.IsEncDelta) + if (!_module.FieldRvaSupported) { - // Avoid using FieldRva table. Can be allowed if tested on all supported runtimes. - // Consider removing: https://github.com/dotnet/roslyn/issues/69480 + // Avoid using FieldRva table when not supported by the runtime. return ArrayInitializerStyle.Element; } @@ -449,10 +448,9 @@ private bool TryEmitOptimizedReadonlySpanCreation(NamedTypeSymbol spanType, Boun return true; } - if (_module.IsEncDelta) + if (!_module.FieldRvaSupported) { - // Avoid using FieldRva table. Can be allowed if tested on all supported runtimes. - // Consider removing: https://github.com/dotnet/roslyn/issues/69480 + // Avoid using FieldRva table when not supported by the runtime. return false; } @@ -556,7 +554,7 @@ private bool TryEmitOptimizedReadonlySpanCreation(NamedTypeSymbol spanType, Boun // Map a field to the block (that makes it addressable). var field = _builder.module.GetFieldForData(data, alignment: 1, wrappedExpression.Syntax, _diagnostics.DiagnosticBag); _builder.EmitOpCode(ILOpCode.Ldsflda); - _builder.EmitToken(field, wrappedExpression.Syntax, _diagnostics.DiagnosticBag); + _builder.EmitToken(field, wrappedExpression.Syntax); _builder.EmitIntConstant(lengthForConstructor); @@ -617,7 +615,7 @@ private bool TryEmitOptimizedReadonlySpanCreation(NamedTypeSymbol spanType, Boun // call ReadOnlySpan RuntimeHelpers::CreateSpan(fldHandle) var field = _builder.module.GetFieldForData(data, alignment: (ushort)specialElementType.SizeInBytes(), wrappedExpression.Syntax, _diagnostics.DiagnosticBag); _builder.EmitOpCode(ILOpCode.Ldtoken); - _builder.EmitToken(field, wrappedExpression.Syntax, _diagnostics.DiagnosticBag); + _builder.EmitToken(field, wrappedExpression.Syntax); _builder.EmitOpCode(ILOpCode.Call, stackAdjustment: 0); EmitSymbolToken(createSpan.Construct(elementType), wrappedExpression.Syntax, optArgList: null); return true; @@ -654,7 +652,7 @@ bool tryEmitAsCachedArrayFromBlob(NamedTypeSymbol spanType, BoundExpression wrap // T[]? array = PrivateImplementationDetails.cachingField; // if (array is not null) goto arrayNotNull; _builder.EmitOpCode(ILOpCode.Ldsfld); - _builder.EmitToken(cachingField, wrappedExpression.Syntax, _diagnostics.DiagnosticBag); + _builder.EmitToken(cachingField, wrappedExpression.Syntax); _builder.EmitOpCode(ILOpCode.Dup); _builder.EmitBranch(ILOpCode.Brtrue, arrayNotNullLabel); @@ -665,10 +663,10 @@ bool tryEmitAsCachedArrayFromBlob(NamedTypeSymbol spanType, BoundExpression wrap _builder.EmitIntConstant(elementCount); _builder.EmitOpCode(ILOpCode.Newarr); EmitSymbolToken(arrayType.ElementType, wrappedExpression.Syntax); - _builder.EmitArrayBlockInitializer(data, wrappedExpression.Syntax, _diagnostics.DiagnosticBag); + _builder.EmitArrayBlockInitializer(data, wrappedExpression.Syntax); _builder.EmitOpCode(ILOpCode.Dup); _builder.EmitOpCode(ILOpCode.Stsfld); - _builder.EmitToken(cachingField, wrappedExpression.Syntax, _diagnostics.DiagnosticBag); + _builder.EmitToken(cachingField, wrappedExpression.Syntax); // arrayNotNullLabel: // new ReadOnlySpan(array) @@ -714,7 +712,7 @@ bool tryEmitAsCachedArrayOfConstants(BoundArrayCreation arrayCreation, ArrayType // T[]? array = PrivateImplementationDetails.cachingField; // if (array is not null) goto arrayNotNull; _builder.EmitOpCode(ILOpCode.Ldsfld); - _builder.EmitToken(cachingField, arrayCreation.Syntax, _diagnostics.DiagnosticBag); + _builder.EmitToken(cachingField, arrayCreation.Syntax); _builder.EmitOpCode(ILOpCode.Dup); _builder.EmitBranch(ILOpCode.Brtrue, arrayNotNullLabel); @@ -724,7 +722,7 @@ bool tryEmitAsCachedArrayOfConstants(BoundArrayCreation arrayCreation, ArrayType EmitExpression(arrayCreation, used: true); _builder.EmitOpCode(ILOpCode.Dup); _builder.EmitOpCode(ILOpCode.Stsfld); - _builder.EmitToken(cachingField, arrayCreation.Syntax, _diagnostics.DiagnosticBag); + _builder.EmitToken(cachingField, arrayCreation.Syntax); // arrayNotNullLabel: // new ReadOnlySpan(array) diff --git a/src/roslyn/src/Compilers/CSharp/Portable/CodeGen/EmitExpression.cs b/src/roslyn/src/Compilers/CSharp/Portable/CodeGen/EmitExpression.cs index 0b8cfbc2f54..c1191eba65e 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/CodeGen/EmitExpression.cs +++ b/src/roslyn/src/Compilers/CSharp/Portable/CodeGen/EmitExpression.cs @@ -11,11 +11,11 @@ using System.Runtime.CompilerServices; using Microsoft.CodeAnalysis.CodeGen; using Microsoft.CodeAnalysis.CSharp.Symbols; +using Microsoft.CodeAnalysis.Emit; using Microsoft.CodeAnalysis.PooledObjects; using Roslyn.Utilities; using static System.Linq.ImmutableArrayExtensions; -using static Microsoft.CodeAnalysis.CSharp.Binder; namespace Microsoft.CodeAnalysis.CSharp.CodeGen { @@ -1098,7 +1098,7 @@ private void EmitArrayElementLoad(BoundArrayAccess arrayAccess, bool used) } else { - _builder.EmitArrayElementLoad(_module.Translate((ArrayTypeSymbol)arrayAccess.Expression.Type), arrayAccess.Expression.Syntax, _diagnostics.DiagnosticBag); + _builder.EmitArrayElementLoad(_module.Translate((ArrayTypeSymbol)arrayAccess.Expression.Type), arrayAccess.Expression.Syntax); } EmitPopIfUnused(used); @@ -2382,7 +2382,7 @@ private void EmitArrayCreationExpression(BoundArrayCreation expression, bool use } else { - _builder.EmitArrayCreation(_module.Translate(arrayType), expression.Syntax, _diagnostics.DiagnosticBag); + _builder.EmitArrayCreation(_module.Translate(arrayType), expression.Syntax); } if (expression.InitializerOpt != null) @@ -3200,7 +3200,7 @@ private void EmitArrayElementStore(ArrayTypeSymbol arrayType, SyntaxNode syntaxN } else { - _builder.EmitArrayElementStore(_module.Translate(arrayType), syntaxNode, _diagnostics.DiagnosticBag); + _builder.EmitArrayElementStore(_module.Translate(arrayType), syntaxNode); } } @@ -3438,7 +3438,7 @@ private void EmitDefaultValue(TypeSymbol type, bool used, SyntaxNode syntaxNode) var constantValue = type.GetDefaultValue(); if (constantValue != null) { - _builder.EmitConstantValue(constantValue); + _builder.EmitConstantValue(constantValue, syntaxNode); return; } } @@ -3474,44 +3474,28 @@ private void EmitDefaultExpression(BoundDefaultExpression expression, bool used) private void EmitConstantExpression(TypeSymbol type, ConstantValue constantValue, bool used, SyntaxNode syntaxNode) { - if (used) // unused constant has no side-effects + // unused constant has no side-effects + if (!used) { - // Null type parameter values must be emitted as 'initobj' rather than 'ldnull'. - if (((object)type != null) && (type.TypeKind == TypeKind.TypeParameter) && constantValue.IsNull) - { - EmitInitObj(type, used, syntaxNode); - } - else if (!TryEmitStringLiteralAsUtf8Encoded(constantValue, syntaxNode)) - { - _builder.EmitConstantValue(constantValue); - } + return; } - } - private bool TryEmitStringLiteralAsUtf8Encoded(ConstantValue constantValue, SyntaxNode syntaxNode) - { - // Emit long strings into data section so they don't overflow the UserString heap. - if (constantValue.IsString && - constantValue.StringValue.Length > _module.Compilation.DataSectionStringLiteralThreshold) + // Null type parameter values must be emitted as 'initobj' rather than 'ldnull'. + if (type is { TypeKind: TypeKind.TypeParameter } && constantValue.IsNull) { - if (Binder.GetWellKnownTypeMember(_module.Compilation, WellKnownMember.System_Text_Encoding__get_UTF8, _diagnostics, syntax: syntaxNode) == null | - Binder.GetWellKnownTypeMember(_module.Compilation, WellKnownMember.System_Text_Encoding__GetString, _diagnostics, syntax: syntaxNode) == null) - { - return false; - } - - Cci.IFieldReference field = _module.TryGetOrCreateFieldForStringValue(constantValue.StringValue, syntaxNode, _diagnostics.DiagnosticBag); - if (field == null) + EmitInitObj(type, used, syntaxNode); + } + else + { + // TODO: use-site dependencies are not reported to UsedAssemblyReferences https://github.com/dotnet/roslyn/issues/78172 + if (constantValue.IsString && constantValue.StringValue.Length > _module.Compilation.DataSectionStringLiteralThreshold) { - return false; + _ = Binder.GetWellKnownTypeMember(_module.Compilation, WellKnownMember.System_Text_Encoding__get_UTF8, _diagnostics, syntax: syntaxNode); + _ = Binder.GetWellKnownTypeMember(_module.Compilation, WellKnownMember.System_Text_Encoding__GetString, _diagnostics, syntax: syntaxNode); } - _builder.EmitOpCode(ILOpCode.Ldsfld); - _builder.EmitToken(field, syntaxNode, _diagnostics.DiagnosticBag); - return true; + _builder.EmitConstantValue(constantValue, syntaxNode); } - - return false; } private void EmitInitObj(TypeSymbol type, bool used, SyntaxNode syntaxNode) @@ -3602,7 +3586,7 @@ private void EmitHoistedVariableId(FieldSymbol field, SyntaxNode syntax) var fieldRef = _module.Translate(field, syntax, _diagnostics.DiagnosticBag, needDeclaration: true); _builder.EmitOpCode(ILOpCode.Ldtoken); - _builder.EmitToken(fieldRef, syntax, _diagnostics.DiagnosticBag, Cci.MetadataWriter.RawTokenEncoding.LiftedVariableId); + _builder.EmitToken(fieldRef, syntax, Cci.MetadataWriter.RawTokenEncoding.LiftedVariableId); } private void EmitMaximumMethodDefIndexExpression(BoundMaximumMethodDefIndex node) @@ -3628,8 +3612,7 @@ private void EmitModuleVersionIdToken(BoundModuleVersionId node) { _builder.EmitToken( _module.GetModuleVersionId(_module.Translate(node.Type, node.Syntax, _diagnostics.DiagnosticBag), node.Syntax, _diagnostics.DiagnosticBag), - node.Syntax, - _diagnostics.DiagnosticBag); + node.Syntax); } private void EmitThrowIfModuleCancellationRequested(SyntaxNode syntax) @@ -3639,8 +3622,7 @@ private void EmitThrowIfModuleCancellationRequested(SyntaxNode syntax) _builder.EmitOpCode(ILOpCode.Ldsflda); _builder.EmitToken( _module.GetModuleCancellationToken(_module.Translate(cancellationTokenType, syntax, _diagnostics.DiagnosticBag), syntax, _diagnostics.DiagnosticBag), - syntax, - _diagnostics.DiagnosticBag); + syntax); var throwMethod = (MethodSymbol)_module.Compilation.GetWellKnownTypeMember(WellKnownMember.System_Threading_CancellationToken__ThrowIfCancellationRequested); @@ -3650,8 +3632,7 @@ private void EmitThrowIfModuleCancellationRequested(SyntaxNode syntax) _builder.EmitOpCode(ILOpCode.Call, -1); _builder.EmitToken( _module.Translate(throwMethod, syntax, _diagnostics.DiagnosticBag), - syntax, - _diagnostics.DiagnosticBag); + syntax); } private void EmitModuleCancellationTokenLoad(SyntaxNode syntax) @@ -3661,8 +3642,7 @@ private void EmitModuleCancellationTokenLoad(SyntaxNode syntax) _builder.EmitOpCode(ILOpCode.Ldsfld); _builder.EmitToken( _module.GetModuleCancellationToken(_module.Translate(cancellationTokenType, syntax, _diagnostics.DiagnosticBag), syntax, _diagnostics.DiagnosticBag), - syntax, - _diagnostics.DiagnosticBag); + syntax); } private void EmitModuleVersionIdStringLoad() @@ -3685,7 +3665,7 @@ private void EmitInstrumentationPayloadRootStore(BoundInstrumentationPayloadRoot private void EmitInstrumentationPayloadRootToken(BoundInstrumentationPayloadRoot node) { - _builder.EmitToken(_module.GetInstrumentationPayloadRoot(node.AnalysisKind, _module.Translate(node.Type, node.Syntax, _diagnostics.DiagnosticBag), node.Syntax, _diagnostics.DiagnosticBag), node.Syntax, _diagnostics.DiagnosticBag); + _builder.EmitToken(_module.GetInstrumentationPayloadRoot(node.AnalysisKind, _module.Translate(node.Type, node.Syntax, _diagnostics.DiagnosticBag), node.Syntax, _diagnostics.DiagnosticBag), node.Syntax); } private void EmitSourceDocumentIndex(BoundSourceDocumentIndex node) diff --git a/src/roslyn/src/Compilers/CSharp/Portable/CodeGen/EmitOperators.cs b/src/roslyn/src/Compilers/CSharp/Portable/CodeGen/EmitOperators.cs index 8e90de620d9..87420dd5795 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/CodeGen/EmitOperators.cs +++ b/src/roslyn/src/Compilers/CSharp/Portable/CodeGen/EmitOperators.cs @@ -461,7 +461,7 @@ private void EmitIsNotNullOrZero(BoundExpression comparand, ConstantValue nullOr EmitBox(comparandType, comparand.Syntax); } - _builder.EmitConstantValue(nullOrZero); + _builder.EmitConstantValue(nullOrZero, comparand.Syntax); _builder.EmitOpCode(ILOpCode.Cgt_un); } @@ -475,7 +475,7 @@ private void EmitIsNullOrZero(BoundExpression comparand, ConstantValue nullOrZer EmitBox(comparandType, comparand.Syntax); } - _builder.EmitConstantValue(nullOrZero); + _builder.EmitConstantValue(nullOrZero, comparand.Syntax); _builder.EmitOpCode(ILOpCode.Ceq); } diff --git a/src/roslyn/src/Compilers/CSharp/Portable/CodeGen/EmitStackAllocInitializer.cs b/src/roslyn/src/Compilers/CSharp/Portable/CodeGen/EmitStackAllocInitializer.cs index d6eadf22b4e..b057dfa35f6 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/CodeGen/EmitStackAllocInitializer.cs +++ b/src/roslyn/src/Compilers/CSharp/Portable/CodeGen/EmitStackAllocInitializer.cs @@ -59,7 +59,7 @@ private void EmitStackAlloc(TypeSymbol type, BoundArrayInitialization? inits, Bo var field = _builder.module.GetFieldForData(data, alignment: 1, inits.Syntax, _diagnostics.DiagnosticBag); _builder.EmitOpCode(ILOpCode.Dup); _builder.EmitOpCode(ILOpCode.Ldsflda); - _builder.EmitToken(field, inits.Syntax, _diagnostics.DiagnosticBag); + _builder.EmitToken(field, inits.Syntax); _builder.EmitIntConstant(data.Length); _builder.EmitUnaligned(alignment: 1); _builder.EmitOpCode(ILOpCode.Cpblk, -3); @@ -81,10 +81,10 @@ private void EmitStackAlloc(TypeSymbol type, BoundArrayInitialization? inits, Bo // call ReadOnlySpan RuntimeHelpers::CreateSpan(fldHandle) var field = _builder.module.GetFieldForData(data, alignment: (ushort)sizeInBytes, syntaxNode, _diagnostics.DiagnosticBag); _builder.EmitOpCode(ILOpCode.Ldtoken); - _builder.EmitToken(field, syntaxNode, _diagnostics.DiagnosticBag); + _builder.EmitToken(field, syntaxNode); _builder.EmitOpCode(ILOpCode.Call, 0); var createSpanHelperReference = createSpanHelper.Construct(elementType).GetCciAdapter(); - _builder.EmitToken(createSpanHelperReference, syntaxNode, _diagnostics.DiagnosticBag); + _builder.EmitToken(createSpanHelperReference, syntaxNode); var temp = AllocateTemp(readOnlySpan, syntaxNode); _builder.EmitLocalStore(temp); @@ -128,10 +128,9 @@ void emitLocalloc() private ArrayInitializerStyle ShouldEmitBlockInitializerForStackAlloc(TypeSymbol elementType, ImmutableArray inits) { - if (_module.IsEncDelta) + if (!_module.FieldRvaSupported) { - // Avoid using FieldRva table. Can be allowed if tested on all supported runtimes. - // Consider removing: https://github.com/dotnet/roslyn/issues/69480 + // Avoid using FieldRva table when not supported by the runtime. return ArrayInitializerStyle.Element; } diff --git a/src/roslyn/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs b/src/roslyn/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs index 107a8f02f24..d2e30eb4e64 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs +++ b/src/roslyn/src/Compilers/CSharp/Portable/CodeGen/EmitStatement.cs @@ -1096,7 +1096,7 @@ private void EmitCatchBlock(BoundCatchBlock catchBlock) var exceptionType = _module.Translate(catchBlock.ExceptionTypeOpt, catchBlock.Syntax, _diagnostics.DiagnosticBag); _builder.EmitOpCode(ILOpCode.Isinst); - _builder.EmitToken(exceptionType, catchBlock.Syntax, _diagnostics.DiagnosticBag); + _builder.EmitToken(exceptionType, catchBlock.Syntax); _builder.EmitOpCode(ILOpCode.Dup); _builder.EmitBranch(ILOpCode.Brtrue, typeCheckPassedLabel); _builder.EmitOpCode(ILOpCode.Pop); @@ -1321,7 +1321,7 @@ private void EmitSwitchHeader( } else { - _builder.EmitIntegerSwitchJumpTable(switchCaseLabels, fallThroughLabel, key, expression.Type.EnumUnderlyingTypeOrSelf().PrimitiveTypeCode); + _builder.EmitIntegerSwitchJumpTable(switchCaseLabels, fallThroughLabel, key, expression.Type.EnumUnderlyingTypeOrSelf().PrimitiveTypeCode, expression.Syntax); } if (temp != null) @@ -1408,7 +1408,10 @@ void emitLengthDispatch(LengthBasedStringSwitchData lengthBasedSwitchInfo, Local // lengthConstant -> corresponding label _builder.EmitIntegerSwitchJumpTable( lengthBasedSwitchInfo.LengthBasedJumpTable.LengthCaseLabels.Select(p => new KeyValuePair(ConstantValue.Create(p.value), p.label)).ToArray(), - fallThroughLabel, stringLength, int32Type.PrimitiveTypeCode); + fallThroughLabel, + stringLength, + int32Type.PrimitiveTypeCode, + syntaxNode); FreeTemp(stringLength); } @@ -1445,7 +1448,10 @@ void emitCharDispatches(LengthBasedStringSwitchData lengthBasedSwitchInfo, Local // charConstant -> corresponding label _builder.EmitIntegerSwitchJumpTable( charJumpTable.CharCaseLabels.Select(p => new KeyValuePair(ConstantValue.Create(p.value), p.label)).ToArray(), - fallThroughLabel, charTemp, charType.PrimitiveTypeCode); + fallThroughLabel, + charTemp, + charType.PrimitiveTypeCode, + syntaxNode); } FreeTemp(charTemp); @@ -1469,7 +1475,7 @@ void emitFinalDispatches(LengthBasedStringSwitchData lengthBasedSwitchInfo, Loca void emitMethodRef(Microsoft.Cci.IMethodReference lengthMethodRef) { var diag = DiagnosticBag.GetInstance(); - _builder.EmitToken(lengthMethodRef, syntaxNode: null, diag); + _builder.EmitToken(lengthMethodRef, syntaxNode: null); Debug.Assert(diag.IsEmptyWithoutResolution); diag.Free(); } @@ -1513,7 +1519,7 @@ private void EmitStringSwitchJumpTable( _builder.EmitLoad(key); _builder.EmitOpCode(ILOpCode.Call, stackAdjustment: 0); - _builder.EmitToken(stringHashMethodRef, syntaxNode, _diagnostics.DiagnosticBag); + _builder.EmitToken(stringHashMethodRef, syntaxNode); var UInt32Type = Binder.GetSpecialType(_module.Compilation, SpecialType.System_UInt32, syntaxNode, _diagnostics); keyHash = AllocateTemp(UInt32Type, syntaxNode); @@ -1586,7 +1592,7 @@ private void EmitStringSwitchJumpTable( // Stack: key --> length _builder.EmitOpCode(ILOpCode.Call, 0); var diag = DiagnosticBag.GetInstance(); - _builder.EmitToken(lengthMethodRef, null, diag); + _builder.EmitToken(lengthMethodRef, null); Debug.Assert(diag.IsEmptyWithoutResolution); diag.Free(); @@ -1607,6 +1613,7 @@ private void EmitStringSwitchJumpTable( }; _builder.EmitStringSwitchJumpTable( + syntaxNode, caseLabels: switchCaseLabels, fallThroughLabel: fallThroughLabel, key: key, @@ -1702,9 +1709,9 @@ private void EmitStringCompareAndBranch(LocalOrParameter key, SyntaxNode syntaxN // stackAdjustment = (pushCount - popCount) = -1 _builder.EmitLoad(key); - _builder.EmitConstantValue(stringConstant); + _builder.EmitConstantValue(stringConstant, syntaxNode); _builder.EmitOpCode(ILOpCode.Call, stackAdjustment: -1); - _builder.EmitToken(stringEqualityMethodRef, syntaxNode, _diagnostics.DiagnosticBag); + _builder.EmitToken(stringEqualityMethodRef, syntaxNode); // Branch to targetLabel if String.Equals returned true. _builder.EmitBranch(ILOpCode.Brtrue, targetLabel, ILOpCode.Brfalse); @@ -1729,11 +1736,11 @@ private void EmitCharCompareAndBranch(LocalOrParameter key, SyntaxNode syntaxNod Debug.Assert(asSpanRef != null); _builder.EmitLoad(key); - _builder.EmitConstantValue(stringConstant); + _builder.EmitConstantValue(stringConstant, syntaxNode); _builder.EmitOpCode(ILOpCode.Call, stackAdjustment: 0); - _builder.EmitToken(asSpanRef, syntaxNode, _diagnostics.DiagnosticBag); + _builder.EmitToken(asSpanRef, syntaxNode); _builder.EmitOpCode(ILOpCode.Call, stackAdjustment: -1); - _builder.EmitToken(sequenceEqualsRef, syntaxNode, _diagnostics.DiagnosticBag); + _builder.EmitToken(sequenceEqualsRef, syntaxNode); // Branch to targetLabel if SequenceEquals returned true. _builder.EmitBranch(ILOpCode.Brtrue, targetLabel, ILOpCode.Brfalse); diff --git a/src/roslyn/src/Compilers/CSharp/Portable/Compilation/CSharpCompilation.cs b/src/roslyn/src/Compilers/CSharp/Portable/Compilation/CSharpCompilation.cs index e23c3b07ded..8e04aaa7840 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/Compilation/CSharpCompilation.cs +++ b/src/roslyn/src/Compilers/CSharp/Portable/Compilation/CSharpCompilation.cs @@ -3683,7 +3683,7 @@ private void GenerateModuleInitializer(PEModuleBuilder moduleBeingBuilt, Diagnos if (_moduleInitializerMethods is object) { - var ilBuilder = new ILBuilder(moduleBeingBuilt, new LocalSlotManager(slotAllocator: null), OptimizationLevel.Release, areLocalsZeroed: false); + var ilBuilder = new ILBuilder(moduleBeingBuilt, new LocalSlotManager(slotAllocator: null), methodBodyDiagnosticBag, OptimizationLevel.Release, areLocalsZeroed: false); foreach (MethodSymbol method in _moduleInitializerMethods.OrderBy(LexicalOrderSymbolComparer.Instance)) { @@ -3691,8 +3691,7 @@ private void GenerateModuleInitializer(PEModuleBuilder moduleBeingBuilt, Diagnos ilBuilder.EmitToken( moduleBeingBuilt.Translate(method, methodBodyDiagnosticBag, needDeclaration: true), - CSharpSyntaxTree.Dummy.GetRoot(), - methodBodyDiagnosticBag); + CSharpSyntaxTree.Dummy.GetRoot()); } ilBuilder.EmitRet(isVoid: true); @@ -3778,6 +3777,7 @@ internal override EmitDifferenceResult EmitDifference( Stream metadataStream, Stream ilStream, Stream pdbStream, + EmitDifferenceOptions options, CompilationTestData? testData, CancellationToken cancellationToken) { @@ -3789,6 +3789,7 @@ internal override EmitDifferenceResult EmitDifference( metadataStream, ilStream, pdbStream, + options, testData, cancellationToken); } diff --git a/src/roslyn/src/Compilers/CSharp/Portable/Compiler/MethodCompiler.cs b/src/roslyn/src/Compilers/CSharp/Portable/Compiler/MethodCompiler.cs index 1c996f88d13..c4ebcd04da6 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/Compiler/MethodCompiler.cs +++ b/src/roslyn/src/Compilers/CSharp/Portable/Compiler/MethodCompiler.cs @@ -27,17 +27,18 @@ namespace Microsoft.CodeAnalysis.CSharp { internal sealed class MethodCompiler : CSharpSymbolVisitor { +#nullable enable private readonly CSharpCompilation _compilation; private readonly bool _emittingPdb; private readonly CancellationToken _cancellationToken; private readonly BindingDiagnosticBag _diagnostics; private readonly bool _hasDeclarationErrors; private readonly bool _emitMethodBodies; - private readonly PEModuleBuilder _moduleBeingBuiltOpt; // Null if compiling for diagnostics - private readonly Predicate _filterOpt; // If not null, limit analysis to specific symbols - private readonly SynthesizedEntryPointSymbol.AsyncForwardEntryPoint _entryPointOpt; + private readonly PEModuleBuilder? _moduleBeingBuiltOpt; // Null if compiling for diagnostics + private readonly Predicate? _filterOpt; // If not null, limit analysis to specific symbols + private readonly SynthesizedEntryPointSymbol.AsyncForwardEntryPoint? _entryPointOpt; - private DebugDocumentProvider _lazyDebugDocumentProvider; + private DebugDocumentProvider? _lazyDebugDocumentProvider; // // MethodCompiler employs concurrency by following flattened fork/join pattern. @@ -54,7 +55,7 @@ internal sealed class MethodCompiler : CSharpSymbolVisitor _compilerTasks; + private ConcurrentStack? _compilerTasks; // This field tracks whether any bound method body had hasErrors set or whether any constant field had a bad value. // We track it so that we can abort emission in the event that an error occurs without a corresponding diagnostic @@ -83,8 +84,8 @@ private void SetGlobalErrorIfTrue(bool arg) } // Internal for testing only. - internal MethodCompiler(CSharpCompilation compilation, PEModuleBuilder moduleBeingBuiltOpt, bool emittingPdb, bool hasDeclarationErrors, bool emitMethodBodies, - BindingDiagnosticBag diagnostics, Predicate filterOpt, SynthesizedEntryPointSymbol.AsyncForwardEntryPoint entryPointOpt, CancellationToken cancellationToken) + internal MethodCompiler(CSharpCompilation compilation, PEModuleBuilder? moduleBeingBuiltOpt, bool emittingPdb, bool hasDeclarationErrors, bool emitMethodBodies, + BindingDiagnosticBag diagnostics, Predicate? filterOpt, SynthesizedEntryPointSymbol.AsyncForwardEntryPoint? entryPointOpt, CancellationToken cancellationToken) { Debug.Assert(compilation != null); Debug.Assert(diagnostics != null); @@ -107,12 +108,12 @@ internal MethodCompiler(CSharpCompilation compilation, PEModuleBuilder moduleBei public static void CompileMethodBodies( CSharpCompilation compilation, - PEModuleBuilder moduleBeingBuiltOpt, + PEModuleBuilder? moduleBeingBuiltOpt, bool emittingPdb, bool hasDeclarationErrors, bool emitMethodBodies, BindingDiagnosticBag diagnostics, - Predicate filterOpt, + Predicate? filterOpt, CancellationToken cancellationToken) { Debug.Assert(compilation != null); @@ -132,7 +133,7 @@ public static void CompileMethodBodies( // TODO: revise to use a loop instead of a recursion } - MethodSymbol entryPoint = null; + MethodSymbol? entryPoint = null; if (filterOpt is null) { entryPoint = GetEntryPoint(compilation, moduleBeingBuiltOpt, hasDeclarationErrors, emitMethodBodies, diagnostics, cancellationToken); @@ -182,6 +183,11 @@ public static void CompileMethodBodies( methodCompiler.WaitForWorkers(); + // Deleted definitions must be emitted before PrivateImplementationDetails are frozen since + // it may add new members to it. All changes to PrivateImplementationDetails are additions, + // so we don't need to create deleted method defs for those. + moduleBeingBuiltOpt.CreateDeletedMethodDefinitions(diagnostics.DiagnosticBag); + // all threads that were adding methods must be finished now, we can freeze the class: var privateImplClass = moduleBeingBuiltOpt.FreezePrivateImplementationDetails(); if (privateImplClass != null) @@ -197,7 +203,7 @@ public static void CompileMethodBodies( if (moduleBeingBuiltOpt != null && (methodCompiler._globalHasErrors || moduleBeingBuiltOpt.SourceModule.HasBadAttributes) && !diagnostics.HasAnyErrors() && !hasDeclarationErrors) { var messageResourceName = methodCompiler._globalHasErrors ? nameof(CodeAnalysisResources.UnableToDetermineSpecificCauseOfFailure) : nameof(CodeAnalysisResources.ModuleHasInvalidAttributes); - diagnostics.Add(ErrorCode.ERR_ModuleEmitFailure, NoLocation.Singleton, ((Cci.INamedEntity)moduleBeingBuiltOpt).Name, + diagnostics.Add(ErrorCode.ERR_ModuleEmitFailure, NoLocation.Singleton, ((Cci.INamedEntity)moduleBeingBuiltOpt).Name!, new LocalizableResourceString(messageResourceName, CodeAnalysisResources.ResourceManager, typeof(CodeAnalysisResources))); } @@ -214,7 +220,7 @@ public static void CompileMethodBodies( } } } - +#nullable disable // Returns the MethodSymbol for the assembly entrypoint. If the user has a Task returning main, // this function returns the synthesized Main MethodSymbol. internal static MethodSymbol GetEntryPoint(CSharpCompilation compilation, PEModuleBuilder moduleBeingBuilt, bool hasDeclarationErrors, bool emitMethodBodies, BindingDiagnosticBag diagnostics, CancellationToken cancellationToken) @@ -1385,6 +1391,7 @@ forSemanticModel.Syntax is { } semanticModelSyntax && } } +#nullable enable private void EmitSkeletonMethodInExtension(MethodSymbol methodSymbol) { if (!_emitMethodBodies) @@ -1392,7 +1399,10 @@ private void EmitSkeletonMethodInExtension(MethodSymbol methodSymbol) return; } - ILBuilder builder = new ILBuilder(_moduleBeingBuiltOpt, new LocalSlotManager(slotAllocator: null), OptimizationLevel.Release, areLocalsZeroed: false); + Debug.Assert(_diagnostics.DiagnosticBag != null); + Debug.Assert(_moduleBeingBuiltOpt != null); + + ILBuilder builder = new ILBuilder(_moduleBeingBuiltOpt, new LocalSlotManager(slotAllocator: null), _diagnostics.DiagnosticBag, OptimizationLevel.Release, areLocalsZeroed: false); // Emit methods in extensions as skeletons: // => throw null; @@ -1423,16 +1433,15 @@ private void EmitSkeletonMethodInExtension(MethodSymbol methodSymbol) orderedLambdaRuntimeRudeEdits: ImmutableArray.Empty, closureDebugInfo: ImmutableArray.Empty, stateMachineTypeNameOpt: null, - stateMachineHoistedLocalScopes: default(ImmutableArray), - stateMachineHoistedLocalSlots: default(ImmutableArray), - stateMachineAwaiterSlots: default(ImmutableArray), + stateMachineHoistedLocalScopes: default, + stateMachineHoistedLocalSlots: default, + stateMachineAwaiterSlots: default, StateMachineStatesDebugInfo.Create(variableSlotAllocator: null, ImmutableArray.Empty), stateMachineMoveNextDebugInfoOpt: null, codeCoverageSpans: ImmutableArray.Empty, - isPrimaryConstructor: false) - ); + isPrimaryConstructor: false)); } - +#nullable disable private static MethodSymbol GetSymbolForEmittedBody(MethodSymbol methodSymbol) { return methodSymbol.PartialDefinitionPart ?? methodSymbol; @@ -1604,9 +1613,11 @@ private static MethodBody GenerateMethodBody( var localSlotManager = new LocalSlotManager(variableSlotAllocatorOpt); var optimizations = compilation.Options.OptimizationLevel; - ILBuilder builder = new ILBuilder(moduleBuilder, localSlotManager, optimizations, method.AreLocalsZeroed); - bool hasStackalloc; var diagnosticsForThisMethod = BindingDiagnosticBag.GetInstance(withDiagnostics: true, diagnostics.AccumulatesDependencies); + Debug.Assert(diagnosticsForThisMethod.DiagnosticBag != null); + + ILBuilder builder = new ILBuilder(moduleBuilder, localSlotManager, diagnosticsForThisMethod.DiagnosticBag, optimizations, method.AreLocalsZeroed); + bool hasStackalloc; try { StateMachineMoveNextBodyDebugInfo moveNextBodyDebugInfoOpt = null; diff --git a/src/roslyn/src/Compilers/CSharp/Portable/Emitter/EditAndContinue/CSharpSymbolMatcher.cs b/src/roslyn/src/Compilers/CSharp/Portable/Emitter/EditAndContinue/CSharpSymbolMatcher.cs index 7e7f5a4f29a..c09438b4b51 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/Emitter/EditAndContinue/CSharpSymbolMatcher.cs +++ b/src/roslyn/src/Compilers/CSharp/Portable/Emitter/EditAndContinue/CSharpSymbolMatcher.cs @@ -57,9 +57,17 @@ public CSharpSymbolMatcher( // For simplicity, PID helpers and no-PIA embedded definitions are not reused across generations, so we don't map them here. // Instead, new ones are regenerated as needed. - Debug.Assert(definition is PrivateImplementationDetails or Cci.IEmbeddedDefinition); + + Debug.Assert( + definition is Cci.IEmbeddedDefinition || + isPrivateImplementationDetail(definition), + $"Unexpected definition of type: {definition.GetType()}"); return null; + + static bool isPrivateImplementationDetail(Cci.IDefinition definition) + => definition is PrivateImplementationDetails || + definition is Cci.ITypeDefinitionMember { ContainingTypeDefinition: var container } && isPrivateImplementationDetail(container); } public override Cci.INamespace? MapNamespace(Cci.INamespace @namespace) diff --git a/src/roslyn/src/Compilers/CSharp/Portable/Emitter/EditAndContinue/EmitHelpers.cs b/src/roslyn/src/Compilers/CSharp/Portable/Emitter/EditAndContinue/EmitHelpers.cs index 020e6018574..03e2185b727 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/Emitter/EditAndContinue/EmitHelpers.cs +++ b/src/roslyn/src/Compilers/CSharp/Portable/Emitter/EditAndContinue/EmitHelpers.cs @@ -28,6 +28,7 @@ internal static EmitDifferenceResult EmitDifference( Stream metadataStream, Stream ilStream, Stream pdbStream, + EmitDifferenceOptions options, CompilationTestData? testData, CancellationToken cancellationToken) { @@ -94,6 +95,7 @@ internal static EmitDifferenceResult EmitDifference( compilation.SourceAssembly, changes, emitOptions: emitOptions, + options: options, outputKind: compilation.Options.OutputKind, serializationProperties: serializationProperties, manifestResources: manifestResources, @@ -130,7 +132,6 @@ internal static EmitDifferenceResult EmitDifference( newBaseline = compilation.SerializeToDeltaStreams( moduleBeingBuilt, definitionMap, - changes, metadataStream, ilStream, pdbStream, diff --git a/src/roslyn/src/Compilers/CSharp/Portable/Emitter/EditAndContinue/PEDeltaAssemblyBuilder.cs b/src/roslyn/src/Compilers/CSharp/Portable/Emitter/EditAndContinue/PEDeltaAssemblyBuilder.cs index c565c056a50..08e1d677504 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/Emitter/EditAndContinue/PEDeltaAssemblyBuilder.cs +++ b/src/roslyn/src/Compilers/CSharp/Portable/Emitter/EditAndContinue/PEDeltaAssemblyBuilder.cs @@ -25,6 +25,7 @@ internal sealed class PEDeltaAssemblyBuilder : PEAssemblyBuilderBase, IPEDeltaAs private readonly SymbolChanges _changes; private readonly CSharpSymbolMatcher.DeepTranslator _deepTranslator; private readonly MethodSymbol? _predefinedHotReloadExceptionConstructor; + private readonly EmitDifferenceOptions _options; /// /// HotReloadException type. May be created even if not used. We might find out @@ -47,6 +48,7 @@ public PEDeltaAssemblyBuilder( SourceAssemblySymbol sourceAssembly, CSharpSymbolChanges changes, EmitOptions emitOptions, + EmitDifferenceOptions options, OutputKind outputKind, Cci.ModulePropertiesForSerialization serializationProperties, IEnumerable manifestResources, @@ -54,6 +56,7 @@ public PEDeltaAssemblyBuilder( : base(sourceAssembly, emitOptions, outputKind, serializationProperties, manifestResources, additionalTypes: []) { _changes = changes; + _options = options; // Workaround for https://github.com/dotnet/roslyn/issues/3192. // When compiling state machine we stash types of awaiters and state-machine hoisted variables, @@ -74,6 +77,7 @@ public PEDeltaAssemblyBuilder( public override SymbolChanges? EncSymbolChanges => _changes; public override EmitBaseline PreviousGeneration => _changes.DefinitionMap.Baseline; + public override bool FieldRvaSupported => _options.EmitFieldRva; internal override Cci.ITypeReference EncTranslateLocalVariableType(TypeSymbol type, DiagnosticBag diagnostics) { @@ -234,7 +238,7 @@ public SynthesizedTypeMaps GetSynthesizedTypes() } public override IEnumerable GetTopLevelTypeDefinitions(EmitContext context) - => GetTopLevelTypeDefinitionsCore(context); + => GetTopLevelTypeDefinitionsExcludingNoPiaAndRootModule(context, includePrivateImplementationDetails: true); public override IEnumerable GetTopLevelSourceTypeDefinitions(EmitContext context) { diff --git a/src/roslyn/src/Compilers/CSharp/Portable/Emitter/Model/PEAssemblyBuilder.cs b/src/roslyn/src/Compilers/CSharp/Portable/Emitter/Model/PEAssemblyBuilder.cs index 5244d968826..8f884e92d2e 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/Emitter/Model/PEAssemblyBuilder.cs +++ b/src/roslyn/src/Compilers/CSharp/Portable/Emitter/Model/PEAssemblyBuilder.cs @@ -65,7 +65,7 @@ internal abstract class PEAssemblyBuilderBase : PEModuleBuilder, Cci.IAssemblyRe /// private readonly string _metadataName; #nullable enable - public PEAssemblyBuilderBase( + protected PEAssemblyBuilderBase( SourceAssemblySymbol sourceAssembly, EmitOptions emitOptions, OutputKind outputKind, @@ -654,6 +654,7 @@ internal sealed class PEAssemblyBuilder( { public override EmitBaseline? PreviousGeneration => null; public override SymbolChanges? EncSymbolChanges => null; + public override bool FieldRvaSupported => true; public override INamedTypeSymbolInternal? TryGetOrCreateSynthesizedHotReloadExceptionType() => null; diff --git a/src/roslyn/src/Compilers/CSharp/Portable/Emitter/Model/PEModuleBuilder.cs b/src/roslyn/src/Compilers/CSharp/Portable/Emitter/Model/PEModuleBuilder.cs index 19cb20430e9..38f5669225f 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/Emitter/Model/PEModuleBuilder.cs +++ b/src/roslyn/src/Compilers/CSharp/Portable/Emitter/Model/PEModuleBuilder.cs @@ -73,7 +73,7 @@ private void SetNeedsGeneratedAttributes(EmbeddableAttributes attributes) ThreadSafeFlagOperations.Set(ref _needsGeneratedAttributes, (int)attributes); } - internal PEModuleBuilder( + protected PEModuleBuilder( SourceModuleSymbol sourceModule, EmitOptions emitOptions, OutputKind outputKind, diff --git a/src/roslyn/src/Compilers/CSharp/Portable/Emitter/Model/PENetModuleBuilder.cs b/src/roslyn/src/Compilers/CSharp/Portable/Emitter/Model/PENetModuleBuilder.cs index 44acf7e6ee2..576881232a3 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/Emitter/Model/PENetModuleBuilder.cs +++ b/src/roslyn/src/Compilers/CSharp/Portable/Emitter/Model/PENetModuleBuilder.cs @@ -38,6 +38,7 @@ protected override void AddEmbeddedResourcesFromAddedModules(ArrayBuilder null; public override SymbolChanges? EncSymbolChanges => null; + public override bool FieldRvaSupported => true; public override INamedTypeSymbolInternal? TryGetOrCreateSynthesizedHotReloadExceptionType() => null; diff --git a/src/roslyn/src/Compilers/CSharp/Portable/Errors/ErrorCode.cs b/src/roslyn/src/Compilers/CSharp/Portable/Errors/ErrorCode.cs index 25ba50f1a42..7211e43d60c 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/Errors/ErrorCode.cs +++ b/src/roslyn/src/Compilers/CSharp/Portable/Errors/ErrorCode.cs @@ -2408,6 +2408,8 @@ internal enum ErrorCode ERR_PPShebangInProjectBasedProgram = 9314, + ERR_TooManyUserStrings_RestartRequired = 9315, + // Note: you will need to do the following after adding errors: // 1) Update ErrorFacts.IsBuildOnlyDiagnostic (src/Compilers/CSharp/Portable/Errors/ErrorFacts.cs) // 2) Add message to CSharpResources.resx diff --git a/src/roslyn/src/Compilers/CSharp/Portable/Errors/ErrorFacts.cs b/src/roslyn/src/Compilers/CSharp/Portable/Errors/ErrorFacts.cs index 8a8498acc00..278cbd4318a 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/Errors/ErrorFacts.cs +++ b/src/roslyn/src/Compilers/CSharp/Portable/Errors/ErrorFacts.cs @@ -1726,6 +1726,7 @@ or ErrorCode.ERR_BadAwaitInStaticVariableInitializer or ErrorCode.ERR_InvalidPathMap or ErrorCode.ERR_PublicSignButNoKey or ErrorCode.ERR_TooManyUserStrings + or ErrorCode.ERR_TooManyUserStrings_RestartRequired or ErrorCode.ERR_PeWritingFailure or ErrorCode.WRN_AttributeIgnoredWhenPublicSigning or ErrorCode.ERR_OptionMustBeAbsolutePath diff --git a/src/roslyn/src/Compilers/CSharp/Portable/Errors/MessageProvider.cs b/src/roslyn/src/Compilers/CSharp/Portable/Errors/MessageProvider.cs index ba05a944c54..059ec8b9672 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/Errors/MessageProvider.cs +++ b/src/roslyn/src/Compilers/CSharp/Portable/Errors/MessageProvider.cs @@ -245,6 +245,7 @@ public override void ReportDuplicateMetadataReferenceWeak(DiagnosticBag diagnost public override int ERR_MetadataNameTooLong => (int)ErrorCode.ERR_MetadataNameTooLong; public override int ERR_EncReferenceToAddedMember => (int)ErrorCode.ERR_EncReferenceToAddedMember; public override int ERR_TooManyUserStrings => (int)ErrorCode.ERR_TooManyUserStrings; + public override int ERR_TooManyUserStrings_RestartRequired => (int)ErrorCode.ERR_TooManyUserStrings_RestartRequired; public override int ERR_PeWritingFailure => (int)ErrorCode.ERR_PeWritingFailure; public override int ERR_ModuleEmitFailure => (int)ErrorCode.ERR_ModuleEmitFailure; public override int ERR_EncUpdateFailedMissingSymbol => (int)ErrorCode.ERR_EncUpdateFailedMissingSymbol; diff --git a/src/roslyn/src/Compilers/CSharp/Portable/Symbols/Source/SourceNamedTypeSymbol_Extension.cs b/src/roslyn/src/Compilers/CSharp/Portable/Symbols/Source/SourceNamedTypeSymbol_Extension.cs index 241e3a99b75..c99a475b07b 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/Symbols/Source/SourceNamedTypeSymbol_Extension.cs +++ b/src/roslyn/src/Compilers/CSharp/Portable/Symbols/Source/SourceNamedTypeSymbol_Extension.cs @@ -45,8 +45,21 @@ internal override string ExtensionName declaration = ((SourceNamespaceSymbol)this.ContainingSymbol).MergedDeclaration; } - var index = declaration.Children.IndexOf(this.declaration); - return GeneratedNames.MakeExtensionName(index); + int index = 0; + foreach (Declaration child in declaration.Children) + { + if (child == this.declaration) + { + return GeneratedNames.MakeExtensionName(index); + } + + if (child.Kind == DeclarationKind.Extension) + { + index++; + } + } + + throw ExceptionUtilities.Unreachable(); } } diff --git a/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.cs.xlf b/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.cs.xlf index 7b6ef24f74a..37ae8bfc426 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.cs.xlf +++ b/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.cs.xlf @@ -2397,6 +2397,11 @@ Literál nezpracovaného řetězce nezačíná dostatečným počtem uvozovek, aby bylo možné tento počet po sobě jdoucích znaků uvozovek povolit jako obsah. + + Combined length of user strings used by the program exceeds allowed limit. Adding a string literal requires restarting the application. + Combined length of user strings used by the program exceeds allowed limit. Adding a string literal requires restarting the application. + + Top-level statements must precede namespace and type declarations. Příkazy nejvyšší úrovně se musí nacházet před obory názvů a deklaracemi typů. diff --git a/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.de.xlf b/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.de.xlf index ce1baff1c7a..e481e2a7893 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.de.xlf +++ b/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.de.xlf @@ -2397,6 +2397,11 @@ Das Rohzeichenfolgenliteral beginnt nicht mit genügend Anführungszeichen, um so viele aufeinanderfolgende Anführungszeichen als Inhalt zuzulassen. + + Combined length of user strings used by the program exceeds allowed limit. Adding a string literal requires restarting the application. + Combined length of user strings used by the program exceeds allowed limit. Adding a string literal requires restarting the application. + + Top-level statements must precede namespace and type declarations. Anweisungen der obersten Ebene müssen vor Namespace- und Typdeklarationen stehen. diff --git a/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.es.xlf b/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.es.xlf index d14f5fbc2aa..3dcae73e93f 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.es.xlf +++ b/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.es.xlf @@ -2397,6 +2397,11 @@ El literal de cadena sin formato no comienza con suficientes comillas para permitir tantas comillas consecutivas como contenido. + + Combined length of user strings used by the program exceeds allowed limit. Adding a string literal requires restarting the application. + Combined length of user strings used by the program exceeds allowed limit. Adding a string literal requires restarting the application. + + Top-level statements must precede namespace and type declarations. Las instrucciones de nivel superior deben preceder a las declaraciones de espacio de nombres y de tipos. diff --git a/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.fr.xlf b/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.fr.xlf index a0db1f39b87..73299c0f677 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.fr.xlf +++ b/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.fr.xlf @@ -2397,6 +2397,11 @@ Le littéral brut de la chaîne de caractères ne commence pas par un nombre suffisant de caractères de guillemets pour autoriser un tel nombre de caractères de guillemets consécutifs comme contenu. + + Combined length of user strings used by the program exceeds allowed limit. Adding a string literal requires restarting the application. + Combined length of user strings used by the program exceeds allowed limit. Adding a string literal requires restarting the application. + + Top-level statements must precede namespace and type declarations. Les instructions de niveau supérieur doivent précéder les déclarations d'espace de noms et de type. diff --git a/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.it.xlf b/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.it.xlf index 4776064d30d..ca9c6d18326 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.it.xlf +++ b/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.it.xlf @@ -2397,6 +2397,11 @@ Il valore letterale stringa non elaborato non inizia con un numero sufficiente di virgolette per consentire questo numero di virgolette consecutive come contenuto. + + Combined length of user strings used by the program exceeds allowed limit. Adding a string literal requires restarting the application. + Combined length of user strings used by the program exceeds allowed limit. Adding a string literal requires restarting the application. + + Top-level statements must precede namespace and type declarations. Le istruzioni di primo livello devono precedere le dichiarazioni di tipo e di spazio dei nomi. diff --git a/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.ja.xlf b/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.ja.xlf index 67daf55e4fd..64ffd6274ee 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.ja.xlf +++ b/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.ja.xlf @@ -2397,6 +2397,11 @@ 生文字列リテラルの先頭に十分な数の引用符文字がないため、連続した引用符文字をコンテンツとして使用できません。 + + Combined length of user strings used by the program exceeds allowed limit. Adding a string literal requires restarting the application. + Combined length of user strings used by the program exceeds allowed limit. Adding a string literal requires restarting the application. + + Top-level statements must precede namespace and type declarations. トップレベルのステートメントは、名前空間および型の宣言の前にある必要があります。 diff --git a/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.ko.xlf b/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.ko.xlf index 445c283cdec..7c16a674e24 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.ko.xlf +++ b/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.ko.xlf @@ -2397,6 +2397,11 @@ 원시 문자열 리터럴을 시작하는 따옴표 문자가 부족해 이렇게 많은 따옴표 문자를 콘텐츠로 사용할 수 없습니다. + + Combined length of user strings used by the program exceeds allowed limit. Adding a string literal requires restarting the application. + Combined length of user strings used by the program exceeds allowed limit. Adding a string literal requires restarting the application. + + Top-level statements must precede namespace and type declarations. 최상위 문은 네임스페이스 및 형식 선언 앞에 와야 합니다. diff --git a/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.pl.xlf b/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.pl.xlf index 92320e99565..40a51a9d7ab 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.pl.xlf +++ b/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.pl.xlf @@ -2397,6 +2397,11 @@ Nieprzetworzony literał ciągu nie rozpoczyna się od wystarczającej liczby znaków cudzysłowu, aby umożliwić używanie tak wielu kolejnych znaków cudzysłowu jako zawartości. + + Combined length of user strings used by the program exceeds allowed limit. Adding a string literal requires restarting the application. + Combined length of user strings used by the program exceeds allowed limit. Adding a string literal requires restarting the application. + + Top-level statements must precede namespace and type declarations. Instrukcje najwyższego poziomu muszą poprzedzać deklaracje przestrzeni nazw i typów. diff --git a/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.pt-BR.xlf b/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.pt-BR.xlf index 963929d643c..133576185f6 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.pt-BR.xlf +++ b/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.pt-BR.xlf @@ -2397,6 +2397,11 @@ A literal da cadeia de caracteres bruta não começa com caracteres de aspa suficientes para permitir esse número de caracteres de aspa consecutivos como conteúdo. + + Combined length of user strings used by the program exceeds allowed limit. Adding a string literal requires restarting the application. + Combined length of user strings used by the program exceeds allowed limit. Adding a string literal requires restarting the application. + + Top-level statements must precede namespace and type declarations. As instruções de nível superior precisam preceder as declarações de namespace e de tipo. diff --git a/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.ru.xlf b/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.ru.xlf index afe4e0b90bd..30b7d953160 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.ru.xlf +++ b/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.ru.xlf @@ -2397,6 +2397,11 @@ Литерал необработанной строки не начинается с достаточного количества символов кавычек, чтобы разрешить использовать такое же количество последовательных символов кавычек в качестве содержимого. + + Combined length of user strings used by the program exceeds allowed limit. Adding a string literal requires restarting the application. + Combined length of user strings used by the program exceeds allowed limit. Adding a string literal requires restarting the application. + + Top-level statements must precede namespace and type declarations. Инструкции верхнего уровня должны предшествовать объявлениям пространств имен и типов. diff --git a/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.tr.xlf b/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.tr.xlf index 9015530c021..2c46ca1dae0 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.tr.xlf +++ b/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.tr.xlf @@ -2397,6 +2397,11 @@ Ham dize sabit değeri, içerik olarak bu kadar çok ardışık tırnak işareti karakterine izin vermek için yeterli sayıda tırnak işareti karakteriyle başlamıyor. + + Combined length of user strings used by the program exceeds allowed limit. Adding a string literal requires restarting the application. + Combined length of user strings used by the program exceeds allowed limit. Adding a string literal requires restarting the application. + + Top-level statements must precede namespace and type declarations. Üst düzey deyimler ad alanı ve tür bildirimlerinden önce gelmelidir. diff --git a/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.zh-Hans.xlf b/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.zh-Hans.xlf index d92f7af8a95..8ca0b9a047b 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.zh-Hans.xlf +++ b/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.zh-Hans.xlf @@ -2397,6 +2397,11 @@ 原始字符串字面量的开头没有足够的引号字符以允许将这么多连续的引号字符作为内容。 + + Combined length of user strings used by the program exceeds allowed limit. Adding a string literal requires restarting the application. + Combined length of user strings used by the program exceeds allowed limit. Adding a string literal requires restarting the application. + + Top-level statements must precede namespace and type declarations. 顶级语句必须位于命名空间和类型声明之前。 diff --git a/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.zh-Hant.xlf b/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.zh-Hant.xlf index 0688757833c..04b102802f3 100644 --- a/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.zh-Hant.xlf +++ b/src/roslyn/src/Compilers/CSharp/Portable/xlf/CSharpResources.zh-Hant.xlf @@ -2397,6 +2397,11 @@ 原始字串常值開頭沒有足夠的引號字元,因此無法允許這麼多連續的引號字元做為內容。 + + Combined length of user strings used by the program exceeds allowed limit. Adding a string literal requires restarting the application. + Combined length of user strings used by the program exceeds allowed limit. Adding a string literal requires restarting the application. + + Top-level statements must precede namespace and type declarations. 最上層陳述式必須在命名空間和型別宣告之前。 diff --git a/src/roslyn/src/Compilers/CSharp/Test/Emit/Emit/EmitErrorTests.cs b/src/roslyn/src/Compilers/CSharp/Test/Emit/Emit/EmitErrorTests.cs index d522c10deec..0c63bf61d1e 100644 --- a/src/roslyn/src/Compilers/CSharp/Test/Emit/Emit/EmitErrorTests.cs +++ b/src/roslyn/src/Compilers/CSharp/Test/Emit/Emit/EmitErrorTests.cs @@ -341,8 +341,12 @@ public static void Main () var expectedDiagnostics = new[] { - // error CS8103: Combined length of user strings used by the program exceeds allowed limit. Try to decrease use of string literals or try the EXPERIMENTAL feature flag 'experimental-data-section-string-literals'. - Diagnostic(ErrorCode.ERR_TooManyUserStrings).WithLocation(1, 1) + // (15,26): error CS8103: Combined length of user strings used by the program exceeds allowed limit. Try to decrease use of string literals or try the EXPERIMENTAL feature flag 'experimental-data-section-string-literals'. + // System.Console.WriteLine("J...J"); + Diagnostic(ErrorCode.ERR_TooManyUserStrings, '"' + new string('J', 1000000) + '"').WithLocation(15, 26), + // (16,26): error CS8103: Combined length of user strings used by the program exceeds allowed limit. Try to decrease use of string literals or try the EXPERIMENTAL feature flag 'experimental-data-section-string-literals'. + // System.Console.WriteLine("K...K"); + Diagnostic(ErrorCode.ERR_TooManyUserStrings, '"' + new string('K', 1000000) + '"').WithLocation(16, 26) }; CreateCompilation(source).VerifyEmitDiagnostics(expectedDiagnostics); diff --git a/src/roslyn/src/Compilers/CSharp/Test/Emit/Emit/EmitMetadataTests.cs b/src/roslyn/src/Compilers/CSharp/Test/Emit/Emit/EmitMetadataTests.cs index c8577b654b4..484d3f8c0f0 100644 --- a/src/roslyn/src/Compilers/CSharp/Test/Emit/Emit/EmitMetadataTests.cs +++ b/src/roslyn/src/Compilers/CSharp/Test/Emit/Emit/EmitMetadataTests.cs @@ -3144,6 +3144,65 @@ .maxstack 1 Assert.Equal(0, verifier.Compilation.DataSectionStringLiteralThreshold); } + [Fact] + public void DataSectionStringLiterals_Switch() + { + var source = """ + System.Console.Write(args[0] switch + { + "a" => 1, + "bb" => 2, + "ccc" => 3, + _ => 4 + }); + """; + + var verifier = CompileAndVerify( + source, + parseOptions: TestOptions.Regular.WithFeature("experimental-data-section-string-literals", "0"), + verify: Verification.Skipped); + + verifier.VerifyIL("", """ + { + // Code size 66 (0x42) + .maxstack 2 + .locals init (int V_0, + string V_1) + IL_0000: ldarg.0 + IL_0001: ldc.i4.0 + IL_0002: ldelem.ref + IL_0003: stloc.1 + IL_0004: ldloc.1 + IL_0005: ldsfld "string .A96FAF705AF16834E6C632B61E964E1F.s" + IL_000a: call "bool string.op_Equality(string, string)" + IL_000f: brtrue.s IL_002d + IL_0011: ldloc.1 + IL_0012: ldsfld "string .DB1DE4B3DA6C7871B776D5CB968AA5A4.s" + IL_0017: call "bool string.op_Equality(string, string)" + IL_001c: brtrue.s IL_0031 + IL_001e: ldloc.1 + IL_001f: ldsfld "string .BE20CA004CC2993A396345E0D52DF013.s" + IL_0024: call "bool string.op_Equality(string, string)" + IL_0029: brtrue.s IL_0035 + IL_002b: br.s IL_0039 + IL_002d: ldc.i4.1 + IL_002e: stloc.0 + IL_002f: br.s IL_003b + IL_0031: ldc.i4.2 + IL_0032: stloc.0 + IL_0033: br.s IL_003b + IL_0035: ldc.i4.3 + IL_0036: stloc.0 + IL_0037: br.s IL_003b + IL_0039: ldc.i4.4 + IL_003a: stloc.0 + IL_003b: ldloc.0 + IL_003c: call "void System.Console.Write(int)" + IL_0041: ret + } + """); + } + [Fact] public void DataSectionStringLiterals_InvalidUtf8() { diff --git a/src/roslyn/src/Compilers/CSharp/Test/Emit2/Emit/EditAndContinue/AssemblyReferencesTests.cs b/src/roslyn/src/Compilers/CSharp/Test/Emit2/Emit/EditAndContinue/AssemblyReferencesTests.cs index 7a67122fa47..f1cd2f32082 100644 --- a/src/roslyn/src/Compilers/CSharp/Test/Emit2/Emit/EditAndContinue/AssemblyReferencesTests.cs +++ b/src/roslyn/src/Compilers/CSharp/Test/Emit2/Emit/EditAndContinue/AssemblyReferencesTests.cs @@ -81,9 +81,13 @@ class C compilation1.GlobalNamespace.GetMember("C").GetMember("Main")) }; - compilation1.EmitDifference(baseline, edits, s => false, mdStream, ilStream, pdbStream); + compilation1.EmitDifference(baseline, edits, s => false, mdStream, ilStream, pdbStream, EmitDifferenceOptions.Default, CancellationToken.None); - var actualIL = ImmutableArray.Create(ilStream.ToArray()).GetMethodIL(); + var il = ImmutableArray.Create(ilStream.ToArray()); + mdStream.Position = 0; + using var mdReaderProvider = MetadataReaderProvider.FromMetadataStream(mdStream); + + var actualIL = ILValidation.DumpEncDeltaMethodBodies(il, [mdReaderProvider.GetMetadataReader()]); var expectedIL = @" { // Code size 7 (0x7) @@ -153,9 +157,13 @@ class C compilation1.GlobalNamespace.GetMember("C").GetMember("Main")) }; - compilation1.EmitDifference(baseline, edits, s => false, mdStream, ilStream, pdbStream); + compilation1.EmitDifference(baseline, edits, s => false, mdStream, ilStream, pdbStream, EmitDifferenceOptions.Default, CancellationToken.None); + + var il = ImmutableArray.Create(ilStream.ToArray()); + mdStream.Position = 0; + using var mdReaderProvider = MetadataReaderProvider.FromMetadataStream(mdStream); - var actualIL = ImmutableArray.Create(ilStream.ToArray()).GetMethodIL(); + var actualIL = ILValidation.DumpEncDeltaMethodBodies(il, [mdReaderProvider.GetMetadataReader()]); // Symbol matcher should ignore overloads with missing type symbols and match // F(object). diff --git a/src/roslyn/src/Compilers/CSharp/Test/Emit2/Emit/EditAndContinue/EditAndContinueClosureTests.cs b/src/roslyn/src/Compilers/CSharp/Test/Emit2/Emit/EditAndContinue/EditAndContinueClosureTests.cs index 4f4d3c84cdb..4b5b85deef2 100644 --- a/src/roslyn/src/Compilers/CSharp/Test/Emit2/Emit/EditAndContinue/EditAndContinueClosureTests.cs +++ b/src/roslyn/src/Compilers/CSharp/Test/Emit2/Emit/EditAndContinue/EditAndContinueClosureTests.cs @@ -4846,6 +4846,7 @@ public void F() g.VerifyIL( """ + F { // Code size 44 (0x2c) .maxstack 2 @@ -4864,6 +4865,7 @@ .maxstack 2 IL_0026: stsfld 0x04000003 IL_002b: ret } + b__0_0 { // Code size 13 (0xd) .maxstack 8 @@ -4872,6 +4874,7 @@ .maxstack 8 IL_0007: newobj 0x06000007 IL_000c: throw } + b__0_1 { // Code size 8 (0x8) .maxstack 8 @@ -4880,6 +4883,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -4892,6 +4896,7 @@ .maxstack 8 IL_000a: stfld 0x04000004 IL_000f: ret } + .ctor { // Code size 8 (0x8) .maxstack 8 @@ -4900,6 +4905,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + b__0#1 { // Code size 13 (0xd) .maxstack 8 @@ -4986,6 +4992,7 @@ public void F() g.VerifyIL( """ + F { // Code size 12 (0xc) .maxstack 2 @@ -4997,6 +5004,7 @@ .maxstack 2 IL_000a: nop IL_000b: ret } + g__L1|0_0 { // Code size 13 (0xd) .maxstack 8 @@ -5005,6 +5013,7 @@ .maxstack 8 IL_0007: newobj 0x06000006 IL_000c: throw } + g__L2|0_1 { // Code size 8 (0x8) .maxstack 8 @@ -5013,6 +5022,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + g__L1|0_0#1 { // Code size 13 (0xd) .maxstack 8 @@ -5022,6 +5032,7 @@ .maxstack 8 IL_000b: nop IL_000c: ret } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -5089,6 +5100,7 @@ public void F(int x) g.VerifyIL( """ + F { // Code size 44 (0x2c) .maxstack 2 @@ -5107,6 +5119,7 @@ .maxstack 2 IL_0026: stsfld 0x04000003 IL_002b: ret } + b__0_0 { // Code size 13 (0xd) .maxstack 8 @@ -5115,6 +5128,7 @@ .maxstack 8 IL_0007: newobj 0x06000007 IL_000c: throw } + b__0_1 { // Code size 8 (0x8) .maxstack 8 @@ -5123,6 +5137,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -5135,6 +5150,7 @@ .maxstack 8 IL_000a: stfld 0x04000004 IL_000f: ret } + .ctor { // Code size 8 (0x8) .maxstack 8 @@ -5143,6 +5159,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + b__0#1 { // Code size 13 (0xd) .maxstack 8 @@ -5226,6 +5243,7 @@ public void F(int x) g.VerifyMethodDefNames("F", "g__L1|0_0", "g__L2|0_1", "g__L1|0_0#1", ".ctor"); g.VerifyIL(""" + F { // Code size 12 (0xc) .maxstack 2 @@ -5237,6 +5255,7 @@ .maxstack 2 IL_000a: nop IL_000b: ret } + g__L1|0_0 { // Code size 13 (0xd) .maxstack 8 @@ -5245,6 +5264,7 @@ .maxstack 8 IL_0007: newobj 0x06000006 IL_000c: throw } + g__L2|0_1 { // Code size 8 (0x8) .maxstack 8 @@ -5253,6 +5273,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + g__L1|0_0#1 { // Code size 13 (0xd) .maxstack 8 @@ -5262,6 +5283,7 @@ .maxstack 8 IL_000b: nop IL_000c: ret } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -5331,6 +5353,7 @@ static void F() g.VerifyIL( """ + F { // Code size 34 (0x22) .maxstack 2 @@ -5347,6 +5370,7 @@ .maxstack 2 IL_0020: stloc.0 IL_0021: ret } + b__1_0 { // Code size 31 (0x1f) .maxstack 2 @@ -5361,6 +5385,7 @@ .maxstack 2 IL_0019: call 0x06000001 IL_001e: ret } + b__1_1 { // Code size 12 (0xc) .maxstack 8 @@ -5369,6 +5394,7 @@ .maxstack 8 IL_0006: newobj 0x06000008 IL_000b: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -5381,6 +5407,7 @@ .maxstack 8 IL_000a: stfld 0x04000004 IL_000f: ret } + .ctor { // Code size 8 (0x8) .maxstack 8 @@ -5389,6 +5416,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + b__1#1 { // Code size 7 (0x7) .maxstack 8 @@ -5453,6 +5481,7 @@ class C : B g.VerifyIL( """ + .ctor { // Code size 42 (0x2a) .maxstack 3 @@ -5474,6 +5503,7 @@ .maxstack 3 IL_0028: nop IL_0029: ret } + <.ctor>b__0_0 { // Code size 13 (0xd) .maxstack 8 @@ -5482,6 +5512,7 @@ .maxstack 8 IL_0007: newobj 0x06000007 IL_000c: throw } + <.ctor>b__0_1 { // Code size 12 (0xc) .maxstack 8 @@ -5490,6 +5521,7 @@ .maxstack 8 IL_0006: newobj 0x06000007 IL_000b: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -5502,6 +5534,7 @@ .maxstack 8 IL_000a: stfld 0x04000004 IL_000f: ret } + .ctor { // Code size 8 (0x8) .maxstack 8 @@ -5510,6 +5543,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + <.ctor>b__0#1 { // Code size 7 (0x7) .maxstack 8 @@ -5517,6 +5551,7 @@ .maxstack 8 IL_0001: ldfld 0x04000005 IL_0006: ret } + <.ctor>b__1#1 { // Code size 13 (0xd) .maxstack 8 @@ -5569,6 +5604,7 @@ class B(Func f); g.VerifyIL( """ + .ctor { // Code size 33 (0x21) .maxstack 3 @@ -5585,6 +5621,7 @@ .maxstack 3 IL_001f: nop IL_0020: ret } + <.ctor>b__0_0 { // Code size 13 (0xd) .maxstack 8 @@ -5593,6 +5630,7 @@ .maxstack 8 IL_0007: newobj 0x06000006 IL_000c: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -5605,6 +5643,7 @@ .maxstack 8 IL_000a: stfld 0x04000003 IL_000f: ret } + .ctor { // Code size 8 (0x8) .maxstack 8 @@ -5613,6 +5652,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + <.ctor>b__0#1 { // Code size 7 (0x7) .maxstack 8 @@ -5663,6 +5703,7 @@ public void Capture_TopLevelArgs() g.VerifyIL( """ +
$ { // Code size 27 (0x1b) .maxstack 2 @@ -5677,6 +5718,7 @@ .maxstack 2 IL_0019: stloc.2 IL_001a: ret } + <
$>b__0_0 { // Code size 13 (0xd) .maxstack 8 @@ -5685,6 +5727,7 @@ .maxstack 8 IL_0007: newobj 0x06000006 IL_000c: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -5697,6 +5740,7 @@ .maxstack 8 IL_000a: stfld 0x04000003 IL_000f: ret } + .ctor { // Code size 8 (0x8) .maxstack 8 @@ -5705,6 +5749,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + <
$>b__0#1 { // Code size 7 (0x7) .maxstack 8 @@ -5793,6 +5838,7 @@ public void F() g.VerifyIL( """ + F { // Code size 31 (0x1f) .maxstack 8 @@ -5806,6 +5852,7 @@ .maxstack 8 IL_0019: stsfld 0x04000004 IL_001e: ret } + b__1_0 { // Code size 13 (0xd) .maxstack 8 @@ -5814,6 +5861,7 @@ .maxstack 8 IL_0007: newobj 0x06000008 IL_000c: throw } + b__1_1 { // Code size 8 (0x8) .maxstack 8 @@ -5822,6 +5870,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + b__1_0#1 { // Code size 13 (0xd) .maxstack 8 @@ -5831,6 +5880,7 @@ .maxstack 8 IL_000b: nop IL_000c: ret } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -5922,6 +5972,7 @@ public void F() g.VerifyIL( """ + F { // Code size 4 (0x4) .maxstack 8 @@ -5930,6 +5981,7 @@ .maxstack 8 IL_0002: nop IL_0003: ret } + g__L1|1_0 { // Code size 13 (0xd) .maxstack 8 @@ -5938,6 +5990,7 @@ .maxstack 8 IL_0007: newobj 0x06000006 IL_000c: throw } + g__L2|1_1 { // Code size 8 (0x8) .maxstack 8 @@ -5946,6 +5999,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + g__L1|1_0#1 { // Code size 13 (0xd) .maxstack 8 @@ -5955,6 +6009,7 @@ .maxstack 8 IL_000b: nop IL_000c: ret } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -6021,6 +6076,7 @@ public void F() g.VerifyIL( """ + F { // Code size 31 (0x1f) .maxstack 8 @@ -6034,6 +6090,7 @@ .maxstack 8 IL_0019: stsfld 0x04000003 IL_001e: ret } + b__1_0 { // Code size 13 (0xd) .maxstack 8 @@ -6042,6 +6099,7 @@ .maxstack 8 IL_0007: newobj 0x06000008 IL_000c: throw } + b__1_1 { // Code size 8 (0x8) .maxstack 8 @@ -6050,6 +6108,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + b__1_0#1 { // Code size 13 (0xd) .maxstack 8 @@ -6059,6 +6118,7 @@ .maxstack 8 IL_000b: nop IL_000c: ret } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -6122,6 +6182,7 @@ public void F() g.VerifyIL( """ + F { // Code size 4 (0x4) .maxstack 8 @@ -6130,6 +6191,7 @@ .maxstack 8 IL_0002: nop IL_0003: ret } + g__L1|1_0 { // Code size 13 (0xd) .maxstack 8 @@ -6138,6 +6200,7 @@ .maxstack 8 IL_0007: newobj 0x06000006 IL_000c: throw } + g__L2|1_1 { // Code size 8 (0x8) .maxstack 8 @@ -6146,6 +6209,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + g__L1|1_0#1 { // Code size 13 (0xd) .maxstack 8 @@ -6155,6 +6219,7 @@ .maxstack 8 IL_000b: nop IL_000c: ret } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -6257,6 +6322,7 @@ public void F() g.VerifyIL( """ + F { // Code size 35 (0x23) .maxstack 2 @@ -6275,6 +6341,7 @@ .maxstack 2 IL_0021: nop IL_0022: ret } + b__0 { // Code size 7 (0x7) .maxstack 8 @@ -6356,6 +6423,7 @@ public void F() g.VerifyIL( """ + F { // Code size 13 (0xd) .maxstack 2 @@ -6368,6 +6436,7 @@ .maxstack 2 IL_000b: nop IL_000c: ret } + g__L|0_0 { // Code size 7 (0x7) .maxstack 8 @@ -6427,6 +6496,7 @@ public void F() g.VerifyIL( """ + F { // Code size 32 (0x20) .maxstack 2 @@ -6441,6 +6511,7 @@ .maxstack 2 IL_001a: stsfld 0x04000004 IL_001f: ret } + b__0 { // Code size 13 (0xd) .maxstack 8 @@ -6449,6 +6520,7 @@ .maxstack 8 IL_0007: newobj 0x06000005 IL_000c: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -6461,6 +6533,7 @@ .maxstack 8 IL_000a: stfld 0x04000002 IL_000f: ret } + .cctor { // Code size 11 (0xb) .maxstack 8 @@ -6468,6 +6541,7 @@ .maxstack 8 IL_0005: stsfld 0x04000003 IL_000a: ret } + .ctor { // Code size 8 (0x8) .maxstack 8 @@ -6476,6 +6550,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + b__0_0#1 { // Code size 8 (0x8) .maxstack 8 @@ -6518,6 +6593,7 @@ public void F() g.VerifyIL( """ + F { // Code size 16 (0x10) .maxstack 2 @@ -6530,6 +6606,7 @@ .maxstack 2 IL_000e: nop IL_000f: ret } + b__0_0#1 { // Code size 12 (0xc) .maxstack 8 @@ -6538,6 +6615,7 @@ .maxstack 8 IL_0006: newobj 0x06000005 IL_000b: throw } + .ctor { // Code size 8 (0x8) .maxstack 8 @@ -6546,6 +6624,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + b__0#2 { // Code size 15 (0xf) .maxstack 8 @@ -6643,6 +6722,7 @@ public void F() g.VerifyIL( """ + F { // Code size 14 (0xe) .maxstack 1 @@ -6661,6 +6741,7 @@ .maxstack 1 IL_000c: nop IL_000d: ret } + g__L|0_0 { // Code size 13 (0xd) .maxstack 8 @@ -6669,6 +6750,7 @@ .maxstack 8 IL_0007: newobj 0x06000007 IL_000c: throw } + g__L|0_1 { // Code size 12 (0xc) .maxstack 8 @@ -6677,6 +6759,7 @@ .maxstack 8 IL_0006: newobj 0x06000007 IL_000b: throw } + g__L|0_0#1 { // Code size 8 (0x8) .maxstack 8 @@ -6685,6 +6768,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + g__L|0_1#1 { // Code size 8 (0x8) .maxstack 8 @@ -6693,6 +6777,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -6807,6 +6892,7 @@ public void F() g.VerifyIL( """ + F { // Code size 58 (0x3a) .maxstack 8 @@ -6825,6 +6911,7 @@ .maxstack 8 IL_0034: stsfld 0x04000003 IL_0039: ret } + b__1_0 { // Code size 13 (0xd) .maxstack 8 @@ -6833,6 +6920,7 @@ .maxstack 8 IL_0007: newobj 0x06000007 IL_000c: throw } + b__1_1 { // Code size 8 (0x8) .maxstack 8 @@ -6841,6 +6929,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -6853,6 +6942,7 @@ .maxstack 8 IL_000a: stfld 0x04000004 IL_000f: ret } + b__1_0#1 { // Code size 8 (0x8) .maxstack 8 @@ -6959,6 +7049,7 @@ public void F() g.VerifyIL( """ + F { // Code size 4 (0x4) .maxstack 8 @@ -6967,6 +7058,7 @@ .maxstack 8 IL_0002: nop IL_0003: ret } + g__L1|1_0 { // Code size 13 (0xd) .maxstack 8 @@ -6975,6 +7067,7 @@ .maxstack 8 IL_0007: newobj 0x06000006 IL_000c: throw } + g__L2|1_1 { // Code size 8 (0x8) .maxstack 8 @@ -6983,6 +7076,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + g__L1|1_0#1 { // Code size 8 (0x8) .maxstack 8 @@ -6991,6 +7085,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -7056,6 +7151,7 @@ public void F() g.VerifyIL( """ + F { // Code size 16 (0x10) .maxstack 2 @@ -7068,6 +7164,7 @@ .maxstack 2 IL_000e: nop IL_000f: ret } + .ctor { // Code size 8 (0x8) .maxstack 8 @@ -7076,6 +7173,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + b__0#1 { // Code size 13 (0xd) .maxstack 8 @@ -7116,6 +7214,7 @@ public void F() g.VerifyMethodDefNames("F", "b__0#1", ".ctor"); g.VerifyIL(""" + F { // Code size 4 (0x4) .maxstack 1 @@ -7124,6 +7223,7 @@ .maxstack 1 IL_0002: stloc.2 IL_0003: ret } + b__0#1 { // Code size 12 (0xc) .maxstack 8 @@ -7132,6 +7232,7 @@ .maxstack 8 IL_0006: newobj 0x06000005 IL_000b: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -7195,6 +7296,7 @@ public void F() g.VerifyIL( """ + F { // Code size 11 (0xb) .maxstack 2 @@ -7205,6 +7307,7 @@ .maxstack 2 IL_0009: nop IL_000a: ret } + g__L|0#1_0#1 { // Code size 13 (0xd) .maxstack 8 @@ -7242,6 +7345,7 @@ public void F() g.VerifyMethodDefNames("F", "g__L|0#1_0#1", ".ctor"); g.VerifyIL(""" + F { // Code size 4 (0x4) .maxstack 1 @@ -7250,6 +7354,7 @@ .maxstack 1 IL_0002: stloc.2 IL_0003: ret } + g__L|0#1_0#1 { // Code size 12 (0xc) .maxstack 8 @@ -7258,6 +7363,7 @@ .maxstack 8 IL_0006: newobj 0x06000004 IL_000b: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -7360,6 +7466,7 @@ void F() g.VerifyIL( """ + F { // Code size 82 (0x52) .maxstack 3 @@ -7396,6 +7503,7 @@ .maxstack 3 IL_0050: nop IL_0051: ret } + b__0 { // Code size 7 (0x7) .maxstack 8 @@ -7403,6 +7511,7 @@ .maxstack 8 IL_0001: ldfld 0x04000001 IL_0006: ret } + b__1 { // Code size 12 (0xc) .maxstack 8 @@ -7411,6 +7520,7 @@ .maxstack 8 IL_0006: newobj 0x06000008 IL_000b: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -7423,6 +7533,7 @@ .maxstack 8 IL_000a: stfld 0x04000003 IL_000f: ret } + .ctor { // Code size 8 (0x8) .maxstack 8 @@ -7431,6 +7542,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + b__1#1 { // Code size 19 (0x13) .maxstack 8 @@ -7552,6 +7664,7 @@ void F() g.VerifyIL( """ + F { // Code size 24 (0x18) .maxstack 2 @@ -7570,6 +7683,7 @@ .maxstack 2 IL_0016: nop IL_0017: ret } + g__L1|0_0 { // Code size 7 (0x7) .maxstack 8 @@ -7577,6 +7691,7 @@ .maxstack 8 IL_0001: ldfld 0x04000001 IL_0006: ret } + g__L2|0_1 { // Code size 12 (0xc) .maxstack 8 @@ -7585,6 +7700,7 @@ .maxstack 8 IL_0006: newobj 0x06000006 IL_000b: throw } + g__L2|0_1#1 { // Code size 14 (0xe) .maxstack 8 @@ -7595,6 +7711,7 @@ .maxstack 8 IL_000c: add IL_000d: ret } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -7698,6 +7815,7 @@ void F() g.VerifyIL( """ + F { // Code size 68 (0x44) .maxstack 2 @@ -7728,6 +7846,7 @@ .maxstack 2 IL_0042: nop IL_0043: ret } + b__0 { // Code size 7 (0x7) .maxstack 8 @@ -7735,6 +7854,7 @@ .maxstack 8 IL_0001: ldfld 0x04000001 IL_0006: ret } + b__1 { // Code size 12 (0xc) .maxstack 8 @@ -7743,6 +7863,7 @@ .maxstack 8 IL_0006: newobj 0x06000008 IL_000b: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -7755,6 +7876,7 @@ .maxstack 8 IL_000a: stfld 0x04000004 IL_000f: ret } + .ctor { // Code size 8 (0x8) .maxstack 8 @@ -7763,6 +7885,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + b__1#1 { // Code size 7 (0x7) .maxstack 8 @@ -7883,6 +8006,7 @@ void F() g.VerifyIL( """ + F { // Code size 24 (0x18) .maxstack 2 @@ -7901,6 +8025,7 @@ .maxstack 2 IL_0016: nop IL_0017: ret } + g__L1|0_0 { // Code size 7 (0x7) .maxstack 8 @@ -7908,6 +8033,7 @@ .maxstack 8 IL_0001: ldfld 0x04000001 IL_0006: ret } + g__L2|0_1 { // Code size 12 (0xc) .maxstack 8 @@ -7916,6 +8042,7 @@ .maxstack 8 IL_0006: newobj 0x06000006 IL_000b: throw } + g__L2|0_1#1 { // Code size 7 (0x7) .maxstack 8 @@ -7923,6 +8050,7 @@ .maxstack 8 IL_0001: ldfld 0x04000002 IL_0006: ret } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -8019,6 +8147,7 @@ void F() "b__2#1"); g.VerifyIL(""" + F { // Code size 131 (0x83) .maxstack 2 @@ -8069,6 +8198,7 @@ .maxstack 2 IL_0081: nop IL_0082: ret } + b__0 { // Code size 7 (0x7) .maxstack 8 @@ -8076,6 +8206,7 @@ .maxstack 8 IL_0001: ldfld 0x04000001 IL_0006: ret } + b__1 { // Code size 12 (0xc) .maxstack 8 @@ -8084,6 +8215,7 @@ .maxstack 8 IL_0006: newobj 0x06000008 IL_000b: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -8096,6 +8228,7 @@ .maxstack 8 IL_000a: stfld 0x04000004 IL_000f: ret } + .ctor, .ctor { // Code size 8 (0x8) .maxstack 8 @@ -8104,6 +8237,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + b__1#1 { // Code size 24 (0x18) .maxstack 8 @@ -8116,6 +8250,7 @@ .maxstack 8 IL_0016: add IL_0017: ret } + b__2#1 { // Code size 36 (0x24) .maxstack 8 @@ -8249,6 +8384,7 @@ void F() g.VerifyMethodDefNames("F", "g__L1|0_0", "g__L2|0_1", "g__L3|0_2#1"); g.VerifyIL(""" + F { // Code size 35 (0x23) .maxstack 2 @@ -8273,6 +8409,7 @@ .maxstack 2 IL_0021: nop IL_0022: ret } + g__L1|0_0 { // Code size 7 (0x7) .maxstack 8 @@ -8280,6 +8417,7 @@ .maxstack 8 IL_0001: ldfld 0x04000001 IL_0006: ret } + g__L2|0_1 { // Code size 14 (0xe) .maxstack 8 @@ -8290,6 +8428,7 @@ .maxstack 8 IL_000c: add IL_000d: ret } + g__L3|0_2#1 { // Code size 21 (0x15) .maxstack 8 @@ -8427,6 +8566,7 @@ public void F() g.VerifyIL( """ + F { // Code size 84 (0x54) .maxstack 2 @@ -8460,6 +8600,7 @@ .maxstack 2 IL_0052: nop IL_0053: ret } + b__0 { // Code size 7 (0x7) .maxstack 8 @@ -8467,6 +8608,7 @@ .maxstack 8 IL_0001: ldfld 0x04000001 IL_0006: ret } + b__2 { // Code size 12 (0xc) .maxstack 8 @@ -8475,6 +8617,7 @@ .maxstack 8 IL_0006: newobj 0x06000009 IL_000b: throw } + b__1 { // Code size 7 (0x7) .maxstack 8 @@ -8482,6 +8625,7 @@ .maxstack 8 IL_0001: ldfld 0x04000002 IL_0006: ret } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -8494,6 +8638,7 @@ .maxstack 8 IL_000a: stfld 0x04000003 IL_000f: ret } + b__2#1 { // Code size 9 (0x9) .maxstack 8 @@ -8625,6 +8770,7 @@ public void F() g.VerifyIL( """ + F { // Code size 23 (0x17) .maxstack 2 @@ -8642,6 +8788,7 @@ .maxstack 2 IL_0015: nop IL_0016: ret } + g__L1|0_0 { // Code size 7 (0x7) .maxstack 8 @@ -8649,6 +8796,7 @@ .maxstack 8 IL_0001: ldfld 0x04000001 IL_0006: ret } + g__L2|0_1 { // Code size 7 (0x7) .maxstack 8 @@ -8656,6 +8804,7 @@ .maxstack 8 IL_0001: ldfld 0x04000002 IL_0006: ret } + g__L3|0_2 { // Code size 12 (0xc) .maxstack 8 @@ -8664,6 +8813,7 @@ .maxstack 8 IL_0006: newobj 0x06000007 IL_000b: throw } + g__L3|0_2#1 { // Code size 9 (0x9) .maxstack 8 @@ -8673,6 +8823,7 @@ .maxstack 8 IL_0007: add IL_0008: ret } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -8789,6 +8940,7 @@ public void F() g.VerifyIL( """ + F { // Code size 62 (0x3e) .maxstack 2 @@ -8816,6 +8968,7 @@ .maxstack 2 IL_003c: nop IL_003d: ret } + g__L1|0 { // Code size 13 (0xd) .maxstack 8 @@ -8824,6 +8977,7 @@ .maxstack 8 IL_0007: newobj 0x0600000A IL_000c: throw } + b__2 { // Code size 12 (0xc) .maxstack 8 @@ -8832,6 +8986,7 @@ .maxstack 8 IL_0006: newobj 0x0600000A IL_000b: throw } + b__1 { // Code size 7 (0x7) .maxstack 8 @@ -8839,6 +8994,7 @@ .maxstack 8 IL_0001: ldfld 0x04000002 IL_0006: ret } + g__L1|1_0#1 { // Code size 7 (0x7) .maxstack 8 @@ -8846,6 +9002,7 @@ .maxstack 8 IL_0001: ldfld 0x04000004 IL_0006: ret } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -8858,6 +9015,7 @@ .maxstack 8 IL_000a: stfld 0x04000003 IL_000f: ret } + b__2#1 { // Code size 9 (0x9) .maxstack 8 @@ -8990,6 +9148,7 @@ public void F() g.VerifyMethodDefNames("F", "g__L1|1_0", "g__L3|1_2", "b__1", ".ctor", "g__L3|2#1"); g.VerifyIL(""" + F { // Code size 45 (0x2d) .maxstack 2 @@ -9013,6 +9172,7 @@ .maxstack 2 IL_002b: nop IL_002c: ret } + g__L1|1_0 { // Code size 7 (0x7) .maxstack 8 @@ -9020,6 +9180,7 @@ .maxstack 8 IL_0001: ldfld 0x04000001 IL_0006: ret } + g__L3|1_2 { // Code size 12 (0xc) .maxstack 8 @@ -9028,6 +9189,7 @@ .maxstack 8 IL_0006: newobj 0x06000008 IL_000b: throw } + b__1 { // Code size 7 (0x7) .maxstack 8 @@ -9035,6 +9197,7 @@ .maxstack 8 IL_0001: ldfld 0x04000002 IL_0006: ret } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -9047,6 +9210,7 @@ .maxstack 8 IL_000a: stfld 0x04000003 IL_000f: ret } + g__L3|2#1 { // Code size 9 (0x9) .maxstack 8 @@ -9128,6 +9292,7 @@ public void F() g.VerifyIL( """ + F { // Code size 40 (0x28) .maxstack 2 @@ -9147,6 +9312,7 @@ .maxstack 2 IL_0026: nop IL_0027: ret } + b__0 { // Code size 14 (0xe) .maxstack 8 @@ -9224,6 +9390,7 @@ public void F() g.VerifyMethodDefNames("F", "g__L|0_0", "g__L|0_0#1", ".ctor"); g.VerifyIL(""" + F { // Code size 19 (0x13) .maxstack 2 @@ -9237,6 +9404,7 @@ .maxstack 2 IL_0011: nop IL_0012: ret } + g__L|0_0 { // Code size 13 (0xd) .maxstack 8 @@ -9245,6 +9413,7 @@ .maxstack 8 IL_0007: newobj 0x06000005 IL_000c: throw } + g__L|0_0#1 { // Code size 14 (0xe) .maxstack 8 @@ -9255,6 +9424,7 @@ .maxstack 8 IL_000c: add IL_000d: ret } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -9342,6 +9512,7 @@ public void F() g.VerifyIL( """ + F { // Code size 40 (0x28) .maxstack 2 @@ -9361,6 +9532,7 @@ .maxstack 2 IL_0026: nop IL_0027: ret } + b__0 { // Code size 14 (0xe) .maxstack 8 @@ -9442,6 +9614,7 @@ public void F() g.VerifyIL( """ + F { // Code size 11 (0xb) .maxstack 2 @@ -9452,6 +9625,7 @@ .maxstack 2 IL_0009: nop IL_000a: ret } + g__L|0 { // Code size 13 (0xd) .maxstack 8 @@ -9460,6 +9634,7 @@ .maxstack 8 IL_0007: newobj 0x06000008 IL_000c: throw } + b__1 { // Code size 12 (0xc) .maxstack 8 @@ -9468,6 +9643,7 @@ .maxstack 8 IL_0006: newobj 0x06000008 IL_000b: throw } + g__L|1_0#1 { // Code size 7 (0x7) .maxstack 8 @@ -9475,6 +9651,7 @@ .maxstack 8 IL_0001: ldfld 0x04000003 IL_0006: ret } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -9573,6 +9750,7 @@ public void F() g.VerifyIL( """ + F { // Code size 11 (0xb) .maxstack 2 @@ -9583,6 +9761,7 @@ .maxstack 2 IL_0009: nop IL_000a: ret } + g__L|0 { // Code size 13 (0xd) .maxstack 8 @@ -9591,6 +9770,7 @@ .maxstack 8 IL_0007: newobj 0x06000007 IL_000c: throw } + g__L|1_0#1 { // Code size 7 (0x7) .maxstack 8 @@ -9598,6 +9778,7 @@ .maxstack 8 IL_0001: ldfld 0x04000003 IL_0006: ret } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -9676,6 +9857,7 @@ public void F() g.VerifyMethodDefNames("F", "g__L|1_0", ".ctor", ".ctor", "g__L|0#1", "b__1#1"); g.VerifyIL(""" + F { // Code size 34 (0x22) .maxstack 2 @@ -9693,6 +9875,7 @@ .maxstack 2 IL_0020: nop IL_0021: ret } + g__L|1_0 { // Code size 13 (0xd) .maxstack 8 @@ -9701,6 +9884,7 @@ .maxstack 8 IL_0007: newobj 0x06000005 IL_000c: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -9713,6 +9897,7 @@ .maxstack 8 IL_000a: stfld 0x04000002 IL_000f: ret } + .ctor { // Code size 8 (0x8) .maxstack 8 @@ -9721,6 +9906,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + g__L|0#1, b__1#1 { // Code size 7 (0x7) .maxstack 8 @@ -9794,7 +9980,8 @@ public void F() g.VerifyIL( """ - { + F + { // Code size 34 (0x22) .maxstack 2 IL_0000: newobj 0x06000006 @@ -9811,6 +9998,7 @@ .maxstack 2 IL_0020: nop IL_0021: ret } + g__L|1_0 { // Code size 13 (0xd) .maxstack 8 @@ -9819,6 +10007,7 @@ .maxstack 8 IL_0007: newobj 0x06000005 IL_000c: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -9831,6 +10020,7 @@ .maxstack 8 IL_000a: stfld 0x04000002 IL_000f: ret } + .ctor { // Code size 8 (0x8) .maxstack 8 @@ -9839,6 +10029,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + g__L|0#1 { // Code size 7 (0x7) .maxstack 8 @@ -9906,6 +10097,7 @@ public void F() g.VerifyIL( """ + F { // Code size 30 (0x1e) .maxstack 8 @@ -9918,6 +10110,7 @@ .maxstack 8 IL_0018: stsfld 0x04000004 IL_001d: ret } + b__0_0 { // Code size 16 (0x10) .maxstack 8 @@ -9926,6 +10119,7 @@ .maxstack 8 IL_000a: newobj 0x06000006 IL_000f: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -9938,6 +10132,7 @@ .maxstack 8 IL_000a: stfld 0x04000003 IL_000f: ret } + b__0_0#1 { // Code size 10 (0xa) .maxstack 8 diff --git a/src/roslyn/src/Compilers/CSharp/Test/Emit2/Emit/EditAndContinue/EditAndContinueTests.cs b/src/roslyn/src/Compilers/CSharp/Test/Emit2/Emit/EditAndContinue/EditAndContinueTests.cs index cadd2d351b7..52fb9f8a639 100644 --- a/src/roslyn/src/Compilers/CSharp/Test/Emit2/Emit/EditAndContinue/EditAndContinueTests.cs +++ b/src/roslyn/src/Compilers/CSharp/Test/Emit2/Emit/EditAndContinue/EditAndContinueTests.cs @@ -11,6 +11,8 @@ using System.Linq; using System.Reflection.Metadata; using System.Reflection.Metadata.Ecma335; +using System.Text; +using System.Threading; using Microsoft.CodeAnalysis.CodeGen; using Microsoft.CodeAnalysis.CSharp.Symbols; using Microsoft.CodeAnalysis.CSharp.Test.Utilities; @@ -100,7 +102,8 @@ public C() Handle(4, TableIndex.CustomAttribute) }); - var expectedIL = """ + g.VerifyIL(""" + .ctor { // Code size 13 (0xd) .maxstack 8 @@ -109,6 +112,7 @@ .maxstack 8 IL_0007: newobj 0x06000003 IL_000c: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -121,10 +125,7 @@ .maxstack 8 IL_000a: stfld 0x04000001 IL_000f: ret } - """; - - // Can't verify the IL of individual methods because that requires IMethodSymbolInternal implementations - g.VerifyIL(expectedIL); + """); }) .Verify(); } @@ -186,6 +187,7 @@ class C }); g.VerifyIL(""" + .ctor { // Code size 13 (0xd) .maxstack 8 @@ -194,6 +196,7 @@ .maxstack 8 IL_0007: newobj 0x06000003 IL_000c: throw } + .ctor { // Code size 8 (0x8) .maxstack 8 @@ -202,6 +205,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -2324,6 +2328,7 @@ void F() }); g.VerifyIL(""" + F { // Code size 30 (0x1e) .maxstack 8 @@ -2336,6 +2341,7 @@ .maxstack 8 IL_0018: stsfld 0x04000003 IL_001d: ret } + b__0_0 { // Code size 12 (0xc) .maxstack 8 @@ -2344,6 +2350,7 @@ .maxstack 8 IL_0006: newobj 0x06000007 IL_000b: throw } + b__0_1 { // Code size 8 (0x8) .maxstack 8 @@ -2352,6 +2359,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -2664,6 +2672,7 @@ partial void M() g.VerifyMethodDefNames("M", "b__0", ".ctor", ".ctor", "b__0#1"); g.VerifyIL(""" + M { // Code size 28 (0x1c) .maxstack 2 @@ -2679,6 +2688,7 @@ .maxstack 2 IL_001a: stloc.1 IL_001b: ret } + b__0 { // Code size 12 (0xc) .maxstack 8 @@ -2687,6 +2697,7 @@ .maxstack 8 IL_0006: newobj 0x06000005 IL_000b: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -2699,6 +2710,7 @@ .maxstack 8 IL_000a: stfld 0x04000002 IL_000f: ret } + .ctor { // Code size 8 (0x8) .maxstack 8 @@ -2707,6 +2719,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + b__0#1 { // Code size 9 (0x9) .maxstack 8 @@ -3991,6 +4004,7 @@ class C }) .AddGeneration( + // 1 source: """ class C { @@ -4031,6 +4045,7 @@ class C }); g.VerifyIL(""" + get_P, set_P { // Code size 13 (0xd) .maxstack 8 @@ -4039,6 +4054,7 @@ .maxstack 8 IL_0007: newobj 0x06000004 IL_000c: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -4054,6 +4070,7 @@ .maxstack 8 """); }) .AddGeneration( + // 2 source: """ class C { @@ -4090,7 +4107,8 @@ class C Handle(4, TableIndex.MethodSemantics), }); - var expectedIL = """ + g.VerifyIL(""" + get_P { // Code size 7 (0x7) .maxstack 8 @@ -4098,6 +4116,7 @@ .maxstack 8 IL_0001: ldfld 0x04000001 IL_0006: ret } + set_P { // Code size 8 (0x8) .maxstack 8 @@ -4106,10 +4125,7 @@ .maxstack 8 IL_0002: stfld 0x04000001 IL_0007: ret } - """; - - // Can't verify the IL of individual methods because that requires IMethodSymbolInternal implementations - g.VerifyIL(expectedIL); + """); }) .Verify(); } @@ -4133,6 +4149,7 @@ class C }) .AddGeneration( + // 1 source: """ class C { @@ -4175,6 +4192,7 @@ class C ]); g.VerifyIL(""" + get_P, set_P { // Code size 13 (0xd) .maxstack 8 @@ -4183,6 +4201,7 @@ .maxstack 8 IL_0007: newobj 0x06000004 IL_000c: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -4198,6 +4217,7 @@ .maxstack 8 """); }) .AddGeneration( + // 2 source: """ class C { @@ -4243,7 +4263,8 @@ class C Handle(4, TableIndex.MethodSemantics) ]); - var expectedIL = """ + g.VerifyIL(""" + get_P { // Code size 7 (0x7) .maxstack 8 @@ -4251,6 +4272,7 @@ .maxstack 8 IL_0001: ldfld 0x04000002 IL_0006: ret } + set_P { // Code size 8 (0x8) .maxstack 8 @@ -4259,10 +4281,7 @@ .maxstack 8 IL_0002: stfld 0x04000002 IL_0007: ret } - """; - - // Can't verify the IL of individual methods because that requires IMethodSymbolInternal implementations - g.VerifyIL(expectedIL); + """); }) .Verify(); } @@ -4324,6 +4343,7 @@ class C }); g.VerifyIL(""" + get_P, set_P { // Code size 13 (0xd) .maxstack 8 @@ -4332,6 +4352,7 @@ .maxstack 8 IL_0007: newobj 0x06000004 IL_000c: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -4386,6 +4407,7 @@ class C }); g.VerifyIL(""" + get_P { // Code size 11 (0xb) .maxstack 1 @@ -4396,6 +4418,7 @@ .maxstack 1 IL_0009: ldloc.0 IL_000a: ret } + set_P { // Code size 2 (0x2) .maxstack 8 @@ -4460,6 +4483,7 @@ class C }); g.VerifyIL(""" + set_P { // Code size 13 (0xd) .maxstack 8 @@ -4468,6 +4492,7 @@ .maxstack 8 IL_0007: newobj 0x06000004 IL_000c: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -4521,6 +4546,7 @@ class C }); g.VerifyIL(""" + get_P { // Code size 11 (0xb) .maxstack 1 @@ -4531,6 +4557,7 @@ .maxstack 1 IL_0009: ldloc.0 IL_000a: ret } + set_P { // Code size 2 (0x2) .maxstack 8 @@ -4607,6 +4634,7 @@ class C ]); var expectedIL = """ + get_P { // Code size 7 (0x7) .maxstack 8 @@ -4614,6 +4642,7 @@ .maxstack 8 IL_0001: ldfld 0x04000001 IL_0006: ret } + set_P { // Code size 8 (0x8) .maxstack 8 @@ -4692,6 +4721,7 @@ class C ]); var expectedIL = """ + get_P { // Code size 7 (0x7) .maxstack 8 @@ -4699,6 +4729,7 @@ .maxstack 8 IL_0001: ldfld 0x04000001 IL_0006: ret } + set_P { // Code size 8 (0x8) .maxstack 8 @@ -4772,6 +4803,7 @@ class C ]); var expectedIL = """ + get_P { // Code size 7 (0x7) .maxstack 8 @@ -4779,6 +4811,7 @@ .maxstack 8 IL_0001: ldfld 0x04000001 IL_0006: ret } + set_P { // Code size 8 (0x8) .maxstack 8 @@ -4881,7 +4914,8 @@ class C Handle(4, TableIndex.MethodSemantics) }); - var expectedIL = """ + g.VerifyIL(""" + get_P, set_P { // Code size 13 (0xd) .maxstack 8 @@ -4890,6 +4924,7 @@ .maxstack 8 IL_0007: newobj 0x06000006 IL_000c: throw } + get_P { // Code size 7 (0x7) .maxstack 8 @@ -4897,6 +4932,7 @@ .maxstack 8 IL_0001: ldfld 0x04000002 IL_0006: ret } + set_P { // Code size 8 (0x8) .maxstack 8 @@ -4905,6 +4941,7 @@ .maxstack 8 IL_0002: stfld 0x04000002 IL_0007: ret } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -4917,10 +4954,7 @@ .maxstack 8 IL_000a: stfld 0x04000003 IL_000f: ret } - """; - - // Can't verify the IL of individual methods because that requires IMethodSymbolInternal implementations - g.VerifyIL(expectedIL); + """); }) .AddGeneration( // 2 @@ -4972,6 +5006,7 @@ class C }); g.VerifyIL(""" + get_P { // Code size 7 (0x7) .maxstack 8 @@ -4979,6 +5014,7 @@ .maxstack 8 IL_0001: ldfld 0x04000001 IL_0006: ret } + set_P { // Code size 8 (0x8) .maxstack 8 @@ -4987,6 +5023,7 @@ .maxstack 8 IL_0002: stfld 0x04000001 IL_0007: ret } + get_P, set_P { // Code size 13 (0xd) .maxstack 8 @@ -5087,6 +5124,7 @@ class C }); g.VerifyIL(""" + get_P, set_P { // Code size 13 (0xd) .maxstack 8 @@ -5095,6 +5133,7 @@ .maxstack 8 IL_0007: newobj 0x06000006 IL_000c: throw } + get_Q { // Code size 7 (0x7) .maxstack 8 @@ -5102,6 +5141,7 @@ .maxstack 8 IL_0001: ldfld 0x04000002 IL_0006: ret } + set_Q { // Code size 8 (0x8) .maxstack 8 @@ -5110,6 +5150,7 @@ .maxstack 8 IL_0002: stfld 0x04000002 IL_0007: ret } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -5174,6 +5215,7 @@ class C }); g.VerifyIL(""" + get_P { // Code size 7 (0x7) .maxstack 8 @@ -5181,6 +5223,7 @@ .maxstack 8 IL_0001: ldfld 0x04000001 IL_0006: ret } + set_P { // Code size 8 (0x8) .maxstack 8 @@ -5189,6 +5232,7 @@ .maxstack 8 IL_0002: stfld 0x04000001 IL_0007: ret } + get_Q, set_Q { // Code size 13 (0xd) .maxstack 8 @@ -5260,6 +5304,7 @@ class C }); g.VerifyIL(""" + get_Item, set_Item { // Code size 13 (0xd) .maxstack 8 @@ -5268,6 +5313,7 @@ .maxstack 8 IL_0007: newobj 0x06000004 IL_000c: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -5354,7 +5400,8 @@ class C }); g.VerifyIL(""" - { + get_Item + { // Code size 13 (0xd) .maxstack 8 IL_0000: ldstr 0x70000005 @@ -5362,6 +5409,7 @@ .maxstack 8 IL_0007: newobj 0x06000004 IL_000c: throw } + get_Item { // Code size 7 (0x7) .maxstack 1 @@ -5372,6 +5420,7 @@ .maxstack 1 IL_0005: ldloc.0 IL_0006: ret } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -5426,6 +5475,7 @@ class C }); g.VerifyIL(""" + get_Item { // Code size 7 (0x7) .maxstack 1 @@ -5436,6 +5486,7 @@ .maxstack 1 IL_0005: ldloc.0 IL_0006: ret } + get_Item { // Code size 13 (0xd) .maxstack 8 @@ -5485,6 +5536,7 @@ class C }); g.VerifyIL(""" + get_Item { // Code size 7 (0x7) .maxstack 1 @@ -5553,12 +5605,14 @@ class C }); g.VerifyIL(""" + get_Item { // Code size 2 (0x2) .maxstack 8 IL_0000: ldc.i4.1 IL_0001: ret } + set_Item { // Code size 2 (0x2) .maxstack 8 @@ -5767,6 +5821,7 @@ class C }); g.VerifyIL(""" + add_E, remove_E { // Code size 13 (0xd) .maxstack 8 @@ -5775,6 +5830,7 @@ .maxstack 8 IL_0007: newobj 0x06000004 IL_000c: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -5883,6 +5939,7 @@ class C }); g.VerifyIL(""" + add_E, remove_E { // Code size 13 (0xd) .maxstack 8 @@ -5891,6 +5948,7 @@ .maxstack 8 IL_0007: newobj 0x06000006 IL_000c: throw } + add_F { // Code size 41 (0x29) .maxstack 3 @@ -5915,6 +5973,7 @@ .maxstack 3 IL_0026: bne.un.s IL_0007 IL_0028: ret } + remove_F { // Code size 41 (0x29) .maxstack 3 @@ -5939,6 +5998,7 @@ .maxstack 3 IL_0026: bne.un.s IL_0007 IL_0028: ret } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -6006,6 +6066,7 @@ class C }); g.VerifyIL(""" + add_E { // Code size 41 (0x29) .maxstack 3 @@ -6030,6 +6091,7 @@ .maxstack 3 IL_0026: bne.un.s IL_0007 IL_0028: ret } + remove_E { // Code size 41 (0x29) .maxstack 3 @@ -6054,6 +6116,7 @@ .maxstack 3 IL_0026: bne.un.s IL_0007 IL_0028: ret } + add_F, remove_F { // Code size 13 (0xd) .maxstack 8 @@ -12190,7 +12253,8 @@ class C Handle(4, TableIndex.CustomAttribute) ]); - var expectedIL = """ + g.VerifyIL(""" + op_LogicalNot { // Code size 13 (0xd) .maxstack 8 @@ -12199,6 +12263,7 @@ .maxstack 8 IL_0007: newobj 0x06000003 IL_000c: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -12211,10 +12276,7 @@ .maxstack 8 IL_000a: stfld 0x04000001 IL_000f: ret } - """; - - // Can't verify the IL of individual methods because that requires IMethodSymbolInternal implementations - g.VerifyIL(expectedIL); + """); }) .Verify(); } @@ -12447,8 +12509,9 @@ static string F() badStream, ilStream, pdbStream, + EmitDifferenceOptions.Default, new CompilationTestData(), - default); + CancellationToken.None); Assert.False(result.Success); result.Diagnostics.Verify( // error CS8104: An error occurred while writing the output file: System.IO.IOException: I/O error occurred. @@ -12462,8 +12525,9 @@ static string F() mdStream, badStream, pdbStream, + EmitDifferenceOptions.Default, new CompilationTestData(), - default); + CancellationToken.None); Assert.False(result.Success); result.Diagnostics.Verify( // error CS8104: An error occurred while writing the output file: System.IO.IOException: I/O error occurred. @@ -12477,8 +12541,9 @@ static string F() mdStream, ilStream, badStream, + EmitDifferenceOptions.Default, new CompilationTestData(), - default); + CancellationToken.None); Assert.False(result.Success); result.Diagnostics.Verify( // error CS0041: Unexpected error writing debug information -- 'I/O error occurred.' @@ -12532,8 +12597,9 @@ static string F() mdStream, ilStream, badStream, + EmitDifferenceOptions.Default, new CompilationTestData(), - default); + CancellationToken.None); Assert.False(result.Success); result.Diagnostics.Verify( // error CS0041: Unexpected error writing debug information -- 'I/O error occurred.' @@ -15990,6 +16056,7 @@ public void Records_AddPrimaryConstructorParameter() }); g.VerifyIL(""" + .ctor { // Code size 29 (0x1d) .maxstack 8 @@ -16007,6 +16074,7 @@ .maxstack 8 IL_001b: nop IL_001c: ret } + get_Q { // Code size 7 (0x7) .maxstack 8 @@ -16014,6 +16082,7 @@ .maxstack 8 IL_0001: ldfld 0x04000005 IL_0006: ret } + set_Q { // Code size 8 (0x8) .maxstack 8 @@ -16022,6 +16091,7 @@ .maxstack 8 IL_0002: stfld 0x04000005 IL_0007: ret } + Deconstruct { // Code size 25 (0x19) .maxstack 8 @@ -16108,6 +16178,7 @@ public void Records_AddProperty_NonPrimary() }); g.VerifyIL(""" + get_Q { // Code size 7 (0x7) .maxstack 8 @@ -16115,6 +16186,7 @@ .maxstack 8 IL_0001: ldfld 0x04000004 IL_0006: ret } + set_Q { // Code size 8 (0x8) .maxstack 8 @@ -16351,7 +16423,8 @@ class C g.VerifyTypeRefNames("Object"); g.VerifyIL(""" - { + F + { // Code size 13 (0xd) .maxstack 8 IL_0000: ldstr 0x70000005 @@ -16359,6 +16432,7 @@ .maxstack 8 IL_0007: newobj 0x06000004 IL_000c: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -16417,6 +16491,7 @@ void F2() {} g.VerifyTypeRefNames("Object"); g.VerifyIL(""" + F1 { // Code size 13 (0xd) .maxstack 8 @@ -16445,6 +16520,7 @@ class C g.VerifyTypeRefNames("Object"); g.VerifyIL(""" + F2 { // Code size 13 (0xd) .maxstack 8 @@ -16500,6 +16576,7 @@ void F2() {} g.VerifyTypeRefNames("Exception", "Object"); g.VerifyIL(""" + F1 { // Code size 13 (0xd) .maxstack 8 @@ -16508,6 +16585,7 @@ .maxstack 8 IL_0007: newobj 0x06000004 IL_000c: throw } + .ctor { // Code size 10 (0xa) .maxstack 8 @@ -16538,6 +16616,7 @@ class C g.VerifyTypeRefNames("Object"); g.VerifyIL(""" + F2 { // Code size 13 (0xd) .maxstack 8 @@ -16594,6 +16673,84 @@ void F2() {} .Verify(); } + [Fact] + public void Method_Delete_PredefinedHotReloadException_DataSectionLiterals() + { + var parseOptions = TestOptions.Regular.WithFeature("experimental-data-section-string-literals", "0"); + + var exceptionSource = """ + namespace System.Runtime.CompilerServices + { + public class HotReloadException : Exception + { + public HotReloadException(string message, int code) : base(message) {} + } + } + """; + + using var _ = new EditAndContinueTest(targetFramework: TargetFramework.Net90, verification: Verification.FailsPEVerify, parseOptions: parseOptions) + .AddBaseline( + source: exceptionSource + """ + class C + { + void F1() {} + void F2() {} + } + """) + .AddGeneration( + // 1 + source: exceptionSource + """ + class C + { + void F2() {} + } + """, + edits: + [ + Edit(SemanticEditKind.Delete, symbolProvider: c => c.GetMember("C.F1"), newSymbolProvider: c => c.GetMember("C")), + ], + validator: g => + { + g.VerifySynthesizedMembers(); + g.VerifyTypeDefNames("#1", "__StaticArrayInitTypeSize=163", "A70F5C822D3106BF474269B4991AB592"); + g.VerifyTypeRefNames("Object", "CompilerGeneratedAttribute", "ValueType", "Encoding"); + + g.VerifyIL(""" + F1 + { + // Code size 13 (0xd) + .maxstack 8 + IL_0000: ldsfld 0x04000002 + IL_0005: ldc.i4.s -2 + IL_0007: newobj 0x06000004 + IL_000c: throw + } + BytesToString + { + // Code size 13 (0xd) + .maxstack 8 + IL_0000: call 0x0A000008 + IL_0005: ldarg.0 + IL_0006: ldarg.1 + IL_0007: callvirt 0x0A000009 + IL_000c: ret + } + .cctor + { + // Code size 21 (0x15) + .maxstack 8 + IL_0000: ldsflda 0x04000001 + IL_0005: ldc.i4 0xa3 + IL_000a: call 0x06000005 + IL_000f: stsfld 0x04000002 + IL_0014: ret + } + """); + }, + options: new EmitDifferenceOptions() { EmitFieldRva = true }) + .Verify(); + } + [Theory] [InlineData("void M1() { }")] [InlineData("void M1(string s) { }")] @@ -16665,7 +16822,8 @@ class N Handle(4, TableIndex.CustomAttribute) ]); - var expectedIL = """ + g.VerifyIL(""" + M1 { // Code size 13 (0xd) .maxstack 8 @@ -16674,6 +16832,7 @@ .maxstack 8 IL_0007: newobj 0x06000004 IL_000c: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -16686,10 +16845,7 @@ .maxstack 8 IL_000a: stfld 0x04000001 IL_000f: ret } - """; - - // Can't verify the IL of individual methods because that requires IMethodSymbolInternal implementations - g.VerifyIL(expectedIL); + """); }) .Verify(); } @@ -16737,17 +16893,15 @@ void M2() { } Handle(3, TableIndex.MethodDef), }); - var expectedIL = """ + g.VerifyIL(""" + M2 { // Code size 2 (0x2) .maxstack 8 IL_0000: nop IL_0001: ret } - """; - - // Can't verify the IL of individual methods because that requires IMethodSymbolInternal implementations - g.VerifyIL(expectedIL); + """); }) .AddGeneration( @@ -16784,7 +16938,8 @@ void M1() { } Handle(4, TableIndex.CustomAttribute) }); - var expectedIL = """ + g.VerifyIL(""" + M2 { // Code size 13 (0xd) .maxstack 8 @@ -16793,6 +16948,7 @@ .maxstack 8 IL_0007: newobj 0x06000004 IL_000c: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -16805,10 +16961,7 @@ .maxstack 8 IL_000a: stfld 0x04000001 IL_000f: ret } - """; - - // Can't verify the IL of individual methods because that requires IMethodSymbolInternal implementations - g.VerifyIL(expectedIL); + """); }) .Verify(); } @@ -16863,7 +17016,8 @@ class C Handle(4, TableIndex.CustomAttribute) }); - var expectedIL = """ + g.VerifyIL(""" + M1 { // Code size 13 (0xd) .maxstack 8 @@ -16872,6 +17026,7 @@ .maxstack 8 IL_0007: newobj 0x06000003 IL_000c: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -16884,10 +17039,7 @@ .maxstack 8 IL_000a: stfld 0x04000001 IL_000f: ret } - """; - - // Can't verify the IL of individual methods because that requires IMethodSymbolInternal implementations - g.VerifyIL(expectedIL); + """); }) .AddGeneration( @@ -16914,6 +17066,7 @@ class C }); g.VerifyIL(""" + M1 { // Code size 9 (0x9) .maxstack 8 @@ -16992,8 +17145,9 @@ class C new CustomAttributeRow(Handle(5, TableIndex.TypeDef), Handle(6, TableIndex.MemberRef)) ]); - var expectedIL = """ - { + g.VerifyIL(""" + M1 + { // Code size 13 (0xd) .maxstack 8 IL_0000: ldstr 0x70000005 @@ -17001,6 +17155,7 @@ .maxstack 8 IL_0007: newobj 0x06000005 IL_000c: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -17013,10 +17168,7 @@ .maxstack 8 IL_000a: stfld 0x04000001 IL_000f: ret } - """; - - // Can't verify the IL of individual methods because that requires IMethodSymbolInternal implementations - g.VerifyIL(expectedIL); + """); }) .AddGeneration( @@ -17064,17 +17216,15 @@ void M1([B]int x) { } new CustomAttributeRow(Handle(3, TableIndex.MethodDef), Handle(2, TableIndex.MethodDef)) }); - var expectedIL = """ + g.VerifyIL(""" + M1 { // Code size 2 (0x2) .maxstack 8 IL_0000: nop IL_0001: ret } - """; - - // Can't verify the IL of individual methods because that requires IMethodSymbolInternal implementations - g.VerifyIL(expectedIL); + """); }) .Verify(); } @@ -17128,7 +17278,8 @@ void Goo() { } Handle(1, TableIndex.StandAloneSig) }); - var expectedIL = """ + g.VerifyIL(""" + M1 { // Code size 7 (0x7) .maxstack 1 @@ -17139,10 +17290,7 @@ .maxstack 1 IL_0005: ldloc.0 IL_0006: ret } - """; - - // Can't verify the IL of individual methods because that requires IMethodSymbolInternal implementations - g.VerifyIL(expectedIL); + """); }) .AddGeneration( @@ -17181,7 +17329,8 @@ void Goo() { } Handle(4, TableIndex.CustomAttribute) }); - var expectedIL = """ + g.VerifyIL(""" + M1 { // Code size 13 (0xd) .maxstack 8 @@ -17190,6 +17339,7 @@ .maxstack 8 IL_0007: newobj 0x06000004 IL_000c: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -17202,10 +17352,7 @@ .maxstack 8 IL_000a: stfld 0x04000001 IL_000f: ret } - """; - - // Can't verify the IL of individual methods because that requires IMethodSymbolInternal implementations - g.VerifyIL(expectedIL); + """); }) @@ -17238,7 +17385,8 @@ void Goo() { } Handle(2, TableIndex.StandAloneSig) }); - var expectedIL = """ + g.VerifyIL(""" + M1 { // Code size 14 (0xe) .maxstack 1 @@ -17252,10 +17400,7 @@ .maxstack 1 IL_000c: ldloc.0 IL_000d: ret } - """; - - // Can't verify the IL of individual methods because that requires IMethodSymbolInternal implementations - g.VerifyIL(expectedIL); + """); }) .Verify(); } @@ -17324,6 +17469,7 @@ class C }); g.VerifyIL(""" + F { // Code size 13 (0xd) .maxstack 8 @@ -17332,6 +17478,7 @@ .maxstack 8 IL_0007: newobj 0x06000006 IL_000c: throw } + b__0_0 { // Code size 12 (0xc) .maxstack 8 @@ -17340,6 +17487,7 @@ .maxstack 8 IL_0006: newobj 0x06000006 IL_000b: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -17398,6 +17546,7 @@ class C }); g.VerifyIL(""" + F { // Code size 30 (0x1e) .maxstack 8 @@ -17410,6 +17559,7 @@ .maxstack 8 IL_0018: stsfld 0x04000004 IL_001d: ret } + .ctor { // Code size 8 (0x8) .maxstack 8 @@ -17418,6 +17568,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + b__0#2_0#2 { // Code size 8 (0x8) .maxstack 8 @@ -17467,6 +17618,7 @@ class C }); g.VerifyIL(""" + F { // Code size 13 (0xd) .maxstack 8 @@ -17475,6 +17627,7 @@ .maxstack 8 IL_0007: newobj 0x06000006 IL_000c: throw } + b__0#2_0#2 { // Code size 12 (0xc) .maxstack 8 @@ -17576,7 +17729,8 @@ class C }); g.VerifyIL(""" - { + F + { // Code size 13 (0xd) .maxstack 8 IL_0000: ldstr 0x70000009 @@ -17584,6 +17738,7 @@ .maxstack 8 IL_0007: newobj 0x06000006 IL_000c: throw } + b__0#1_0#1 { // Code size 12 (0xc) .maxstack 8 @@ -17592,6 +17747,7 @@ .maxstack 8 IL_0006: newobj 0x06000006 IL_000b: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -17754,6 +17910,7 @@ class C }); g.VerifyIL(""" + F { // Code size 13 (0xd) .maxstack 8 @@ -17762,6 +17919,7 @@ .maxstack 8 IL_0007: newobj 0x0600000C IL_000c: throw } + b__0_0, b__0_1#1, b__0_2#2 { // Code size 12 (0xc) .maxstack 8 @@ -17770,6 +17928,7 @@ .maxstack 8 IL_0006: newobj 0x0600000C IL_000b: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -17816,6 +17975,7 @@ void F<[A]S>([A]T a, S b) where S : struct g.VerifyMemberRefNames(".ctor", "<>9__0#4_0#4", "<>9", "b__0#4_0#4", ".ctor", ".ctor", "<>9", ".ctor", "WriteLine"); g.VerifyIL(""" + F { // Code size 30 (0x1e) .maxstack 8 @@ -17828,6 +17988,7 @@ .maxstack 8 IL_0018: stsfld 0x0A000026 IL_001d: ret } + .cctor { // Code size 11 (0xb) .maxstack 8 @@ -17835,6 +17996,7 @@ .maxstack 8 IL_0005: stsfld 0x0A00002B IL_000a: ret } + .ctor { // Code size 8 (0x8) .maxstack 8 @@ -17843,6 +18005,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + b__0#4_0#4 { // Code size 8 (0x8) .maxstack 8 @@ -17896,6 +18059,7 @@ class C }); g.VerifyIL(""" + F { // Code size 13 (0xd) .maxstack 8 @@ -17904,6 +18068,7 @@ .maxstack 8 IL_0007: newobj 0x0600000C IL_000c: throw } + b__0#4_0#4 { // Code size 12 (0xc) .maxstack 8 @@ -18029,6 +18194,7 @@ class C }); g.VerifyIL(""" + F { // Code size 13 (0xd) .maxstack 8 @@ -18037,6 +18203,7 @@ .maxstack 8 IL_0007: newobj 0x06000009 IL_000c: throw } + g__L|0_0, g__M|0_1#1 { // Code size 12 (0xc) .maxstack 8 @@ -18045,6 +18212,7 @@ .maxstack 8 IL_0006: newobj 0x06000009 IL_000b: throw } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -18096,6 +18264,7 @@ ref readonly T O(ref readonly T b) g.VerifyMemberRefNames(".ctor", ".ctor", "x", "g__O|0#3", ".ctor", "g__N|0#3_1#3"); g.VerifyIL(""" + F { // Code size 29 (0x1d) .maxstack 2 @@ -18113,12 +18282,14 @@ .maxstack 2 IL_001b: pop IL_001c: ret } + g__N|0#3_1#3 { // Code size 2 (0x2) .maxstack 8 IL_0000: ldarg.0 IL_0001: ret } + .ctor { // Code size 8 (0x8) .maxstack 8 @@ -18127,6 +18298,7 @@ .maxstack 8 IL_0006: nop IL_0007: ret } + g__O|0#3 { // Code size 9 (0x9) .maxstack 1 @@ -18139,6 +18311,7 @@ .maxstack 1 IL_0007: ldloc.0 IL_0008: ret } + b__2#3 { // Code size 12 (0xc) .maxstack 8 @@ -18187,6 +18360,7 @@ class C ]); g.VerifyIL(""" + F { // Code size 13 (0xd) .maxstack 8 @@ -18195,6 +18369,7 @@ .maxstack 8 IL_0007: newobj 0x06000009 IL_000c: throw } + g__N|0#3_1#3, g__O|0#3, b__2#3 { // Code size 12 (0xc) .maxstack 8 @@ -18334,6 +18509,7 @@ class C }); g.VerifyIL(""" + M { // Code size 13 (0xd) .maxstack 8 @@ -18342,6 +18518,7 @@ .maxstack 8 IL_0007: newobj 0x06000004 IL_000c: throw } + M { // Code size 10 (0xa) .maxstack 8 @@ -18351,6 +18528,7 @@ .maxstack 8 IL_0008: pop IL_0009: ret } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -18398,6 +18576,7 @@ class C }); g.VerifyIL(""" + M { // Code size 10 (0xa) .maxstack 8 @@ -18407,6 +18586,7 @@ .maxstack 8 IL_0008: pop IL_0009: ret } + M { // Code size 13 (0xd) .maxstack 8 @@ -18483,6 +18663,7 @@ class C }); g.VerifyIL(""" + M { // Code size 13 (0xd) .maxstack 8 @@ -18491,6 +18672,7 @@ .maxstack 8 IL_0007: newobj 0x06000004 IL_000c: throw } + M { // Code size 7 (0x7) .maxstack 1 @@ -18501,6 +18683,7 @@ .maxstack 1 IL_0005: ldloc.0 IL_0006: ret } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -18549,6 +18732,7 @@ class C }); g.VerifyIL(""" + M { // Code size 13 (0xd) .maxstack 1 @@ -18560,6 +18744,7 @@ .maxstack 1 IL_000b: ldloc.0 IL_000c: ret } + M { // Code size 13 (0xd) .maxstack 8 @@ -18637,6 +18822,7 @@ class C }); g.VerifyIL(""" + M { // Code size 13 (0xd) .maxstack 8 @@ -18645,6 +18831,7 @@ .maxstack 8 IL_0007: newobj 0x06000004 IL_000c: throw } + M { // Code size 10 (0xa) .maxstack 8 @@ -18654,6 +18841,7 @@ .maxstack 8 IL_0008: pop IL_0009: ret } + .ctor { // Code size 16 (0x10) .maxstack 8 @@ -18700,6 +18888,7 @@ class C }); g.VerifyIL(""" + M { // Code size 10 (0xa) .maxstack 8 @@ -18709,6 +18898,7 @@ .maxstack 8 IL_0008: pop IL_0009: ret } + M { // Code size 13 (0xd) .maxstack 8 @@ -19129,7 +19319,7 @@ .locals init (System.Span V_0, //x [Fact] [WorkItem("https://github.com/dotnet/roslyn/issues/69480")] - public void PrivateImplDetails_DataFields_Arrays() + public void PrivateImplDetails_DataFields_Arrays_FieldRvaNotSupported() { using var _ = new EditAndContinueTest() .AddBaseline( @@ -19233,7 +19423,95 @@ .maxstack 5 [Fact] [WorkItem("https://github.com/dotnet/roslyn/issues/69480")] - public void PrivateImplDetails_DataFields_StackAlloc() + public void PrivateImplDetails_DataFields_Arrays_FieldRvaSupported() + { + using var _ = new EditAndContinueTest() + .AddBaseline( + source: $$""" + class C + { + byte[] b = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; + } + """, + validator: g => + { + g.VerifyTypeDefNames("", "C", "", "__StaticArrayInitTypeSize=10"); + g.VerifyFieldDefNames("b", "1F825AA2F0020EF7CF91DFA30DA4668D791C5D4824FC8E41354B89EC05795AB3"); + g.VerifyMethodDefNames(".ctor"); + }) + + .AddGeneration( + source: """ + class C + { + byte[] b = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; + } + """, + edits: new[] + { + Edit(SemanticEditKind.Update, symbolProvider: c => c.GetParameterlessConstructor("C")), + }, + validator: g => + { + g.VerifyTypeDefNames("#1", "__StaticArrayInitTypeSize=11"); + g.VerifyFieldDefNames("78A6273103D17C39A0B6126E226CEC70E33337F4BC6A38067401B54A33E78EAD"); + g.VerifyMethodDefNames(".ctor"); + + g.VerifyEncLogDefinitions(new[] + { + Row(5, TableIndex.TypeDef, EditAndContinueOperation.Default), + Row(6, TableIndex.TypeDef, EditAndContinueOperation.Default), + Row(5, TableIndex.TypeDef, EditAndContinueOperation.AddField), + Row(3, TableIndex.Field, EditAndContinueOperation.Default), + Row(1, TableIndex.MethodDef, EditAndContinueOperation.Default), + Row(5, TableIndex.CustomAttribute, EditAndContinueOperation.Default), + Row(2, TableIndex.ClassLayout, EditAndContinueOperation.Default), + Row(2, TableIndex.FieldRva, EditAndContinueOperation.Default), + Row(2, TableIndex.NestedClass, EditAndContinueOperation.Default) + }); + + g.VerifyEncMapDefinitions(new[] + { + Handle(5, TableIndex.TypeDef), + Handle(6, TableIndex.TypeDef), + Handle(3, TableIndex.Field), + Handle(1, TableIndex.MethodDef), + Handle(5, TableIndex.CustomAttribute), + Handle(2, TableIndex.ClassLayout), + Handle(2, TableIndex.FieldRva), + Handle(2, TableIndex.NestedClass) + }); + + g.VerifyIL("C..ctor", """ + { + // Code size 32 (0x20) + .maxstack 4 + IL_0000: ldarg.0 + IL_0001: ldc.i4.s 11 + IL_0003: newarr "byte" + IL_0008: dup + IL_0009: ldtoken "#1.__StaticArrayInitTypeSize=11 #1.78A6273103D17C39A0B6126E226CEC70E33337F4BC6A38067401B54A33E78EAD" + IL_000e: call "void System.Runtime.CompilerServices.RuntimeHelpers.InitializeArray(System.Array, System.RuntimeFieldHandle)" + IL_0013: stfld "byte[] C.b" + IL_0018: ldarg.0 + IL_0019: call "object..ctor()" + IL_001e: nop + IL_001f: ret + } + """); + + // trailing zeros for alignment: + g.VerifyEncFieldRvaData(""" + 78A6273103D17C39A0B6126E226CEC70E33337F4BC6A38067401B54A33E78EAD: 00-01-02-03-04-05-06-07-08-09-0A-00-00 + """); + }, + options: new EmitDifferenceOptions() { EmitFieldRva = true }) + .Verify(); + } + + [Fact] + [WorkItem("https://github.com/dotnet/roslyn/issues/69480")] + public void PrivateImplDetails_DataFields_StackAlloc_FieldRvaNotSupported() { using var _ = new EditAndContinueTest(targetFramework: TargetFramework.Net80, verification: Verification.Skipped) .AddBaseline( @@ -19342,20 +19620,20 @@ .locals init (System.ReadOnlySpan V_0, //b [Fact] [WorkItem("https://github.com/dotnet/roslyn/issues/69480")] - public void PrivateImplDetails_DataFields_Utf8() + public void PrivateImplDetails_DataFields_StackAlloc_FieldRvaSupported() { using var _ = new EditAndContinueTest(targetFramework: TargetFramework.Net80, verification: Verification.Skipped) .AddBaseline( - source: """ + source: $$""" class C { - System.ReadOnlySpan F() => "0123456789"u8; + void F() { System.ReadOnlySpan b = stackalloc byte[] { 0, 1, 2, 3, 4, 5, 6 }; } } """, validator: g => { - g.VerifyTypeDefNames("", "C", "", "__StaticArrayInitTypeSize=11"); - g.VerifyFieldDefNames("BEB0DBD1C6FAC1140DD817514F2FBDF501E246BF16C8E877E71187E9EB008189"); + g.VerifyTypeDefNames("", "C", "", "__StaticArrayInitTypeSize=7"); + g.VerifyFieldDefNames("57355AC3303C148F11AEF7CB179456B9232CDE33A818DFDA2C2FCB9325749A6B"); g.VerifyMethodDefNames("F", ".ctor"); }) @@ -19363,7 +19641,7 @@ class C source: """ class C { - System.ReadOnlySpan F() => "0123456789X"u8; + void F() { System.ReadOnlySpan b = stackalloc byte[] { 0, 1, 2, 3, 4, 5, 6, 7 }; } } """, edits: new[] @@ -19372,49 +19650,140 @@ class C }, validator: g => { - g.VerifyTypeDefNames(); - g.VerifyFieldDefNames(); + g.VerifyTypeDefNames("#1"); + g.VerifyFieldDefNames("8A851FF82EE7048AD09EC3847F1DDF44944104D2CBD17EF4E3DB22C6785A0D45"); g.VerifyMethodDefNames("F"); g.VerifyEncLogDefinitions(new[] { - Row(1, TableIndex.MethodDef, EditAndContinueOperation.Default) + Row(2, TableIndex.StandAloneSig, EditAndContinueOperation.Default), + Row(5, TableIndex.TypeDef, EditAndContinueOperation.Default), + Row(5, TableIndex.TypeDef, EditAndContinueOperation.AddField), + Row(2, TableIndex.Field, EditAndContinueOperation.Default), + Row(1, TableIndex.MethodDef, EditAndContinueOperation.Default), + Row(5, TableIndex.CustomAttribute, EditAndContinueOperation.Default), + Row(2, TableIndex.FieldRva, EditAndContinueOperation.Default) }); g.VerifyEncMapDefinitions(new[] { - Handle(1, TableIndex.MethodDef) + Handle(5, TableIndex.TypeDef), + Handle(2, TableIndex.Field), + Handle(1, TableIndex.MethodDef), + Handle(5, TableIndex.CustomAttribute), + Handle(2, TableIndex.StandAloneSig), + Handle(2, TableIndex.FieldRva) }); g.VerifyIL("C.F", """ { - // Code size 73 (0x49) + // Code size 32 (0x20) .maxstack 4 - IL_0000: ldc.i4.s 12 - IL_0002: newarr "byte" - IL_0007: dup - IL_0008: ldc.i4.0 - IL_0009: ldc.i4.s 48 - IL_000b: stelem.i1 - IL_000c: dup - IL_000d: ldc.i4.1 - IL_000e: ldc.i4.s 49 - IL_0010: stelem.i1 - IL_0011: dup - IL_0012: ldc.i4.2 - IL_0013: ldc.i4.s 50 - IL_0015: stelem.i1 - IL_0016: dup - IL_0017: ldc.i4.3 - IL_0018: ldc.i4.s 51 - IL_001a: stelem.i1 - IL_001b: dup - IL_001c: ldc.i4.4 - IL_001d: ldc.i4.s 52 - IL_001f: stelem.i1 - IL_0020: dup - IL_0021: ldc.i4.5 - IL_0022: ldc.i4.s 53 + .locals init (System.ReadOnlySpan V_0, //b + System.Span V_1) + IL_0000: nop + IL_0001: ldc.i4.8 + IL_0002: conv.u + IL_0003: localloc + IL_0005: dup + IL_0006: ldsflda "long #1.8A851FF82EE7048AD09EC3847F1DDF44944104D2CBD17EF4E3DB22C6785A0D45" + IL_000b: ldc.i4.8 + IL_000c: unaligned. 1 + IL_000f: cpblk + IL_0011: ldc.i4.8 + IL_0012: newobj "System.Span..ctor(void*, int)" + IL_0017: stloc.1 + IL_0018: ldloc.1 + IL_0019: call "System.ReadOnlySpan System.Span.op_Implicit(System.Span)" + IL_001e: stloc.0 + IL_001f: ret + } + """); + + // trailing zeros for alignment: + g.VerifyEncFieldRvaData(""" + 8A851FF82EE7048AD09EC3847F1DDF44944104D2CBD17EF4E3DB22C6785A0D45: 00-01-02-03-04-05-06-07 + """); + }, + options: new EmitDifferenceOptions() { EmitFieldRva = true }) + .Verify(); + } + + [Fact] + [WorkItem("https://github.com/dotnet/roslyn/issues/69480")] + public void PrivateImplDetails_DataFields_Utf8_FieldRvaNotSupported() + { + using var _ = new EditAndContinueTest(targetFramework: TargetFramework.Net80, verification: Verification.Skipped) + .AddBaseline( + source: """ + class C + { + System.ReadOnlySpan F() => "0123456789"u8; + } + """, + validator: g => + { + g.VerifyTypeDefNames("", "C", "", "__StaticArrayInitTypeSize=11"); + g.VerifyFieldDefNames("BEB0DBD1C6FAC1140DD817514F2FBDF501E246BF16C8E877E71187E9EB008189"); + g.VerifyMethodDefNames("F", ".ctor"); + }) + + .AddGeneration( + source: """ + class C + { + System.ReadOnlySpan F() => "0123456789X"u8; + } + """, + edits: new[] + { + Edit(SemanticEditKind.Update, symbolProvider: c => c.GetMember("C.F")), + }, + validator: g => + { + g.VerifyTypeDefNames(); + g.VerifyFieldDefNames(); + g.VerifyMethodDefNames("F"); + + g.VerifyEncLogDefinitions(new[] + { + Row(1, TableIndex.MethodDef, EditAndContinueOperation.Default) + }); + + g.VerifyEncMapDefinitions(new[] + { + Handle(1, TableIndex.MethodDef) + }); + + g.VerifyIL("C.F", """ + { + // Code size 73 (0x49) + .maxstack 4 + IL_0000: ldc.i4.s 12 + IL_0002: newarr "byte" + IL_0007: dup + IL_0008: ldc.i4.0 + IL_0009: ldc.i4.s 48 + IL_000b: stelem.i1 + IL_000c: dup + IL_000d: ldc.i4.1 + IL_000e: ldc.i4.s 49 + IL_0010: stelem.i1 + IL_0011: dup + IL_0012: ldc.i4.2 + IL_0013: ldc.i4.s 50 + IL_0015: stelem.i1 + IL_0016: dup + IL_0017: ldc.i4.3 + IL_0018: ldc.i4.s 51 + IL_001a: stelem.i1 + IL_001b: dup + IL_001c: ldc.i4.4 + IL_001d: ldc.i4.s 52 + IL_001f: stelem.i1 + IL_0020: dup + IL_0021: ldc.i4.5 + IL_0022: ldc.i4.s 53 IL_0024: stelem.i1 IL_0025: dup IL_0026: ldc.i4.6 @@ -19446,6 +19815,493 @@ .maxstack 4 .Verify(); } + [Fact] + [WorkItem("https://github.com/dotnet/roslyn/issues/69480")] + public void PrivateImplDetails_DataFields_Utf8_FieldRvaSupported() + { + using var _ = new EditAndContinueTest(targetFramework: TargetFramework.Net80, verification: Verification.Skipped) + .AddBaseline( + source: """ + class C + { + System.ReadOnlySpan F() => "0123456789"u8; + } + """, + validator: g => + { + g.VerifyTypeDefNames("", "C", "", "__StaticArrayInitTypeSize=11"); + g.VerifyFieldDefNames("BEB0DBD1C6FAC1140DD817514F2FBDF501E246BF16C8E877E71187E9EB008189"); + g.VerifyMethodDefNames("F", ".ctor"); + }) + + .AddGeneration( + source: """ + class C + { + System.ReadOnlySpan F() => "0123456789X"u8; + } + """, + edits: new[] + { + Edit(SemanticEditKind.Update, symbolProvider: c => c.GetMember("C.F")), + }, + validator: g => + { + g.VerifyTypeDefNames("#1", "__StaticArrayInitTypeSize=12"); + g.VerifyFieldDefNames("AFB1C33C5229BFF7EF739BA44DA795A2B68A49E06001C07C5B026CAA6C6322BB"); + g.VerifyMethodDefNames("F"); + + g.VerifyEncLogDefinitions(new[] + { + Row(5, TableIndex.TypeDef, EditAndContinueOperation.Default), + Row(6, TableIndex.TypeDef, EditAndContinueOperation.Default), + Row(5, TableIndex.TypeDef, EditAndContinueOperation.AddField), + Row(2, TableIndex.Field, EditAndContinueOperation.Default), + Row(1, TableIndex.MethodDef, EditAndContinueOperation.Default), + Row(5, TableIndex.CustomAttribute, EditAndContinueOperation.Default), + Row(2, TableIndex.ClassLayout, EditAndContinueOperation.Default), + Row(2, TableIndex.FieldRva, EditAndContinueOperation.Default), + Row(2, TableIndex.NestedClass, EditAndContinueOperation.Default) + }); + + g.VerifyEncMapDefinitions(new[] + { + Handle(5, TableIndex.TypeDef), + Handle(6, TableIndex.TypeDef), + Handle(2, TableIndex.Field), + Handle(1, TableIndex.MethodDef), + Handle(5, TableIndex.CustomAttribute), + Handle(2, TableIndex.ClassLayout), + Handle(2, TableIndex.FieldRva), + Handle(2, TableIndex.NestedClass) + }); + + g.VerifyIL("C.F", """ + { + // Code size 13 (0xd) + .maxstack 2 + IL_0000: ldsflda "#1.__StaticArrayInitTypeSize=12 #1.AFB1C33C5229BFF7EF739BA44DA795A2B68A49E06001C07C5B026CAA6C6322BB" + IL_0005: ldc.i4.s 11 + IL_0007: newobj "System.ReadOnlySpan..ctor(void*, int)" + IL_000c: ret + } + """); + + // trailing zeros for alignment: + g.VerifyEncFieldRvaData($""" + AFB1C33C5229BFF7EF739BA44DA795A2B68A49E06001C07C5B026CAA6C6322BB: {BitConverter.ToString(Encoding.UTF8.GetBytes("0123456789X"))}-00-00-00-00-00-00-00 + """); + }, + options: new EmitDifferenceOptions() { EmitFieldRva = true }) + .Verify(); + } + + [Fact] + [WorkItem("https://github.com/dotnet/roslyn/issues/69480")] + public void PrivateImplDetails_DataSectionStringLiterals_FieldRvaSupported() + { + var parseOptions = TestOptions.Regular.WithFeature("experimental-data-section-string-literals", "0"); + + using var _ = new EditAndContinueTest(targetFramework: TargetFramework.Net90, verification: Verification.Skipped, parseOptions: parseOptions) + .AddBaseline( + source: """ + class C + { + string F() => "0123456789"; + } + """, + validator: g => + { + g.VerifyTypeDefNames("", "C", "", "__StaticArrayInitTypeSize=10", "E353667619EC664B49655FC9692165FB"); + g.VerifyFieldDefNames("84D89877F0D4041EFB6BF91A16F0248F2FD573E6AF05C19F96BEDB9F882F7882", "s"); + g.VerifyMethodDefNames("F", ".ctor", "BytesToString", ".cctor"); + }) + .AddGeneration( + source: """ + class C + { + string F() => "0123456789X"; + } + """, + edits: + [ + Edit(SemanticEditKind.Update, symbolProvider: c => c.GetMember("C.F")), + ], + validator: g => + { + g.VerifyTypeDefNames("#1", "__StaticArrayInitTypeSize=11", "6D2201523542AEFFB91657B2AEBDC84B"); + g.VerifyFieldDefNames("ACE59E7D984CCEB2D860A056A3386344236CE5C42C978E26ECE3F35956DAC3AD", "s"); + g.VerifyMethodDefNames("F", "BytesToString", ".cctor"); + + g.VerifyEncLogDefinitions( + [ + Row(6, TableIndex.TypeDef, EditAndContinueOperation.Default), + Row(7, TableIndex.TypeDef, EditAndContinueOperation.Default), + Row(8, TableIndex.TypeDef, EditAndContinueOperation.Default), + Row(6, TableIndex.TypeDef, EditAndContinueOperation.AddField), + Row(3, TableIndex.Field, EditAndContinueOperation.Default), + Row(8, TableIndex.TypeDef, EditAndContinueOperation.AddField), + Row(4, TableIndex.Field, EditAndContinueOperation.Default), + Row(1, TableIndex.MethodDef, EditAndContinueOperation.Default), + Row(6, TableIndex.TypeDef, EditAndContinueOperation.AddMethod), + Row(5, TableIndex.MethodDef, EditAndContinueOperation.Default), + Row(8, TableIndex.TypeDef, EditAndContinueOperation.AddMethod), + Row(6, TableIndex.MethodDef, EditAndContinueOperation.Default), + Row(5, TableIndex.MethodDef, EditAndContinueOperation.AddParameter), + Row(3, TableIndex.Param, EditAndContinueOperation.Default), + Row(5, TableIndex.MethodDef, EditAndContinueOperation.AddParameter), + Row(4, TableIndex.Param, EditAndContinueOperation.Default), + Row(6, TableIndex.CustomAttribute, EditAndContinueOperation.Default), + Row(2, TableIndex.ClassLayout, EditAndContinueOperation.Default), + Row(2, TableIndex.FieldRva, EditAndContinueOperation.Default), + Row(3, TableIndex.NestedClass, EditAndContinueOperation.Default), + Row(4, TableIndex.NestedClass, EditAndContinueOperation.Default) + ]); + + g.VerifyEncMapDefinitions( + [ + Handle(6, TableIndex.TypeDef), + Handle(7, TableIndex.TypeDef), + Handle(8, TableIndex.TypeDef), + Handle(3, TableIndex.Field), + Handle(4, TableIndex.Field), + Handle(1, TableIndex.MethodDef), + Handle(5, TableIndex.MethodDef), + Handle(6, TableIndex.MethodDef), + Handle(3, TableIndex.Param), + Handle(4, TableIndex.Param), + Handle(6, TableIndex.CustomAttribute), + Handle(2, TableIndex.ClassLayout), + Handle(2, TableIndex.FieldRva), + Handle(3, TableIndex.NestedClass), + Handle(4, TableIndex.NestedClass) + ]); + + g.VerifyIL("C.F", """ + { + // Code size 6 (0x6) + .maxstack 1 + IL_0000: ldsfld "string #1.6D2201523542AEFFB91657B2AEBDC84B.s" + IL_0005: ret + } + """); + + // trailing zeros for alignment: + g.VerifyEncFieldRvaData($""" + ACE59E7D984CCEB2D860A056A3386344236CE5C42C978E26ECE3F35956DAC3AD: {BitConverter.ToString(Encoding.UTF8.GetBytes("0123456789X"))}-00 + """); + }, + options: new EmitDifferenceOptions() { EmitFieldRva = true }) + .Verify(); + } + + [Fact] + [WorkItem("https://github.com/dotnet/roslyn/issues/69480")] + public void PrivateImplDetails_DataSectionStringLiterals_FieldRvaNotSupported() + { + var parseOptions = TestOptions.Regular.WithFeature("experimental-data-section-string-literals", "0"); + + using var _ = new EditAndContinueTest(targetFramework: TargetFramework.Net90, verification: Verification.Skipped, parseOptions: parseOptions) + .AddBaseline( + source: """ + class C + { + string F() => "0123456789"; + } + """, + validator: g => + { + g.VerifyTypeDefNames("", "C", "", "__StaticArrayInitTypeSize=10", "E353667619EC664B49655FC9692165FB"); + g.VerifyFieldDefNames("84D89877F0D4041EFB6BF91A16F0248F2FD573E6AF05C19F96BEDB9F882F7882", "s"); + g.VerifyMethodDefNames("F", ".ctor", "BytesToString", ".cctor"); + }) + .AddGeneration( + source: """ + class C + { + string F() => "0123456789X"; + } + """, + edits: + [ + Edit(SemanticEditKind.Update, symbolProvider: c => c.GetMember("C.F")), + ], + validator: g => + { + g.VerifyTypeDefNames(); + g.VerifyFieldDefNames(); + g.VerifyMethodDefNames("F"); + + g.VerifyEncLogDefinitions( + [ + Row(1, TableIndex.MethodDef, EditAndContinueOperation.Default) + ]); + + g.VerifyEncMapDefinitions( + [ + Handle(1, TableIndex.MethodDef) + ]); + + g.VerifyIL("C.F", """ + { + // Code size 6 (0x6) + .maxstack 1 + IL_0000: ldstr "0123456789X" + IL_0005: ret + } + """); + }) + .Verify(); + } + + [Fact] + [WorkItem("https://github.com/dotnet/roslyn/issues/69480")] + public void PrivateImplDetails_DataSectionStringLiterals_HeapOverflow_FieldRvaSupported() + { + // The longest string that can fit in the #US heap. The next string would overflow the heap. + var baseString = new string('x', (1 << 23) - 3); + + using var _ = new EditAndContinueTest(targetFramework: TargetFramework.Net90, verification: Verification.Skipped) + .AddBaseline( + source: $$""" + class C + { + string F() => "{{baseString}}"; + } + """, + validator: g => + { + g.VerifyTypeDefNames("", "C"); + g.VerifyFieldDefNames(); + g.VerifyMethodDefNames("F", ".ctor"); + }) + .AddGeneration( + source: """ + class C + { + string F() => "0123456789"; + } + """, + edits: + [ + Edit(SemanticEditKind.Update, symbolProvider: c => c.GetMember("C.F")), + ], + validator: g => + { + g.VerifyTypeDefNames("#1", "__StaticArrayInitTypeSize=10", "E353667619EC664B49655FC9692165FB"); + g.VerifyFieldDefNames("84D89877F0D4041EFB6BF91A16F0248F2FD573E6AF05C19F96BEDB9F882F7882", "s"); + g.VerifyMethodDefNames("F", "BytesToString", ".cctor"); + + g.VerifyEncLogDefinitions( + [ + Row(3, TableIndex.TypeDef, EditAndContinueOperation.Default), + Row(4, TableIndex.TypeDef, EditAndContinueOperation.Default), + Row(5, TableIndex.TypeDef, EditAndContinueOperation.Default), + Row(3, TableIndex.TypeDef, EditAndContinueOperation.AddField), + Row(1, TableIndex.Field, EditAndContinueOperation.Default), + Row(5, TableIndex.TypeDef, EditAndContinueOperation.AddField), + Row(2, TableIndex.Field, EditAndContinueOperation.Default), + Row(1, TableIndex.MethodDef, EditAndContinueOperation.Default), + Row(3, TableIndex.TypeDef, EditAndContinueOperation.AddMethod), + Row(3, TableIndex.MethodDef, EditAndContinueOperation.Default), + Row(5, TableIndex.TypeDef, EditAndContinueOperation.AddMethod), + Row(4, TableIndex.MethodDef, EditAndContinueOperation.Default), + Row(3, TableIndex.MethodDef, EditAndContinueOperation.AddParameter), + Row(1, TableIndex.Param, EditAndContinueOperation.Default), + Row(3, TableIndex.MethodDef, EditAndContinueOperation.AddParameter), + Row(2, TableIndex.Param, EditAndContinueOperation.Default), + Row(4, TableIndex.CustomAttribute, EditAndContinueOperation.Default), + Row(1, TableIndex.ClassLayout, EditAndContinueOperation.Default), + Row(1, TableIndex.FieldRva, EditAndContinueOperation.Default), + Row(1, TableIndex.NestedClass, EditAndContinueOperation.Default), + Row(2, TableIndex.NestedClass, EditAndContinueOperation.Default) + ]); + + g.VerifyEncMapDefinitions( + [ + Handle(3, TableIndex.TypeDef), + Handle(4, TableIndex.TypeDef), + Handle(5, TableIndex.TypeDef), + Handle(1, TableIndex.Field), + Handle(2, TableIndex.Field), + Handle(1, TableIndex.MethodDef), + Handle(3, TableIndex.MethodDef), + Handle(4, TableIndex.MethodDef), + Handle(1, TableIndex.Param), + Handle(2, TableIndex.Param), + Handle(4, TableIndex.CustomAttribute), + Handle(1, TableIndex.ClassLayout), + Handle(1, TableIndex.FieldRva), + Handle(1, TableIndex.NestedClass), + Handle(2, TableIndex.NestedClass) + ]); + + g.VerifyIL("C.F", """ + { + // Code size 6 (0x6) + .maxstack 1 + IL_0000: ldsfld "string #1.E353667619EC664B49655FC9692165FB.s" + IL_0005: ret + } + """); + + // trailing zeros for alignment: + g.VerifyEncFieldRvaData($""" + 84D89877F0D4041EFB6BF91A16F0248F2FD573E6AF05C19F96BEDB9F882F7882: {BitConverter.ToString(Encoding.UTF8.GetBytes("0123456789"))}-00-00 + """); + }, + options: new EmitDifferenceOptions() { EmitFieldRva = true }) + .Verify(); + } + + [Fact] + public void PrivateImplDetails_DataSectionStringLiterals_StringReuse_FieldRvaSupported() + { + // Literals are currently only reused within generation. + + var baseString = new string('x', (1 << 23) - 100); + var newString1 = new string('1', 40); + var newString2 = new string('2', 80); + + using var _ = new EditAndContinueTest(targetFramework: TargetFramework.Net90, verification: Verification.Skipped) + .AddBaseline( + source: $$""" + class C + { + void G(string a, string b, string c) {} + + void F() => G("{{baseString}}", "{{newString1}}", ""); + } + """, + validator: g => + { + g.VerifyTypeDefNames("", "C"); + g.VerifyFieldDefNames(); + g.VerifyMethodDefNames("G", "F", ".ctor"); + }) + .AddGeneration( + source: $$""" + class C + { + void G(string a, string b, string c) {} + + void F() => G("{{newString2}}", "{{newString2}}", "{{newString1}}"); + } + """, + edits: + [ + Edit(SemanticEditKind.Update, symbolProvider: c => c.GetMember("C.F")), + ], + validator: g => + { + g.VerifyTypeDefNames("#1", "__StaticArrayInitTypeSize=40", "62CF64E173E5BF9EF5312BB6D57CC26C"); + g.VerifyFieldDefNames("468D019EA81224AECA7EE270B11959D8A187F6F0B6A3FEBFF1C34DC1D66C8D85", "s"); + g.VerifyMethodDefNames("F", "BytesToString", ".cctor"); + + g.VerifyEncLogDefinitions( + [ + Row(3, TableIndex.TypeDef, EditAndContinueOperation.Default), + Row(4, TableIndex.TypeDef, EditAndContinueOperation.Default), + Row(5, TableIndex.TypeDef, EditAndContinueOperation.Default), + Row(3, TableIndex.TypeDef, EditAndContinueOperation.AddField), + Row(1, TableIndex.Field, EditAndContinueOperation.Default), + Row(5, TableIndex.TypeDef, EditAndContinueOperation.AddField), + Row(2, TableIndex.Field, EditAndContinueOperation.Default), + Row(2, TableIndex.MethodDef, EditAndContinueOperation.Default), + Row(3, TableIndex.TypeDef, EditAndContinueOperation.AddMethod), + Row(4, TableIndex.MethodDef, EditAndContinueOperation.Default), + Row(5, TableIndex.TypeDef, EditAndContinueOperation.AddMethod), + Row(5, TableIndex.MethodDef, EditAndContinueOperation.Default), + Row(4, TableIndex.MethodDef, EditAndContinueOperation.AddParameter), + Row(4, TableIndex.Param, EditAndContinueOperation.Default), + Row(4, TableIndex.MethodDef, EditAndContinueOperation.AddParameter), + Row(5, TableIndex.Param, EditAndContinueOperation.Default), + Row(4, TableIndex.CustomAttribute, EditAndContinueOperation.Default), + Row(1, TableIndex.ClassLayout, EditAndContinueOperation.Default), + Row(1, TableIndex.FieldRva, EditAndContinueOperation.Default), + Row(1, TableIndex.NestedClass, EditAndContinueOperation.Default), + Row(2, TableIndex.NestedClass, EditAndContinueOperation.Default) + ]); + + g.VerifyEncMapDefinitions( + [ + Handle(3, TableIndex.TypeDef), + Handle(4, TableIndex.TypeDef), + Handle(5, TableIndex.TypeDef), + Handle(1, TableIndex.Field), + Handle(2, TableIndex.Field), + Handle(2, TableIndex.MethodDef), + Handle(4, TableIndex.MethodDef), + Handle(5, TableIndex.MethodDef), + Handle(4, TableIndex.Param), + Handle(5, TableIndex.Param), + Handle(4, TableIndex.CustomAttribute), + Handle(1, TableIndex.ClassLayout), + Handle(1, TableIndex.FieldRva), + Handle(1, TableIndex.NestedClass), + Handle(2, TableIndex.NestedClass) + ]); + + g.VerifyIL("C.F", """ + { + // Code size 23 (0x17) + .maxstack 4 + IL_0000: ldarg.0 + IL_0001: ldstr "22222222222222222222222222222222222222222222222222222222222222222222222222222222" + IL_0006: ldstr "22222222222222222222222222222222222222222222222222222222222222222222222222222222" + IL_000b: ldsfld "string #1.62CF64E173E5BF9EF5312BB6D57CC26C.s" + IL_0010: call "void C.G(string, string, string)" + IL_0015: nop + IL_0016: ret + } + """); + }, + options: new EmitDifferenceOptions() { EmitFieldRva = true }) + .Verify(); + } + + [Fact] + public void PrivateImplDetails_DataSectionStringLiterals_HeapOverflow_FieldRvaNotSupported() + { + // The max number of bytes that can fit into #US the heap is 2^29 - 1, + // but each string also needs to have an offset < 0x1000000 (2^24) to be addressable by a token. + // If the string is larger than that the next string can't be emitted. + var baseString = new string('x', 1 << 23); + + using var _ = new EditAndContinueTest(targetFramework: TargetFramework.Net90, verification: Verification.Skipped) + .AddBaseline( + source: $$""" + class C + { + string F() => "{{baseString}}"; + } + """, + validator: g => + { + g.VerifyTypeDefNames("", "C"); + g.VerifyFieldDefNames(); + g.VerifyMethodDefNames("F", ".ctor"); + }) + .AddGeneration( + source: """ + class C + { + string F() => "new string that doesn't fit"; + } + """, + edits: + [ + Edit(SemanticEditKind.Update, symbolProvider: c => c.GetMember("C.F")), + ], + expectedErrors: + [ + // (3,19): error CS9307: Combined length of user strings used by the program exceeds allowed limit. Adding a string literal requires restarting the application. + // string F() => "new string that doesn't fit"; + Diagnostic(ErrorCode.ERR_TooManyUserStrings_RestartRequired, @"""new string that doesn't fit""").WithLocation(3, 19) + ]) + .Verify(); + } + [Theory] [InlineData("ComputeStringHash", "string")] [InlineData("ComputeSpanHash", "Span")] diff --git a/src/roslyn/src/Compilers/CSharp/Test/Emit3/Semantics/ExtensionTests.cs b/src/roslyn/src/Compilers/CSharp/Test/Emit3/Semantics/ExtensionTests.cs index ee1c3924b64..4df892712c4 100644 --- a/src/roslyn/src/Compilers/CSharp/Test/Emit3/Semantics/ExtensionTests.cs +++ b/src/roslyn/src/Compilers/CSharp/Test/Emit3/Semantics/ExtensionTests.cs @@ -919,7 +919,7 @@ public static partial class Extensions } [Fact] - public void ExtensionIndex_TwoExtensions_SameSignatures_01() + public void ExtensionIndex_TwoExtensions_01() { var src = """ public static class Extensions @@ -1560,7 +1560,7 @@ [0] int32 } [Fact] - public void ExtensionIndex_TwoExtensions_SameSignatures_02() + public void ExtensionIndex_TwoExtensions_02() { var src = """ public static class Extensions @@ -1585,12 +1585,12 @@ class C { } var extension2 = tree.GetRoot().DescendantNodes().OfType().Last(); var symbol2 = model.GetDeclaredSymbol(extension2); var sourceExtension2 = symbol2.GetSymbol(); - Assert.Equal("<>E__2`1", symbol2.MetadataName); - Assert.Equal("Extensions.<>E__2", symbol2.ToTestDisplayString()); + Assert.Equal("<>E__1`1", symbol2.MetadataName); + Assert.Equal("Extensions.<>E__1", symbol2.ToTestDisplayString()); } [Fact] - public void ExtensionIndex_TwoExtensions_SameSignatures_03() + public void ExtensionIndex_TwoExtensions_03() { var src = """ extension(T) { } @@ -1618,12 +1618,12 @@ class C { } var extension2 = tree.GetRoot().DescendantNodes().OfType().Last(); var symbol2 = model.GetDeclaredSymbol(extension2); var sourceExtension2 = symbol2.GetSymbol(); - Assert.Equal("<>E__2`1", symbol2.MetadataName); - Assert.Equal("<>E__2", symbol2.ToTestDisplayString()); + Assert.Equal("<>E__1`1", symbol2.MetadataName); + Assert.Equal("<>E__1", symbol2.ToTestDisplayString()); } [Fact] - public void ExtensionIndex_TwoExtensions_DifferentSignatures_01() + public void ExtensionIndex_TwoExtensions_05() { var src = """ public static class Extensions @@ -1652,7 +1652,7 @@ public static class Extensions } [Fact] - public void ExtensionIndex_TwoExtensions_DifferentSignatures_02() + public void ExtensionIndex_TwoExtensions_06() { var src = """ public static class Extensions @@ -1695,6 +1695,7 @@ public static class Extensions extension(T8 o8) { } extension(T9 o9) { } extension(T10 o10) { } + class C { } extension(T11 o11) { } } """; diff --git a/src/roslyn/src/Compilers/Core/CodeAnalysisTest/MetadataReferences/MetadataHelpersTests.cs b/src/roslyn/src/Compilers/Core/CodeAnalysisTest/MetadataReferences/MetadataHelpersTests.cs index 63341865aa1..b6494e4c279 100644 --- a/src/roslyn/src/Compilers/Core/CodeAnalysisTest/MetadataReferences/MetadataHelpersTests.cs +++ b/src/roslyn/src/Compilers/Core/CodeAnalysisTest/MetadataReferences/MetadataHelpersTests.cs @@ -503,5 +503,16 @@ public void ObfuscatedNamespaceNames_02() Assert.Equal("a", nestedNamespaces.ElementAt(0).Key); Assert.Equal("b", nestedNamespaces.ElementAt(1).Key); } + + [Theory] + [InlineData("")] + [InlineData("abc")] + [InlineData("\u1234")] + public static void GetUserStringBlobSize(string str) + { + var builder = new BlobBuilder(); + builder.WriteUserString(str); + Assert.Equal(builder.Count, MetadataHelpers.GetUserStringBlobSize(str)); + } } } diff --git a/src/roslyn/src/Compilers/Core/Portable/CodeGen/ILBuilder.cs b/src/roslyn/src/Compilers/Core/Portable/CodeGen/ILBuilder.cs index 2a170dbc2ff..3d7af821514 100644 --- a/src/roslyn/src/Compilers/Core/Portable/CodeGen/ILBuilder.cs +++ b/src/roslyn/src/Compilers/Core/Portable/CodeGen/ILBuilder.cs @@ -2,15 +2,15 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -#nullable disable - using System; using System.Collections.Generic; using System.Collections.Immutable; using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; using System.Reflection; using System.Reflection.Metadata; using Microsoft.CodeAnalysis.Debugging; +using Microsoft.CodeAnalysis.Emit; using Microsoft.CodeAnalysis.PooledObjects; using Microsoft.CodeAnalysis.Text; @@ -20,20 +20,21 @@ namespace Microsoft.CodeAnalysis.CodeGen internal sealed partial class ILBuilder { private readonly OptimizationLevel _optimizations; - internal readonly LocalSlotManager LocalSlotManager; + internal readonly LocalSlotManager? LocalSlotManager; + private readonly DiagnosticBag _diagnostics; private readonly LocalScopeManager _scopeManager; // internal for testing - internal readonly ITokenDeferral module; + internal readonly CommonPEModuleBuilder module; //leader block is the entry point of the method body internal readonly BasicBlock leaderBlock; private EmitState _emitState; - private BasicBlock _lastCompleteBlock; - private BasicBlock _currentBlock; + private BasicBlock? _lastCompleteBlock; + private BasicBlock? _currentBlock; - private SyntaxTree _lastSeqPointTree; + private SyntaxTree? _lastSeqPointTree; private readonly SmallDictionary _labelInfos; private readonly bool _areLocalsZeroed; @@ -42,11 +43,11 @@ internal sealed partial class ILBuilder // This data is only relevant when builder has been realized. internal ImmutableArray RealizedIL; internal ImmutableArray RealizedExceptionHandlers; - internal SequencePointList RealizedSequencePoints; + internal SequencePointList? RealizedSequencePoints; // debug sequence points from all blocks, note that each // sequence point references absolute IL offset via IL marker - public ArrayBuilder SeqPointsOpt; + public ArrayBuilder? SeqPointsOpt; /// /// In some cases we have to get a final IL offset during emit phase, for example for @@ -60,17 +61,19 @@ internal sealed partial class ILBuilder /// will be put into array. Note that only markers from reachable blocks /// are materialized, the rest will have offset -1. /// - private ArrayBuilder _allocatedILMarkers; + private ArrayBuilder? _allocatedILMarkers; // Since blocks are created lazily in GetCurrentBlock, // pendingBlockCreate is set to true when a block must be // created, in particular for leader blocks in exception handlers. private bool _pendingBlockCreate; - internal ILBuilder(ITokenDeferral module, LocalSlotManager localSlotManager, OptimizationLevel optimizations, bool areLocalsZeroed) + internal ILBuilder(CommonPEModuleBuilder module, LocalSlotManager? localSlotManager, DiagnosticBag diagnostics, OptimizationLevel optimizations, bool areLocalsZeroed) { this.module = module; this.LocalSlotManager = localSlotManager; + + _diagnostics = diagnostics; _emitState = default(EmitState); _scopeManager = new LocalScopeManager(); @@ -95,6 +98,7 @@ private BasicBlock GetCurrentBlock() return _currentBlock; } + [MemberNotNull(nameof(_currentBlock))] private void CreateBlock() { Debug.Assert(_currentBlock == null); @@ -103,6 +107,7 @@ private void CreateBlock() UpdatesForCreatedBlock(block); } + [MemberNotNull(nameof(_currentBlock))] private SwitchBlock CreateSwitchBlock() { // end the current block @@ -113,10 +118,13 @@ private SwitchBlock CreateSwitchBlock() return switchBlock; } + [MemberNotNull(nameof(_currentBlock))] private void UpdatesForCreatedBlock(BasicBlock block) { - _currentBlock = block; + Debug.Assert(_lastCompleteBlock != null); Debug.Assert(_lastCompleteBlock.NextBlock == null); + + _currentBlock = block; _lastCompleteBlock.NextBlock = block; _pendingBlockCreate = false; ReconcileTrailingMarkers(); @@ -153,29 +161,33 @@ private void ReconcileTrailingMarkers() // should be moved to the next block if (_lastCompleteBlock != null && _lastCompleteBlock.BranchCode == ILOpCode.Nop && - _lastCompleteBlock.LastILMarker >= 0 && - _allocatedILMarkers[_lastCompleteBlock.LastILMarker].BlockOffset == _lastCompleteBlock.RegularInstructionsLength) + _lastCompleteBlock.LastILMarker >= 0) { - int startMarker = -1; - int endMarker = -1; + Debug.Assert(_allocatedILMarkers != null); - while (_lastCompleteBlock.LastILMarker >= 0 && - _allocatedILMarkers[_lastCompleteBlock.LastILMarker].BlockOffset == _lastCompleteBlock.RegularInstructionsLength) + if (_allocatedILMarkers[_lastCompleteBlock.LastILMarker].BlockOffset == _lastCompleteBlock.RegularInstructionsLength) { - Debug.Assert((startMarker < 0) || (startMarker == (_lastCompleteBlock.LastILMarker + 1))); - startMarker = _lastCompleteBlock.LastILMarker; - if (endMarker < 0) + int startMarker = -1; + int endMarker = -1; + + while (_lastCompleteBlock.LastILMarker >= 0 && + _allocatedILMarkers[_lastCompleteBlock.LastILMarker].BlockOffset == _lastCompleteBlock.RegularInstructionsLength) { - endMarker = _lastCompleteBlock.LastILMarker; + Debug.Assert((startMarker < 0) || (startMarker == (_lastCompleteBlock.LastILMarker + 1))); + startMarker = _lastCompleteBlock.LastILMarker; + if (endMarker < 0) + { + endMarker = _lastCompleteBlock.LastILMarker; + } + _lastCompleteBlock.RemoveTailILMarker(_lastCompleteBlock.LastILMarker); } - _lastCompleteBlock.RemoveTailILMarker(_lastCompleteBlock.LastILMarker); - } - BasicBlock current = this.GetCurrentBlock(); - for (int marker = startMarker; marker <= endMarker; marker++) - { - current.AddILMarker(marker); - _allocatedILMarkers[marker] = new ILMarker() { BlockOffset = (int)current.RegularInstructionsLength, AbsoluteOffset = -1 }; + BasicBlock current = this.GetCurrentBlock(); + for (int marker = startMarker; marker <= endMarker; marker++) + { + current.AddILMarker(marker); + _allocatedILMarkers[marker] = new ILMarker() { BlockOffset = (int)current.RegularInstructionsLength, AbsoluteOffset = -1 }; + } } } } @@ -369,7 +381,7 @@ private static void RedirectBranchToBlockedDestination(BasicBlock block, object // if branch is blocked by a nonterminating finally, // returns label for a landing block used as a target of blocked branches // Otherwise returns null - private static object BlockedBranchDestination(BasicBlock src, BasicBlock dest) + private static object? BlockedBranchDestination(BasicBlock src, BasicBlock dest) { var srcHandler = src.EnclosingHandler; @@ -382,9 +394,9 @@ private static object BlockedBranchDestination(BasicBlock src, BasicBlock dest) return BlockedBranchDestinationSlow(dest.EnclosingHandler, srcHandler); } - private static object BlockedBranchDestinationSlow(ExceptionHandlerScope destHandler, ExceptionHandlerScope srcHandler) + private static object? BlockedBranchDestinationSlow(ExceptionHandlerScope destHandler, ExceptionHandlerScope srcHandler) { - ScopeInfo destHandlerScope = null; + ScopeInfo? destHandlerScope = null; if (destHandler != null) { destHandlerScope = destHandler.ContainingExceptionScope; @@ -516,11 +528,11 @@ private bool ForwardLabelsNoLeaving() var labelInfo = _labelInfos[label]; var targetBlock = labelInfo.bb; - Debug.Assert(!IsSpecialEndHandlerBlock(targetBlock)); + Debug.Assert(targetBlock != null && !IsSpecialEndHandlerBlock(targetBlock)); if (targetBlock.HasNoRegularInstructions) { - BasicBlock targetsTarget = null; + BasicBlock? targetsTarget = null; switch (targetBlock.BranchCode) { case ILOpCode.Br: @@ -576,11 +588,11 @@ private bool ForwardLabelsAllowLeaving() var targetBlock = labelInfo.bb; - Debug.Assert(!IsSpecialEndHandlerBlock(targetBlock)); + Debug.Assert(targetBlock != null && !IsSpecialEndHandlerBlock(targetBlock)); if (targetBlock.HasNoRegularInstructions) { - BasicBlock targetsTarget = null; + BasicBlock? targetsTarget = null; switch (targetBlock.BranchCode) { case ILOpCode.Br: @@ -898,6 +910,8 @@ private void RealizeBlocks() Debug.Assert(blockLastMarker >= blockFirstMarker); for (int i = blockFirstMarker; i <= blockLastMarker; i++) { + Debug.Assert(_allocatedILMarkers != null); + int blockOffset = _allocatedILMarkers[i].BlockOffset; int absoluteOffset = writer.Count + blockOffset; _allocatedILMarkers[i] = new ILMarker() { BlockOffset = blockOffset, AbsoluteOffset = absoluteOffset }; @@ -1099,7 +1113,7 @@ internal bool IsJustPastLabel() return _emitState.InstructionsEmitted == _instructionCountAtLastLabel; } - internal void OpenLocalScope(ScopeType scopeType = ScopeType.Variable, Cci.ITypeReference exceptionType = null) + internal void OpenLocalScope(ScopeType scopeType = ScopeType.Variable, Cci.ITypeReference? exceptionType = null) { if (scopeType == ScopeType.TryCatchFinally && IsJustPastLabel()) { @@ -1267,7 +1281,7 @@ private string GetDebuggerDisplay() if (visType != null) { var method = visType.GetTypeInfo().GetDeclaredMethod("ILBuilderToString"); - return (string)method.Invoke(null, new object[] { this, null, null }); + return (string)method!.Invoke(null, [this, null, null])!; } #endif diff --git a/src/roslyn/src/Compilers/Core/Portable/CodeGen/ILBuilderEmit.cs b/src/roslyn/src/Compilers/Core/Portable/CodeGen/ILBuilderEmit.cs index 03b1f616d8d..80e5bb29a3e 100644 --- a/src/roslyn/src/Compilers/Core/Portable/CodeGen/ILBuilderEmit.cs +++ b/src/roslyn/src/Compilers/Core/Portable/CodeGen/ILBuilderEmit.cs @@ -7,8 +7,6 @@ using System.Collections.Immutable; using System.Diagnostics; using System.Reflection.Metadata; -using Roslyn.Utilities; -using static System.Linq.ImmutableArrayExtensions; namespace Microsoft.CodeAnalysis.CodeGen { @@ -40,15 +38,9 @@ internal void EmitOpCode(ILOpCode code, int stackAdjustment) _emitState.InstructionAdded(); } - internal void EmitToken(string value) + internal void EmitToken(Cci.IReference value, SyntaxNode? syntaxNode, Cci.MetadataWriter.RawTokenEncoding encoding = 0) { - uint token = module?.GetFakeStringTokenForIL(value) ?? 0xFFFF; - this.GetCurrentWriter().WriteUInt32(token); - } - - internal void EmitToken(Cci.IReference value, SyntaxNode? syntaxNode, DiagnosticBag diagnostics, Cci.MetadataWriter.RawTokenEncoding encoding = 0) - { - uint token = module?.GetFakeSymbolTokenForIL(value, syntaxNode, diagnostics) ?? 0xFFFF; + uint token = module.GetFakeSymbolTokenForIL(value, syntaxNode, _diagnostics); if (encoding != Cci.MetadataWriter.RawTokenEncoding.None) { token = Cci.MetadataWriter.GetRawToken(encoding, token); @@ -56,9 +48,9 @@ internal void EmitToken(Cci.IReference value, SyntaxNode? syntaxNode, Diagnostic this.GetCurrentWriter().WriteUInt32(token); } - internal void EmitToken(Cci.ISignature value, SyntaxNode? syntaxNode, DiagnosticBag diagnostics) + internal void EmitToken(Cci.ISignature value, SyntaxNode? syntaxNode) { - uint token = module?.GetFakeSymbolTokenForIL(value, syntaxNode, diagnostics) ?? 0xFFFF; + uint token = module.GetFakeSymbolTokenForIL(value, syntaxNode, _diagnostics); this.GetCurrentWriter().WriteUInt32(token); } @@ -76,11 +68,11 @@ internal void EmitModuleVersionIdStringToken() internal void EmitSourceDocumentIndexToken(Cci.DebugSourceDocument document) { - var token = Cci.MetadataWriter.GetRawToken(Cci.MetadataWriter.RawTokenEncoding.DocumentRowId, module?.GetSourceDocumentIndexForIL(document) ?? 0xFFFF); + var token = Cci.MetadataWriter.GetRawToken(Cci.MetadataWriter.RawTokenEncoding.DocumentRowId, module.GetSourceDocumentIndexForIL(document)); this.GetCurrentWriter().WriteUInt32(token); } - internal void EmitArrayBlockInitializer(ImmutableArray data, SyntaxNode syntaxNode, DiagnosticBag diagnostics) + internal void EmitArrayBlockInitializer(ImmutableArray data, SyntaxNode syntaxNode) { // Emit the call to RuntimeHelpers.InitializeArray, creating the necessary metadata blob if there isn't // already one for this data. Note that this specifies an alignment of 1. This is valid regardless of @@ -100,14 +92,14 @@ internal void EmitArrayBlockInitializer(ImmutableArray data, SyntaxNode sy var initializeArray = module.GetInitArrayHelper(); // map a field to the block (that makes it addressable via a token). - var field = module.GetFieldForData(data, alignment: 1, syntaxNode, diagnostics); + var field = module.GetFieldForData(data, alignment: 1, syntaxNode, _diagnostics); // emit call to the helper EmitOpCode(ILOpCode.Dup); //array EmitOpCode(ILOpCode.Ldtoken); - EmitToken(field, syntaxNode, diagnostics); //block + EmitToken(field, syntaxNode); //block EmitOpCode(ILOpCode.Call, -2); - EmitToken(initializeArray, syntaxNode, diagnostics); + EmitToken(initializeArray, syntaxNode); } /// @@ -211,6 +203,7 @@ internal void EmitBranch(ILOpCode code, object label, ILOpCode revOpCode = ILOpC /// /// Primary method for emitting string switch jump table /// + /// Associated syntax for diagnostic reporting. /// switch case labels /// fall through label for the jump table /// Local holding the value to switch on. @@ -227,6 +220,7 @@ internal void EmitBranch(ILOpCode code, object label, ILOpCode revOpCode = ILOpC /// Delegate to compute string hash consistent with value of keyHash. /// internal void EmitStringSwitchJumpTable( + SyntaxNode syntax, KeyValuePair[] caseLabels, object fallThroughLabel, LocalOrParameter key, @@ -238,6 +232,7 @@ internal void EmitStringSwitchJumpTable( var emitter = new SwitchStringJumpTableEmitter( this, + syntax, key, caseLabels, fallThroughLabel, @@ -257,11 +252,13 @@ internal void EmitStringSwitchJumpTable( /// This value has already been loaded onto the execution stack. /// /// Primitive type code of switch key. + /// Associated syntax for error reporting. internal void EmitIntegerSwitchJumpTable( KeyValuePair[] caseLabels, object fallThroughLabel, LocalOrParameter key, - Cci.PrimitiveTypeCode keyTypeCode) + Cci.PrimitiveTypeCode keyTypeCode, + SyntaxNode syntax) { Debug.Assert(caseLabels.Length > 0); Debug.Assert(keyTypeCode != Cci.PrimitiveTypeCode.String); @@ -270,7 +267,7 @@ internal void EmitIntegerSwitchJumpTable( // CONSIDER: Currently, only purpose of creating this caseLabels array is for Emitting the jump table. // CONSIDER: If this requirement changes, we may want to pass in ArrayBuilder> instead. - var emitter = new SwitchIntegralJumpTableEmitter(this, caseLabels, fallThroughLabel, keyTypeCode, key); + var emitter = new SwitchIntegralJumpTableEmitter(this, syntax, caseLabels, fallThroughLabel, keyTypeCode, key); emitter.EmitJumpTable(); } @@ -360,7 +357,7 @@ private BasicBlock FinishFilterCondition() /// /// Generates code that creates an instance of multidimensional array /// - internal void EmitArrayCreation(Microsoft.Cci.IArrayTypeReference arrayType, SyntaxNode syntaxNode, DiagnosticBag diagnostics) + internal void EmitArrayCreation(Cci.IArrayTypeReference arrayType, SyntaxNode syntaxNode) { Debug.Assert(!arrayType.IsSZArray, "should be used only with multidimensional arrays"); @@ -368,13 +365,13 @@ internal void EmitArrayCreation(Microsoft.Cci.IArrayTypeReference arrayType, Syn // idx1, idx2 --> array this.EmitOpCode(ILOpCode.Newobj, 1 - (int)arrayType.Rank); - this.EmitToken(ctor, syntaxNode, diagnostics); + this.EmitToken(ctor, syntaxNode); } /// /// Generates code that loads an element of a multidimensional array /// - internal void EmitArrayElementLoad(Microsoft.Cci.IArrayTypeReference arrayType, SyntaxNode syntaxNode, DiagnosticBag diagnostics) + internal void EmitArrayElementLoad(Cci.IArrayTypeReference arrayType, SyntaxNode syntaxNode) { Debug.Assert(!arrayType.IsSZArray, "should be used only with multidimensional arrays"); @@ -382,13 +379,13 @@ internal void EmitArrayElementLoad(Microsoft.Cci.IArrayTypeReference arrayType, // this, idx1, idx2 --> value this.EmitOpCode(ILOpCode.Call, -(int)arrayType.Rank); - this.EmitToken(load, syntaxNode, diagnostics); + this.EmitToken(load, syntaxNode); } /// /// Generates code that loads an address of an element of a multidimensional array. /// - internal void EmitArrayElementAddress(Microsoft.Cci.IArrayTypeReference arrayType, SyntaxNode syntaxNode, DiagnosticBag diagnostics) + internal void EmitArrayElementAddress(Cci.IArrayTypeReference arrayType, SyntaxNode syntaxNode) { Debug.Assert(!arrayType.IsSZArray, "should be used only with multidimensional arrays"); @@ -396,13 +393,13 @@ internal void EmitArrayElementAddress(Microsoft.Cci.IArrayTypeReference arrayTyp // this, idx1, idx2 --> &value this.EmitOpCode(ILOpCode.Call, -(int)arrayType.Rank); - this.EmitToken(address, syntaxNode, diagnostics); + this.EmitToken(address, syntaxNode); } /// /// Generates code that stores an element of a multidimensional array. /// - internal void EmitArrayElementStore(Cci.IArrayTypeReference arrayType, SyntaxNode syntaxNode, DiagnosticBag diagnostics) + internal void EmitArrayElementStore(Cci.IArrayTypeReference arrayType, SyntaxNode syntaxNode) { Debug.Assert(!arrayType.IsSZArray, "should be used only with multidimensional arrays"); @@ -410,7 +407,7 @@ internal void EmitArrayElementStore(Cci.IArrayTypeReference arrayType, SyntaxNod // this, idx1, idx2, value --> void this.EmitOpCode(ILOpCode.Call, -(2 + (int)arrayType.Rank)); - this.EmitToken(store, syntaxNode, diagnostics); + this.EmitToken(store, syntaxNode); } internal void EmitLoad(LocalOrParameter localOrParameter) @@ -563,7 +560,7 @@ internal void EmitStoreArgumentOpcode(int argNumber) } } - internal void EmitConstantValue(ConstantValue value) + internal void EmitConstantValue(ConstantValue value, SyntaxNode? syntaxNode) { ConstantValueTypeDiscriminator discriminator = value.Discriminator; @@ -608,7 +605,7 @@ internal void EmitConstantValue(ConstantValue value) EmitDoubleConstant(value.DoubleValue); break; case ConstantValueTypeDiscriminator.String: - EmitStringConstant(value.StringValue); + EmitStringConstant(value.StringValue, syntaxNode); break; case ConstantValueTypeDiscriminator.Boolean: EmitBoolConstant(value.BooleanValue); @@ -734,16 +731,70 @@ internal void EmitNullConstant() EmitOpCode(ILOpCode.Ldnull); } - internal void EmitStringConstant(string? value) + internal void EmitStringConstant(string? value, SyntaxNode? syntax) { if (value == null) { EmitNullConstant(); + return; } - else + + // If the length is greater than the specified threshold try ldsfld first and fall back to ldstr. + // Otherwise, try emit ldstr and fall back to ldsfld if emitting EnC delta and the heap is already full. + bool success = (value.Length > module.CommonCompilation.DataSectionStringLiteralThreshold) + ? tryEmitLoadField() || tryEmitLoadString() + : tryEmitLoadString() || (module.PreviousGeneration != null && tryEmitLoadField()); + + if (!success) + { + // emit null to balance eval stack + EmitNullConstant(); + + var messageProvider = module.CommonCompilation.MessageProvider; + int code = module.PreviousGeneration != null ? messageProvider.ERR_TooManyUserStrings_RestartRequired : messageProvider.ERR_TooManyUserStrings; + _diagnostics.Add(messageProvider.CreateDiagnostic(code, syntax?.Location ?? Location.None)); + } + + bool tryEmitLoadString() + { + if (module.TryGetFakeStringTokenForIL(value, out uint token)) + { + EmitOpCode(ILOpCode.Ldstr); + GetCurrentWriter().WriteUInt32(token); + return true; + } + + return false; + } + + bool tryEmitLoadField() { - EmitOpCode(ILOpCode.Ldstr); - EmitToken(value); + var field = tryGetOrCreateField(); + if (field != null) + { + EmitOpCode(ILOpCode.Ldsfld); + EmitToken(field, syntax); + return true; + } + + return false; + } + + Cci.IFieldReference? tryGetOrCreateField() + { + if (!module.FieldRvaSupported) + { + return null; + } + + // Binder should have reported use-site errors for these members. + if (module.CommonCompilation.CommonGetWellKnownTypeMember(WellKnownMember.System_Text_Encoding__get_UTF8) == null || + module.CommonCompilation.CommonGetWellKnownTypeMember(WellKnownMember.System_Text_Encoding__GetString) == null) + { + return null; + } + + return module.TryGetOrCreateFieldForStringValue(value, syntax, _diagnostics); } } diff --git a/src/roslyn/src/Compilers/Core/Portable/CodeGen/ITokenDeferral.cs b/src/roslyn/src/Compilers/Core/Portable/CodeGen/ITokenDeferral.cs deleted file mode 100644 index c11dc6c21a3..00000000000 --- a/src/roslyn/src/Compilers/Core/Portable/CodeGen/ITokenDeferral.cs +++ /dev/null @@ -1,34 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System.Collections.Immutable; - -namespace Microsoft.CodeAnalysis.CodeGen -{ - internal interface ITokenDeferral - { - uint GetFakeStringTokenForIL(string value); - uint GetFakeSymbolTokenForIL(Cci.IReference value, SyntaxNode? syntaxNode, DiagnosticBag diagnostics); - uint GetFakeSymbolTokenForIL(Cci.ISignature value, SyntaxNode? syntaxNode, DiagnosticBag diagnostics); - uint GetSourceDocumentIndexForIL(Cci.DebugSourceDocument document); - - Cci.IFieldReference GetFieldForData(ImmutableArray data, ushort alignment, SyntaxNode syntaxNode, DiagnosticBag diagnostics); - - /// Gets a field that may be used to lazily cache an array created to store the specified data. - /// This is used to cache an array created with the data passed to . - Cci.IFieldReference GetArrayCachingFieldForData(ImmutableArray data, Cci.IArrayTypeReference arrayType, SyntaxNode syntaxNode, DiagnosticBag diagnostics); - - Cci.IFieldReference GetArrayCachingFieldForConstants(ImmutableArray constants, Cci.IArrayTypeReference arrayType, SyntaxNode syntaxNode, DiagnosticBag diagnostics); - - Cci.IMethodReference GetInitArrayHelper(); - - string GetStringFromToken(uint token); - /// - /// Gets the or corresponding to this token. - /// - object GetReferenceFromToken(uint token); - - ArrayMethods ArrayMethods { get; } - } -} diff --git a/src/roslyn/src/Compilers/Core/Portable/CodeGen/MethodBody.cs b/src/roslyn/src/Compilers/Core/Portable/CodeGen/MethodBody.cs index be2d425d5d0..4bc97bba46a 100644 --- a/src/roslyn/src/Compilers/Core/Portable/CodeGen/MethodBody.cs +++ b/src/roslyn/src/Compilers/Core/Portable/CodeGen/MethodBody.cs @@ -26,11 +26,11 @@ internal sealed class MethodBody : Cci.IMethodBody // Debug information emitted to Release & Debug PDBs supporting the debugger, EEs and other tools: private readonly ImmutableArray _sequencePoints; private readonly ImmutableArray _localScopes; - private readonly Cci.IImportScope _importScopeOpt; - private readonly string _stateMachineTypeNameOpt; + private readonly Cci.IImportScope? _importScopeOpt; + private readonly string? _stateMachineTypeNameOpt; private readonly ImmutableArray _stateMachineHoistedLocalScopes; private readonly bool _hasDynamicLocalVariables; - private readonly StateMachineMoveNextBodyDebugInfo _stateMachineMoveNextDebugInfoOpt; + private readonly StateMachineMoveNextBodyDebugInfo? _stateMachineMoveNextDebugInfoOpt; // Debug information emitted to Debug PDBs supporting EnC: private readonly DebugId _methodId; @@ -54,23 +54,23 @@ public MethodBody( Cci.IMethodDefinition parent, DebugId methodId, ImmutableArray locals, - SequencePointList sequencePoints, - DebugDocumentProvider debugDocumentProvider, + SequencePointList? sequencePoints, + DebugDocumentProvider? debugDocumentProvider, ImmutableArray exceptionHandlers, bool areLocalsZeroed, bool hasStackalloc, ImmutableArray localScopes, bool hasDynamicLocalVariables, - Cci.IImportScope importScopeOpt, + Cci.IImportScope? importScopeOpt, ImmutableArray lambdaDebugInfo, ImmutableArray orderedLambdaRuntimeRudeEdits, ImmutableArray closureDebugInfo, - string stateMachineTypeNameOpt, + string? stateMachineTypeNameOpt, ImmutableArray stateMachineHoistedLocalScopes, ImmutableArray stateMachineHoistedLocalSlots, ImmutableArray stateMachineAwaiterSlots, StateMachineStatesDebugInfo stateMachineStatesDebugInfo, - StateMachineMoveNextBodyDebugInfo stateMachineMoveNextDebugInfoOpt, + StateMachineMoveNextBodyDebugInfo? stateMachineMoveNextDebugInfoOpt, ImmutableArray codeCoverageSpans, bool isPrimaryConstructor) { @@ -103,13 +103,15 @@ public MethodBody( _isPrimaryConstructor = isPrimaryConstructor; } - private static ImmutableArray GetSequencePoints(SequencePointList? sequencePoints, DebugDocumentProvider debugDocumentProvider) + private static ImmutableArray GetSequencePoints(SequencePointList? sequencePoints, DebugDocumentProvider? debugDocumentProvider) { if (sequencePoints == null || sequencePoints.IsEmpty) { return ImmutableArray.Empty; } + Debug.Assert(debugDocumentProvider != null); + var sequencePointsBuilder = ArrayBuilder.GetInstance(); sequencePoints.GetSequencePoints(debugDocumentProvider, sequencePointsBuilder); return sequencePointsBuilder.ToImmutableAndFree(); @@ -125,7 +127,7 @@ public MethodBody( Cci.IMethodDefinition Cci.IMethodBody.MethodDefinition => _parent; - StateMachineMoveNextBodyDebugInfo Cci.IMethodBody.MoveNextBodyInfo => _stateMachineMoveNextDebugInfoOpt; + StateMachineMoveNextBodyDebugInfo? Cci.IMethodBody.MoveNextBodyInfo => _stateMachineMoveNextDebugInfoOpt; ushort Cci.IMethodBody.MaxStack => _maxStack; @@ -138,9 +140,9 @@ public MethodBody( /// /// This is a list of the using directives that were in scope for this method body. /// - Cci.IImportScope Cci.IMethodBody.ImportScope => _importScopeOpt; + Cci.IImportScope? Cci.IMethodBody.ImportScope => _importScopeOpt; - string Cci.IMethodBody.StateMachineTypeName => _stateMachineTypeNameOpt; + string? Cci.IMethodBody.StateMachineTypeName => _stateMachineTypeNameOpt; ImmutableArray Cci.IMethodBody.StateMachineHoistedLocalScopes => _stateMachineHoistedLocalScopes; diff --git a/src/roslyn/src/Compilers/Core/Portable/CodeGen/PrivateImplementationDetails.cs b/src/roslyn/src/Compilers/Core/Portable/CodeGen/PrivateImplementationDetails.cs index 87b9df89e73..3c820cdd06a 100644 --- a/src/roslyn/src/Compilers/Core/Portable/CodeGen/PrivateImplementationDetails.cs +++ b/src/roslyn/src/Compilers/Core/Portable/CodeGen/PrivateImplementationDetails.cs @@ -327,7 +327,7 @@ internal MappedField GetOrAddDataField(ImmutableArray data, ushort alignme internal static Cci.IFieldReference? TryGetOrCreateFieldForStringValue( string text, CommonPEModuleBuilder moduleBuilder, - SyntaxNode syntaxNode, + SyntaxNode? syntaxNode, DiagnosticBag diagnostics) { if (!text.TryGetUtf8ByteRepresentation(out byte[]? data, out _)) @@ -354,7 +354,7 @@ internal MappedField GetOrAddDataField(ImmutableArray data, ushort alignme var messageProvider = @this.ModuleBuilder.CommonCompilation.MessageProvider; diagnostics.Add(messageProvider.CreateDiagnostic( messageProvider.ERR_DataSectionStringLiteralHashCollision, - syntaxNode.GetLocation(), + syntaxNode?.GetLocation() ?? Location.None, previousText[..Math.Min(previousText.Length, 500)])); } @@ -382,7 +382,7 @@ private Cci.IMethodDefinition GetOrSynthesizeBytesToStringHelper(DiagnosticBag d var encodingGetString = getWellKnownTypeMember(compilation, WellKnownMember.System_Text_Encoding__GetString); TryAddSynthesizedMethod(BytesToStringHelper.Create( - moduleBuilder: (ITokenDeferral)ModuleBuilder, + moduleBuilder: ModuleBuilder, containingType: this, encodingUtf8: encodingUtf8, encodingGetString: encodingGetString, @@ -743,14 +743,14 @@ public DataSectionStringType( var stringField = new DataSectionStringField("s", this); - var staticConstructor = synthesizeStaticConstructor((ITokenDeferral)containingType.ModuleBuilder, containingType, dataField, stringField, bytesToStringHelper, diagnostics); + var staticConstructor = synthesizeStaticConstructor(containingType.ModuleBuilder, this, dataField, stringField, bytesToStringHelper, diagnostics); _fields = [stringField]; _methods = [staticConstructor]; static Cci.IMethodDefinition synthesizeStaticConstructor( - ITokenDeferral module, - Cci.INamespaceTypeDefinition containingType, + CommonPEModuleBuilder module, + Cci.ITypeDefinition containingType, MappedField dataField, DataSectionStringField stringField, Cci.IMethodDefinition bytesToStringHelper, @@ -759,23 +759,24 @@ static Cci.IMethodDefinition synthesizeStaticConstructor( var ilBuilder = new ILBuilder( module, new LocalSlotManager(slotAllocator: null), + diagnostics, OptimizationLevel.Release, areLocalsZeroed: false); // Push the `byte*` field's address. ilBuilder.EmitOpCode(ILOpCode.Ldsflda); - ilBuilder.EmitToken(dataField, null, diagnostics); + ilBuilder.EmitToken(dataField, null); // Push the byte size. ilBuilder.EmitIntConstant(dataField.MappedData.Length); // Call `.BytesToString(byte*, int)`. ilBuilder.EmitOpCode(ILOpCode.Call, -1); - ilBuilder.EmitToken(bytesToStringHelper, null, diagnostics); + ilBuilder.EmitToken(bytesToStringHelper, null); // Store into the corresponding `string` field. ilBuilder.EmitOpCode(ILOpCode.Stsfld); - ilBuilder.EmitToken(stringField, null, diagnostics); + ilBuilder.EmitToken(stringField, null); ilBuilder.EmitRet(isVoid: true); ilBuilder.Realize(); @@ -1173,7 +1174,7 @@ private BytesToStringHelper( } public static BytesToStringHelper Create( - ITokenDeferral moduleBuilder, + CommonPEModuleBuilder moduleBuilder, Cci.INamespaceTypeDefinition containingType, Cci.IMethodReference encodingUtf8, Cci.IMethodReference encodingGetString, @@ -1182,12 +1183,13 @@ public static BytesToStringHelper Create( var ilBuilder = new ILBuilder( moduleBuilder, new LocalSlotManager(slotAllocator: null), + diagnostics, OptimizationLevel.Release, areLocalsZeroed: false); // Call `Encoding.get_UTF8()`. ilBuilder.EmitOpCode(ILOpCode.Call, 1); - ilBuilder.EmitToken(encodingUtf8, null, diagnostics); + ilBuilder.EmitToken(encodingUtf8, null); // Push the `byte*`. ilBuilder.EmitOpCode(ILOpCode.Ldarg_0); @@ -1197,7 +1199,7 @@ public static BytesToStringHelper Create( // Call `Encoding.GetString(byte*, int)`. ilBuilder.EmitOpCode(ILOpCode.Callvirt, -2); - ilBuilder.EmitToken(encodingGetString, null, diagnostics); + ilBuilder.EmitToken(encodingGetString, null); // Return. ilBuilder.EmitRet(isVoid: false); diff --git a/src/roslyn/src/Compilers/Core/Portable/CodeGen/StringTokenMap.cs b/src/roslyn/src/Compilers/Core/Portable/CodeGen/StringTokenMap.cs new file mode 100644 index 00000000000..a6153ce2867 --- /dev/null +++ b/src/roslyn/src/Compilers/Core/Portable/CodeGen/StringTokenMap.cs @@ -0,0 +1,71 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Collections.Concurrent; +using System.Collections.Generic; +using Microsoft.CodeAnalysis.PooledObjects; +using Roslyn.Utilities; + +namespace Microsoft.CodeAnalysis.CodeGen; + +/// +/// Handles storage of strings referenced via tokens in metadata. When values are stored +/// they are uniquely "associated" with fake tokens, which are basically sequential numbers. +/// IL gen will use these fake tokens during codegen and later, when actual values +/// are known, the method bodies will be patched. +/// +internal sealed class StringTokenMap(int initialHeapSize) +{ + private readonly ConcurrentDictionary _valueToToken = new ConcurrentDictionary(ReferenceEqualityComparer.Instance); + private readonly ArrayBuilder _uniqueValues = []; + private int _heapSize = initialHeapSize; + + public bool TryGetOrAddToken(string value, out uint token) + { + // NOTE: cannot use GetOrAdd here since _uniqueValues and _valueToToken must be in sync + // so if we do need to add we have to take a lock and modify both collections. + if (_valueToToken.TryGetValue(value, out token)) + { + return true; + } + + lock (_uniqueValues) + { + if (_valueToToken.TryGetValue(value, out token)) + { + return true; + } + + // String can span beyond the heap limit, but must start within the limit. + if (_heapSize > MetadataHelpers.UserStringHeapCapacity) + { + return false; + } + + _heapSize += MetadataHelpers.GetUserStringBlobSize(value); + + token = (uint)_uniqueValues.Count; + _uniqueValues.Add(value); + _valueToToken.Add(value, token); + + return true; + } + } + + public string GetValue(uint token) + { + lock (_uniqueValues) + { + return _uniqueValues[(int)token]; + } + } + + public string[] CopyValues() + { + lock (_uniqueValues) + { + return _uniqueValues.ToArray(); + } + } +} diff --git a/src/roslyn/src/Compilers/Core/Portable/CodeGen/SwitchIntegralJumpTableEmitter.cs b/src/roslyn/src/Compilers/Core/Portable/CodeGen/SwitchIntegralJumpTableEmitter.cs index 9b57ad3e7bb..d6cbaed2558 100644 --- a/src/roslyn/src/Compilers/Core/Portable/CodeGen/SwitchIntegralJumpTableEmitter.cs +++ b/src/roslyn/src/Compilers/Core/Portable/CodeGen/SwitchIntegralJumpTableEmitter.cs @@ -19,6 +19,11 @@ internal partial struct SwitchIntegralJumpTableEmitter { private readonly ILBuilder _builder; + /// + /// Associated syntax for diagnostic reporting. + /// + private readonly SyntaxNode _syntax; + /// /// Switch key for the jump table /// @@ -48,12 +53,14 @@ internal partial struct SwitchIntegralJumpTableEmitter internal SwitchIntegralJumpTableEmitter( ILBuilder builder, + SyntaxNode syntax, KeyValuePair[] caseLabels, object fallThroughLabel, Cci.PrimitiveTypeCode keyTypeCode, LocalOrParameter key) { _builder = builder; + _syntax = syntax; _key = key; _keyTypeCode = keyTypeCode; _fallThroughLabel = fallThroughLabel; @@ -423,7 +430,7 @@ private void EmitCondBranchForSwitch(ILOpCode branchCode, ConstantValue constant // branch branchCode targetLabel _builder.EmitLoad(_key); - _builder.EmitConstantValue(constant); + _builder.EmitConstantValue(constant, _syntax); _builder.EmitBranch(branchCode, targetLabel, GetReverseBranchCode(branchCode)); } @@ -443,7 +450,7 @@ private void EmitEqBranchForSwitch(ConstantValue constant, object targetLabel) } else { - _builder.EmitConstantValue(constant); + _builder.EmitConstantValue(constant, _syntax); _builder.EmitBranch(ILOpCode.Beq, targetLabel); } } @@ -458,7 +465,7 @@ private void EmitRangeCheckedBranch(ConstantValue startConstant, ConstantValue e // sub if (!startConstant.IsDefaultValue) { - _builder.EmitConstantValue(startConstant); + _builder.EmitConstantValue(startConstant, _syntax); _builder.EmitOpCode(ILOpCode.Sub); } @@ -521,7 +528,7 @@ private void EmitNormalizedSwitchKey(ConstantValue startConstant, ConstantValue // sub if (!startConstant.IsDefaultValue) { - _builder.EmitConstantValue(startConstant); + _builder.EmitConstantValue(startConstant, _syntax); _builder.EmitOpCode(ILOpCode.Sub); } diff --git a/src/roslyn/src/Compilers/Core/Portable/CodeGen/SwitchStringJumpTableEmitter.cs b/src/roslyn/src/Compilers/Core/Portable/CodeGen/SwitchStringJumpTableEmitter.cs index d496e0a67be..939427eac69 100644 --- a/src/roslyn/src/Compilers/Core/Portable/CodeGen/SwitchStringJumpTableEmitter.cs +++ b/src/roslyn/src/Compilers/Core/Portable/CodeGen/SwitchStringJumpTableEmitter.cs @@ -19,6 +19,11 @@ internal readonly struct SwitchStringJumpTableEmitter { private readonly ILBuilder _builder; + /// + /// Associated syntax for diagnostic reporting. + /// + private readonly SyntaxNode _syntax; + /// /// Switch key for the jump table /// @@ -65,6 +70,7 @@ internal readonly struct SwitchStringJumpTableEmitter internal SwitchStringJumpTableEmitter( ILBuilder builder, + SyntaxNode syntax, LocalOrParameter key, KeyValuePair[] caseLabels, object fallThroughLabel, @@ -76,6 +82,7 @@ internal SwitchStringJumpTableEmitter( RoslynDebug.Assert(emitStringCondBranchDelegate != null); _builder = builder; + _syntax = syntax; _key = key; _caseLabels = caseLabels; _fallThroughLabel = fallThroughLabel; @@ -148,6 +155,7 @@ private Dictionary EmitHashBucketJumpTable(Dictionary EmitDifference(baseline, edits, isAddedSymbol, metadataStream, ilStream, pdbStream, EmitDifferenceOptions.Default, cancellationToken); + + /// + /// Emit the differences between the compilation and the previous generation + /// for Edit and Continue. The differences are expressed as added and changed + /// symbols, and are emitted as metadata, IL, and PDB deltas. A representation + /// of the current compilation is returned as an EmitBaseline for use in a + /// subsequent Edit and Continue. + /// + public EmitDifferenceResult EmitDifference( + EmitBaseline baseline, + IEnumerable edits, + Func isAddedSymbol, + Stream metadataStream, + Stream ilStream, + Stream pdbStream, + EmitDifferenceOptions options, + CancellationToken cancellationToken = default(CancellationToken)) { if (baseline == null) { @@ -3128,7 +3146,7 @@ public EmitDifferenceResult EmitDifference( throw new ArgumentNullException(nameof(pdbStream)); } - return this.EmitDifference(baseline, edits, isAddedSymbol, metadataStream, ilStream, pdbStream, testData: null, cancellationToken); + return this.EmitDifference(baseline, edits, isAddedSymbol, metadataStream, ilStream, pdbStream, options, testData: null, cancellationToken); } #pragma warning restore RS0026 // Do not add multiple public overloads with optional parameters @@ -3139,6 +3157,7 @@ internal abstract EmitDifferenceResult EmitDifference( Stream metadataStream, Stream ilStream, Stream pdbStream, + EmitDifferenceOptions options, CompilationTestData? testData, CancellationToken cancellationToken); @@ -3422,7 +3441,6 @@ internal static bool SerializePeToStream( internal EmitBaseline? SerializeToDeltaStreams( CommonPEModuleBuilder moduleBeingBuilt, DefinitionMap definitionMap, - SymbolChanges changes, Stream metadataStream, Stream ilStream, Stream pdbStream, @@ -3442,7 +3460,6 @@ internal static bool SerializePeToStream( using (nativePdbWriter) { var context = new EmitContext(moduleBeingBuilt, diagnostics, metadataOnly: false, includePrivateMembers: true); - var deletedMethodDefs = DeltaMetadataWriter.CreateDeletedMethodsDefs(context, changes); // Map the definitions from the previous compilation to the current compilation. // This must be done after compiling since synthesized definitions (generated when compiling method bodies) @@ -3460,8 +3477,6 @@ internal static bool SerializePeToStream( baseline, encId, definitionMap, - changes, - deletedMethodDefs, cancellationToken); moduleBeingBuilt.TestData?.SetMetadataWriter(writer); @@ -3497,7 +3512,7 @@ internal static bool SerializePeToStream( } finally { - foreach (var (_, builder) in deletedMethodDefs) + foreach (var (_, builder) in moduleBeingBuilt.GetDeletedMethodDefinitions()) { builder.Free(); } diff --git a/src/roslyn/src/Compilers/Core/Portable/Compilation/EmitDifferenceOptions.cs b/src/roslyn/src/Compilers/Core/Portable/Compilation/EmitDifferenceOptions.cs new file mode 100644 index 00000000000..b793f7cad97 --- /dev/null +++ b/src/roslyn/src/Compilers/Core/Portable/Compilation/EmitDifferenceOptions.cs @@ -0,0 +1,15 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace Microsoft.CodeAnalysis.Emit; + +public readonly struct EmitDifferenceOptions() +{ + public static readonly EmitDifferenceOptions Default = new(); + + /// + /// True to emit FieldRva table entries. The runtime must support this feature. + /// + public bool EmitFieldRva { get; init; } +} diff --git a/src/roslyn/src/Compilers/Core/Portable/Diagnostic/CommonMessageProvider.cs b/src/roslyn/src/Compilers/Core/Portable/Diagnostic/CommonMessageProvider.cs index b662165fee4..6d3310c771b 100644 --- a/src/roslyn/src/Compilers/Core/Portable/Diagnostic/CommonMessageProvider.cs +++ b/src/roslyn/src/Compilers/Core/Portable/Diagnostic/CommonMessageProvider.cs @@ -239,6 +239,7 @@ public string GetIdForErrorCode(int errorCode) public abstract int ERR_MetadataNameTooLong { get; } public abstract int ERR_EncReferenceToAddedMember { get; } public abstract int ERR_TooManyUserStrings { get; } + public abstract int ERR_TooManyUserStrings_RestartRequired { get; } public abstract int ERR_PeWritingFailure { get; } public abstract int ERR_ModuleEmitFailure { get; } public abstract int ERR_EncUpdateFailedMissingSymbol { get; } diff --git a/src/roslyn/src/Compilers/Core/Portable/Emit/CommonPEModuleBuilder.cs b/src/roslyn/src/Compilers/Core/Portable/Emit/CommonPEModuleBuilder.cs index 84be01ad50e..e128038c6aa 100644 --- a/src/roslyn/src/Compilers/Core/Portable/Emit/CommonPEModuleBuilder.cs +++ b/src/roslyn/src/Compilers/Core/Portable/Emit/CommonPEModuleBuilder.cs @@ -7,6 +7,8 @@ using System.Collections.Generic; using System.Collections.Immutable; using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; +using System.Diagnostics.Contracts; using System.IO; using System.Linq; using System.Security.Cryptography; @@ -35,19 +37,23 @@ internal abstract class CommonPEModuleBuilder : Cci.IUnit, Cci.IModuleReference private readonly ConcurrentDictionary _methodBodyMap; private readonly TokenMap _referencesInILMap = new(); - private readonly ItemTokenMap _stringsInILMap = new(); + private readonly Lazy _stringsInILMap; private readonly ItemTokenMap _sourceDocumentsInILMap = new(); private ImmutableArray _lazyAssemblyReferenceAliases; private ImmutableArray _lazyManagedResources; private IEnumerable _embeddedTexts = SpecializedCollections.EmptyEnumerable(); + private ArrayMethods? _lazyArrayMethods; + + // Calculated when emitting EnC deltas. + private IReadOnlyDictionary>? _encDeletedMethodDefinitions; // Only set when running tests to allow inspection of the emitted data. internal CompilationTestData? TestData { get; private set; } internal EmitOptions EmitOptions { get; } - public CommonPEModuleBuilder( + protected CommonPEModuleBuilder( IEnumerable manifestResources, EmitOptions emitOptions, OutputKind outputKind, @@ -63,6 +69,7 @@ public CommonPEModuleBuilder( OutputKind = outputKind; SerializationProperties = serializationProperties; _methodBodyMap = new ConcurrentDictionary(ReferenceEqualityComparer.Instance); + _stringsInILMap = new Lazy(() => new StringTokenMap(PreviousGeneration?.UserStringStreamLength ?? 0)); EmitOptions = emitOptions; } @@ -74,6 +81,11 @@ public CommonPEModuleBuilder( /// public abstract SymbolChanges? EncSymbolChanges { get; } + /// + /// True if FieldRVA table is supported by the runtime. + /// + public abstract bool FieldRvaSupported { get; } + /// /// Previous EnC generation baseline, or null if this is not EnC delta. /// @@ -105,6 +117,27 @@ public CommonPEModuleBuilder( ///
public abstract INamedTypeSymbolInternal? GetUsedSynthesizedHotReloadExceptionType(); + /// + /// Creates definitions for deleted methods based on symbol changes if emitting EnC delta. + /// Must be called before . + /// + public void CreateDeletedMethodDefinitions(DiagnosticBag diagnosticBag) + { + Debug.Assert(_encDeletedMethodDefinitions == null); + + if (EncSymbolChanges != null) + { + var context = new EmitContext(this, diagnosticBag, metadataOnly: false, includePrivateMembers: true); + _encDeletedMethodDefinitions = DeltaMetadataWriter.CreateDeletedMethodsDefs(context, EncSymbolChanges); + } + } + + public IReadOnlyDictionary> GetDeletedMethodDefinitions() + { + Debug.Assert(_encDeletedMethodDefinitions != null); + return _encDeletedMethodDefinitions; + } + #nullable disable /// @@ -132,6 +165,11 @@ public CommonPEModuleBuilder( public abstract IEnumerable GetSourceAssemblySecurityAttributes(); public abstract IEnumerable GetSourceModuleAttributes(); internal abstract Cci.ICustomAttribute SynthesizeAttribute(WellKnownMember attributeConstructor); + public abstract Cci.IMethodReference GetInitArrayHelper(); + + public abstract Cci.IFieldReference GetFieldForData(ImmutableArray data, ushort alignment, SyntaxNode syntaxNode, DiagnosticBag diagnostics); + public abstract Cci.IFieldReference GetArrayCachingFieldForData(ImmutableArray data, Cci.IArrayTypeReference arrayType, SyntaxNode syntaxNode, DiagnosticBag diagnostics); + public abstract Cci.IFieldReference GetArrayCachingFieldForConstants(ImmutableArray constants, Cci.IArrayTypeReference arrayType, SyntaxNode syntaxNode, DiagnosticBag diagnostics); /// /// Public types defined in other modules making up this assembly and to which other assemblies may refer to via this assembly @@ -175,9 +213,35 @@ public CommonPEModuleBuilder( public abstract bool IsPlatformType(Cci.ITypeReference typeRef, Cci.PlatformType platformType); #nullable enable + public ArrayMethods ArrayMethods + { + get + { + ArrayMethods? result = _lazyArrayMethods; + + if (result == null) + { + result = new ArrayMethods(); + + if (Interlocked.CompareExchange(ref _lazyArrayMethods, result, null) != null) + { + result = _lazyArrayMethods; + } + } + + return result; + } + } + + /// + /// + /// + public Cci.IFieldReference? TryGetOrCreateFieldForStringValue(string text, SyntaxNode? syntaxNode, DiagnosticBag diagnostics) + => PrivateImplementationDetails.TryGetOrCreateFieldForStringValue(text, this, syntaxNode, diagnostics); + public abstract IEnumerable GetTopLevelTypeDefinitions(EmitContext context); - public IEnumerable GetTopLevelTypeDefinitionsCore(EmitContext context) + public IEnumerable GetTopLevelTypeDefinitionsExcludingNoPiaAndRootModule(EmitContext context, bool includePrivateImplementationDetails) { foreach (var typeDef in GetAnonymousTypeDefinitions(context)) { @@ -199,14 +263,17 @@ public CommonPEModuleBuilder( yield return typeDef; } - var privateImpl = GetFrozenPrivateImplementationDetails(); - if (privateImpl != null) + if (includePrivateImplementationDetails) { - yield return privateImpl; - - foreach (var typeDef in privateImpl.GetAdditionalTopLevelTypes()) + var privateImpl = GetFrozenPrivateImplementationDetails(); + if (privateImpl != null) { - yield return typeDef; + yield return privateImpl; + + foreach (var typeDef in privateImpl.GetAdditionalTopLevelTypes()) + { + yield return typeDef; + } } } } @@ -390,7 +457,7 @@ public Cci.IAssemblyReference GetContainingAssembly(EmitContext context) /// public string[] CopyStrings() { - return _stringsInILMap.CopyItems(); + return _stringsInILMap.Value.CopyValues(); } public uint GetFakeSymbolTokenForIL(Cci.IReference symbol, SyntaxNode syntaxNode, DiagnosticBag diagnostics) @@ -428,15 +495,11 @@ public object GetReferenceFromToken(uint token) return _referencesInILMap.GetItem(token); } - public uint GetFakeStringTokenForIL(string str) - { - return _stringsInILMap.GetOrAddTokenFor(str); - } + public bool TryGetFakeStringTokenForIL(string str, out uint token) + => _stringsInILMap.Value.TryGetOrAddToken(str, out token); public string GetStringFromToken(uint token) - { - return _stringsInILMap.GetItem(token); - } + => _stringsInILMap.Value.GetValue(token); public ReadOnlySpan ReferencesInIL() { @@ -577,7 +640,7 @@ public int GetTypeDefinitionGeneration(Cci.INamedTypeDefinition typeDef) /// /// Common base class for C# and VB PE module builder. /// - internal abstract class PEModuleBuilder : CommonPEModuleBuilder, ITokenDeferral + internal abstract class PEModuleBuilder : CommonPEModuleBuilder where TCompilation : Compilation where TSourceModuleSymbol : class, IModuleSymbolInternal where TAssemblySymbol : class, IAssemblySymbolInternal @@ -592,7 +655,6 @@ internal abstract class PEModuleBuilder _namesOfTopLevelTypes; internal readonly TModuleCompilationState CompilationState; @@ -686,7 +748,7 @@ protected bool ContainsTopLevelType(string fullEmittedName) VisitTopLevelType(typeReferenceIndexer, RootModuleType); yield return RootModuleType; - foreach (var typeDef in GetTopLevelTypeDefinitionsCore(context)) + foreach (var typeDef in GetTopLevelTypeDefinitionsExcludingNoPiaAndRootModule(context, includePrivateImplementationDetails: true)) { AddTopLevelType(names, typeDef); VisitTopLevelType(typeReferenceIndexer, typeDef); @@ -1018,7 +1080,7 @@ internal override ImmutableDictionary data, ushort alignment, SyntaxNode syntaxNode, DiagnosticBag diagnostics) + public sealed override Cci.IFieldReference GetFieldForData(ImmutableArray data, ushort alignment, SyntaxNode syntaxNode, DiagnosticBag diagnostics) { RoslynDebug.Assert(alignment is 1 or 2 or 4 or 8, $"Unexpected alignment: {alignment}"); @@ -1028,7 +1090,7 @@ Cci.IFieldReference ITokenDeferral.GetFieldForData(ImmutableArray data, us return privateImpl.GetOrAddDataField(data, alignment); } - Cci.IFieldReference ITokenDeferral.GetArrayCachingFieldForData(ImmutableArray data, Cci.IArrayTypeReference arrayType, SyntaxNode syntaxNode, DiagnosticBag diagnostics) + public sealed override Cci.IFieldReference GetArrayCachingFieldForData(ImmutableArray data, Cci.IArrayTypeReference arrayType, SyntaxNode syntaxNode, DiagnosticBag diagnostics) { var privateImpl = GetPrivateImplClass((TSyntaxNode)syntaxNode, diagnostics); @@ -1038,43 +1100,13 @@ Cci.IFieldReference ITokenDeferral.GetArrayCachingFieldForData(ImmutableArray constants, Cci.IArrayTypeReference arrayType, SyntaxNode syntaxNode, DiagnosticBag diagnostics) + public sealed override Cci.IFieldReference GetArrayCachingFieldForConstants(ImmutableArray constants, Cci.IArrayTypeReference arrayType, SyntaxNode syntaxNode, DiagnosticBag diagnostics) { var privateImpl = GetPrivateImplClass((TSyntaxNode)syntaxNode, diagnostics); var emitContext = new EmitContext(this, syntaxNode, diagnostics, metadataOnly: false, includePrivateMembers: true); return privateImpl.CreateArrayCachingField(constants, arrayType, emitContext); } - /// - /// - /// - public Cci.IFieldReference TryGetOrCreateFieldForStringValue(string text, TSyntaxNode syntaxNode, DiagnosticBag diagnostics) - { - return PrivateImplementationDetails.TryGetOrCreateFieldForStringValue(text, this, syntaxNode, diagnostics); - } - - public abstract Cci.IMethodReference GetInitArrayHelper(); - - public ArrayMethods ArrayMethods - { - get - { - ArrayMethods result = _lazyArrayMethods; - - if (result == null) - { - result = new ArrayMethods(); - - if (Interlocked.CompareExchange(ref _lazyArrayMethods, result, null) != null) - { - result = _lazyArrayMethods; - } - } - - return result; - } - } - #endregion #region Private Implementation Details Type diff --git a/src/roslyn/src/Compilers/Core/Portable/Emit/EditAndContinue/DeletedMethodBody.cs b/src/roslyn/src/Compilers/Core/Portable/Emit/EditAndContinue/DeletedMethodBody.cs index 72328ce9017..4ece9e7aa10 100644 --- a/src/roslyn/src/Compilers/Core/Portable/Emit/EditAndContinue/DeletedMethodBody.cs +++ b/src/roslyn/src/Compilers/Core/Portable/Emit/EditAndContinue/DeletedMethodBody.cs @@ -43,7 +43,7 @@ internal sealed class DeletedMethodBody(IDeletedMethodDefinition methodDef, Immu public DebugId MethodId => default; - public ImmutableArray StateMachineHoistedLocalScopes => ImmutableArray.Empty; + public ImmutableArray StateMachineHoistedLocalScopes => default; public string StateMachineTypeName => null; @@ -68,7 +68,7 @@ public static ImmutableArray GetIL(EmitContext context, RuntimeRudeEdit? r { var hotReloadExceptionCtorDef = context.Module.GetOrCreateHotReloadExceptionConstructorDefinition(); - var builder = new ILBuilder((ITokenDeferral)context.Module, null, OptimizationLevel.Debug, false); + var builder = new ILBuilder(context.Module, localSlotManager: null, context.Diagnostics, OptimizationLevel.Debug, areLocalsZeroed: false); string message; int codeValue; @@ -84,12 +84,14 @@ public static ImmutableArray GetIL(EmitContext context, RuntimeRudeEdit? r codeValue = code.GetExceptionCodeValue(); } - builder.EmitStringConstant(message); + var syntaxNode = context.SyntaxNode; + + builder.EmitStringConstant(message, syntaxNode); builder.EmitIntConstant(codeValue); // consumes message and code, pushes the created exception object: builder.EmitOpCode(ILOpCode.Newobj, stackAdjustment: -1); - builder.EmitToken(hotReloadExceptionCtorDef.GetCciAdapter(), context.SyntaxNode!, context.Diagnostics); + builder.EmitToken(hotReloadExceptionCtorDef.GetCciAdapter(), syntaxNode); builder.EmitThrow(isRethrow: false); builder.Realize(); diff --git a/src/roslyn/src/Compilers/Core/Portable/Emit/EditAndContinue/DeltaMetadataWriter.cs b/src/roslyn/src/Compilers/Core/Portable/Emit/EditAndContinue/DeltaMetadataWriter.cs index 797c54af87e..96a218ede1d 100644 --- a/src/roslyn/src/Compilers/Core/Portable/Emit/EditAndContinue/DeltaMetadataWriter.cs +++ b/src/roslyn/src/Compilers/Core/Portable/Emit/EditAndContinue/DeltaMetadataWriter.cs @@ -26,7 +26,6 @@ internal sealed class DeltaMetadataWriter : MetadataWriter private readonly EmitBaseline _previousGeneration; private readonly Guid _encId; private readonly DefinitionMap _definitionMap; - private readonly SymbolChanges _changes; /// /// Type definitions containing any changes (includes added types). @@ -73,8 +72,6 @@ public DeltaMetadataWriter( EmitBaseline previousGeneration, Guid encId, DefinitionMap definitionMap, - SymbolChanges changes, - IReadOnlyDictionary> deletedMethodDefs, CancellationToken cancellationToken) : base(metadata: MakeTablesBuilder(previousGeneration), debugMetadataOpt: (context.Module.DebugInformationFormat == DebugInformationFormat.PortablePdb) ? new MetadataBuilder() : null, @@ -87,20 +84,20 @@ public DeltaMetadataWriter( cancellationToken: cancellationToken) { Debug.Assert(previousGeneration != null); - Debug.Assert(encId != default(Guid)); + Debug.Assert(encId != default); Debug.Assert(encId != previousGeneration.EncId); Debug.Assert(context.Module.DebugInformationFormat != DebugInformationFormat.Embedded); + Debug.Assert(context.Module.EncSymbolChanges != null); _previousGeneration = previousGeneration; _encId = encId; _definitionMap = definitionMap; - _changes = changes; var sizes = previousGeneration.TableSizes; _changedTypeDefs = new List(); _deletedTypeMembers = new Dictionary>(ReferenceEqualityComparer.Instance); - _deletedMethodDefs = deletedMethodDefs; + _deletedMethodDefs = context.Module.GetDeletedMethodDefinitions(); _typeDefs = new DefinitionIndex(this.TryGetExistingTypeDefIndex, sizes[(int)TableIndex.TypeDef]); _eventDefs = new DefinitionIndex(this.TryGetExistingEventDefIndex, sizes[(int)TableIndex.Event]); _fieldDefs = new DefinitionIndex(this.TryGetExistingFieldDefIndex, sizes[(int)TableIndex.Field]); @@ -130,13 +127,27 @@ public DeltaMetadataWriter( _addedOrChangedMethods = new Dictionary(Cci.SymbolEquivalentEqualityComparer.Instance); } + public SymbolChanges Changes + { + get + { + var changes = Context.Module.EncSymbolChanges; + Debug.Assert(changes != null); + return changes; + } + } + private static MetadataBuilder MakeTablesBuilder(EmitBaseline previousGeneration) { return new MetadataBuilder( - previousGeneration.UserStringStreamLength, - previousGeneration.StringStreamLength, - previousGeneration.BlobStreamLength, - previousGeneration.GuidStreamLength); + // Any string on the #UserString heap must start at an offset less than 2^24 (limited by token size). + // The baseline #UserString heap size might exceed this limit as long as the last string it contains starts within the limit. + // If the limit is exceeded we can't add any more strings in the delta heap (they would start beyond the limit), but we still can emit deltas. + // The check in MetadataBuilder constructor is enforcing the limit, but it should really only throw when a new string is added. + userStringHeapStartOffset: Math.Min(MetadataHelpers.UserStringHeapCapacity, previousGeneration.UserStringStreamLength), + stringHeapStartOffset: previousGeneration.StringStreamLength, + blobHeapStartOffset: previousGeneration.BlobStreamLength, + guidHeapStartOffset: previousGeneration.GuidStreamLength); } private ImmutableArray GetDeltaTableSizes(ImmutableArray rowCounts) @@ -196,7 +207,7 @@ internal EmitBaseline GetDelta(Compilation compilation, Guid encId, MetadataSize var generationOrdinals = CreateDictionary(_previousGeneration.GenerationOrdinals, SymbolEquivalentEqualityComparer.Instance); foreach (var (addedType, _) in addedTypes) { - if (_changes.IsReplacedDef(addedType)) + if (Changes.IsReplacedDef(addedType)) { generationOrdinals[addedType] = currentGenerationOrdinal; } @@ -496,7 +507,9 @@ internal static IReadOnlyDictionary>(ReferenceEqualityComparer.Instance); var typesUsedByDeletedMembers = new Dictionary(ReferenceEqualityComparer.Instance); - foreach (var typeDef in context.Module.GetTopLevelTypeDefinitions(context)) + // Skip PrivateImplementationDetails - we should only be adding new members to it. + // Emitting deleted method body may also produce new PrivateImplementationDetails members. + foreach (var typeDef in context.Module.GetTopLevelTypeDefinitionsExcludingNoPiaAndRootModule(context, includePrivateImplementationDetails: false)) { recurse(typeDef); } @@ -588,7 +601,7 @@ void addDeletedClosureMethods(IMethodSymbolInternal oldMethod, ImmutableArray rowCounts, ArrayBuilder TableIndex.ModuleRef, TableIndex.TypeSpec, TableIndex.ImplMap, - // FieldRva is not needed since we do not emit fields with explicit mapping during EnC. - // https://github.com/dotnet/roslyn/issues/69480 - //TableIndex.FieldRva, + TableIndex.FieldRva, TableIndex.EncLog, TableIndex.EncMap, TableIndex.Assembly, @@ -1824,7 +1835,7 @@ private sealed class DeltaReferenceIndexer : ReferenceIndexer public DeltaReferenceIndexer(DeltaMetadataWriter writer) : base(writer) { - _changes = writer._changes; + _changes = writer.Changes; _deletedTypeMembers = writer._deletedTypeMembers; } diff --git a/src/roslyn/src/Compilers/Core/Portable/MetadataReader/MetadataHelpers.cs b/src/roslyn/src/Compilers/Core/Portable/MetadataReader/MetadataHelpers.cs index 74cec5acf2e..7fce63b6d05 100644 --- a/src/roslyn/src/Compilers/Core/Portable/MetadataReader/MetadataHelpers.cs +++ b/src/roslyn/src/Compilers/Core/Portable/MetadataReader/MetadataHelpers.cs @@ -19,6 +19,17 @@ namespace Microsoft.CodeAnalysis { internal static class MetadataHelpers { + /// + /// Once the #UserString heap reaches this size, we can't emit any more string literals to it. + /// + /// The max number of bytes that can fit into #US the heap is 2^29 - 1, + /// but each string also needs to have an offset that's at most 0xffffff (2^24 - 1) to be addressable by a token. + /// First byte of the heap is reserved (0), hence there is 2 ^ 24 - 2 bytes available for user strings. + /// + /// See https://github.com/dotnet/runtime/blob/2bd17019c1c01a6bf17a2de244ff92591fc3c334/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/Ecma335/MetadataBuilder.Heaps.cs#L82 + /// + internal const int UserStringHeapCapacity = 0xfffffe; + // https://github.com/dotnet/roslyn/issues/73548: // Remove this constant and refer to GenericParameterAttributes.AllowByRefLike directly once the new enum member becomes available. // See // https://github.com/dotnet/runtime/issues/68002#issuecomment-1942166436 for more details. @@ -1066,5 +1077,35 @@ internal static string MangleForTypeNameIfNeeded(string moduleName) return pooledStrBuilder.ToStringAndFree(); } + + /// + /// Calculates the number of bytes written on #UserHeap for the given string. + /// See https://github.com/dotnet/runtime/blob/5bfc0bec9d627c946f154dd99103a393d278f841/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/BlobBuilder.cs#L1044 + /// + internal static int GetUserStringBlobSize(string value) + { + var byteLength = value.Length * 2 + 1; + return GetCompressedIntegerSize(byteLength) + byteLength; + } + + /// + /// See https://github.com/dotnet/runtime/blob/5bfc0bec9d627c946f154dd99103a393d278f841/src/libraries/System.Reflection.Metadata/src/System/Reflection/Metadata/BlobWriterImpl.cs#L16 + /// + private static int GetCompressedIntegerSize(int value) + { + Debug.Assert(value <= 0x1fffffff); + + if (value <= 0x7f) + { + return 1; + } + + if (value <= 0x3fff) + { + return 2; + } + + return 4; + } } } diff --git a/src/roslyn/src/Compilers/Core/Portable/PEWriter/MetadataWriter.cs b/src/roslyn/src/Compilers/Core/Portable/PEWriter/MetadataWriter.cs index f50496068f9..9ac8a57318e 100644 --- a/src/roslyn/src/Compilers/Core/Portable/PEWriter/MetadataWriter.cs +++ b/src/roslyn/src/Compilers/Core/Portable/PEWriter/MetadataWriter.cs @@ -1719,7 +1719,6 @@ public void WriteMetadataAndIL(PdbWriter? nativePdbWriterOpt, Stream metadataStr Debug.Assert(typeSystemRowCounts[(int)TableIndex.EncMap] == 0); PopulateEncTables(typeSystemRowCounts); - Debug.Assert(mappedFieldDataBuilder == null); Debug.Assert(managedResourceDataBuilder == null); Debug.Assert(mvidFixup.IsDefault); Debug.Assert(mvidStringFixup.IsDefault); @@ -1742,9 +1741,13 @@ public void WriteMetadataAndIL(PdbWriter? nativePdbWriterOpt, Stream metadataStr try { ilBuilder.WriteContentTo(ilStream); + + // in EnC delta FieldRVA data are appended to the IL stream: + mappedFieldDataBuilder?.WriteContentTo(ilStream); + metadataBuilder.WriteContentTo(metadataStream); } - catch (Exception e) when (!(e is OperationCanceledException)) + catch (Exception e) when (e is not OperationCanceledException) { throw new PeWritingException(e); } @@ -1844,7 +1847,10 @@ public void BuildMetadataAndIL( _dynamicAnalysisDataWriterOpt.SerializeMetadataTables(dynamicAnalysisData); } - PopulateTypeSystemTables(methodBodyOffsets, out mappedFieldDataBuilder, out managedResourceDataBuilder, dynamicAnalysisData, out mvidFixup); + // in EnC delta the FieldRVA data is stored to IL stream following all the method bodies: + int mappedFieldDataStartOffset = IsFullMetadata ? 0 : ilBuilder.Count; + + PopulateTypeSystemTables(methodBodyOffsets, mappedFieldDataStartOffset, out mappedFieldDataBuilder, out managedResourceDataBuilder, dynamicAnalysisData, out mvidFixup); dynamicAnalysisData?.Free(); } #nullable disable @@ -1907,7 +1913,7 @@ private ImmutableArray GetSortedGenericParameters() } #nullable enable - private void PopulateTypeSystemTables(int[] methodBodyOffsets, out PooledBlobBuilder? mappedFieldDataWriter, out PooledBlobBuilder? resourceWriter, BlobBuilder? dynamicAnalysisData, out Blob mvidFixup) + private void PopulateTypeSystemTables(int[] methodBodyOffsets, int mappedFieldDataStartOffset, out PooledBlobBuilder? mappedFieldDataWriter, out PooledBlobBuilder? resourceWriter, BlobBuilder? dynamicAnalysisData, out Blob mvidFixup) { var sortedGenericParameters = GetSortedGenericParameters(); @@ -1921,7 +1927,7 @@ private void PopulateTypeSystemTables(int[] methodBodyOffsets, out PooledBlobBui this.PopulateExportedTypeTableRows(); this.PopulateFieldLayoutTableRows(); this.PopulateFieldMarshalTableRows(); - this.PopulateFieldRvaTableRows(out mappedFieldDataWriter); + this.PopulateFieldRvaTableRows(mappedFieldDataStartOffset, out mappedFieldDataWriter); this.PopulateFieldTableRows(); this.PopulateFileTableRows(); this.PopulateGenericParameters(sortedGenericParameters); @@ -2329,9 +2335,9 @@ private void PopulateFieldMarshalTableRows() } #nullable enable - private void PopulateFieldRvaTableRows(out PooledBlobBuilder? mappedFieldDataWriter) + private void PopulateFieldRvaTableRows(int mappedFieldDataStartOffset, out PooledBlobBuilder? mappedFieldDataBuilder) { - mappedFieldDataWriter = null; + mappedFieldDataBuilder = null; foreach (IFieldDefinition fieldDef in this.GetFieldDefs()) { @@ -2340,19 +2346,26 @@ private void PopulateFieldRvaTableRows(out PooledBlobBuilder? mappedFieldDataWri continue; } - mappedFieldDataWriter ??= PooledBlobBuilder.GetInstance(); + if (mappedFieldDataBuilder == null) + { + mappedFieldDataBuilder = PooledBlobBuilder.GetInstance(); + + // insert alignment bytes as needed: + var alignedStartOffset = BitArithmeticUtilities.Align(mappedFieldDataStartOffset, ManagedPEBuilder.MappedFieldDataAlignment); + mappedFieldDataBuilder.WriteBytes(0, alignedStartOffset - mappedFieldDataStartOffset); + } // The compiler always aligns each RVA data field to an 8-byte boundary; this accommodates the alignment // needs for all primitive types, regardless of which type is actually being used, at the expense of // potentially wasting up to 7 bytes per field if the alignment needs are less. In the future, this // potentially could be tightened to align each field only as much as is actually required by that // field, saving a few bytes per field. - int offset = mappedFieldDataWriter.Count; + int offset = mappedFieldDataStartOffset + mappedFieldDataBuilder.Count; Debug.Assert(offset % ManagedPEBuilder.MappedFieldDataAlignment == 0, "Expected last write to end at alignment boundary"); Debug.Assert(ManagedPEBuilder.MappedFieldDataAlignment == 8, "Expected alignment to be 8"); - mappedFieldDataWriter.WriteBytes(fieldDef.MappedData); - mappedFieldDataWriter.Align(ManagedPEBuilder.MappedFieldDataAlignment); + mappedFieldDataBuilder.WriteBytes(fieldDef.MappedData); + mappedFieldDataBuilder.Align(ManagedPEBuilder.MappedFieldDataAlignment); metadata.AddFieldRelativeVirtualAddress( field: GetFieldDefinitionHandle(fieldDef), diff --git a/src/roslyn/src/Compilers/Core/Portable/PEWriter/MethodDefinitionBase.cs b/src/roslyn/src/Compilers/Core/Portable/PEWriter/MethodDefinitionBase.cs index 712124d888c..3e5e4814c3b 100644 --- a/src/roslyn/src/Compilers/Core/Portable/PEWriter/MethodDefinitionBase.cs +++ b/src/roslyn/src/Compilers/Core/Portable/PEWriter/MethodDefinitionBase.cs @@ -149,13 +149,13 @@ public MethodDefinitionBase(ITypeDefinition containingTypeDefinition, ushort max public DebugId MethodId => default; - public ImmutableArray StateMachineHoistedLocalScopes => ImmutableArray.Empty; + public ImmutableArray StateMachineHoistedLocalScopes => default; public string StateMachineTypeName => null; - public ImmutableArray StateMachineHoistedLocalSlots => ImmutableArray.Empty; + public ImmutableArray StateMachineHoistedLocalSlots => default; - public ImmutableArray StateMachineAwaiterSlots => ImmutableArray.Empty; + public ImmutableArray StateMachineAwaiterSlots => default; public ImmutableArray ClosureDebugInfo => ImmutableArray.Empty; diff --git a/src/roslyn/src/Compilers/Core/Portable/PublicAPI.Unshipped.txt b/src/roslyn/src/Compilers/Core/Portable/PublicAPI.Unshipped.txt index a093220786c..d93281dfa34 100644 --- a/src/roslyn/src/Compilers/Core/Portable/PublicAPI.Unshipped.txt +++ b/src/roslyn/src/Compilers/Core/Portable/PublicAPI.Unshipped.txt @@ -1,13 +1,17 @@ +Microsoft.CodeAnalysis.Compilation.EmitDifference(Microsoft.CodeAnalysis.Emit.EmitBaseline! baseline, System.Collections.Generic.IEnumerable! edits, System.Func! isAddedSymbol, System.IO.Stream! metadataStream, System.IO.Stream! ilStream, System.IO.Stream! pdbStream, Microsoft.CodeAnalysis.Emit.EmitDifferenceOptions options, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> Microsoft.CodeAnalysis.Emit.EmitDifferenceResult! +Microsoft.CodeAnalysis.Emit.EmitDifferenceOptions +Microsoft.CodeAnalysis.Emit.EmitDifferenceOptions.EmitDifferenceOptions() -> void +Microsoft.CodeAnalysis.Emit.EmitDifferenceOptions.EmitFieldRva.get -> bool +Microsoft.CodeAnalysis.Emit.EmitDifferenceOptions.EmitFieldRva.init -> void +static readonly Microsoft.CodeAnalysis.Emit.EmitDifferenceOptions.Default -> Microsoft.CodeAnalysis.Emit.EmitDifferenceOptions Microsoft.CodeAnalysis.IEventSymbol.IsPartialDefinition.get -> bool Microsoft.CodeAnalysis.IEventSymbol.PartialDefinitionPart.get -> Microsoft.CodeAnalysis.IEventSymbol? Microsoft.CodeAnalysis.IEventSymbol.PartialImplementationPart.get -> Microsoft.CodeAnalysis.IEventSymbol? Microsoft.CodeAnalysis.IncrementalGeneratorPostInitializationContext.AddEmbeddedAttributeDefinition() -> void override Microsoft.CodeAnalysis.Diagnostics.AnalyzerFileReference.ToString() -> string! - Microsoft.CodeAnalysis.ITypeSymbol.IsExtension.get -> bool Microsoft.CodeAnalysis.TypeKind.Extension = 14 -> Microsoft.CodeAnalysis.TypeKind Microsoft.CodeAnalysis.ITypeSymbol.ExtensionParameter.get -> Microsoft.CodeAnalysis.IParameterSymbol? - const Microsoft.CodeAnalysis.WellKnownMemberNames.AdditionAssignmentOperatorName = "op_AdditionAssignment" -> string! const Microsoft.CodeAnalysis.WellKnownMemberNames.BitwiseAndAssignmentOperatorName = "op_BitwiseAndAssignment" -> string! const Microsoft.CodeAnalysis.WellKnownMemberNames.BitwiseOrAssignmentOperatorName = "op_BitwiseOrAssignment" -> string! @@ -26,4 +30,4 @@ const Microsoft.CodeAnalysis.WellKnownMemberNames.UnsignedRightShiftAssignmentOp const Microsoft.CodeAnalysis.WellKnownMemberNames.CheckedDecrementAssignmentOperatorName = "op_CheckedDecrementAssignment" -> string! const Microsoft.CodeAnalysis.WellKnownMemberNames.CheckedIncrementAssignmentOperatorName = "op_CheckedIncrementAssignment" -> string! const Microsoft.CodeAnalysis.WellKnownMemberNames.DecrementAssignmentOperatorName = "op_DecrementAssignment" -> string! -const Microsoft.CodeAnalysis.WellKnownMemberNames.IncrementAssignmentOperatorName = "op_IncrementAssignment" -> string! \ No newline at end of file +const Microsoft.CodeAnalysis.WellKnownMemberNames.IncrementAssignmentOperatorName = "op_IncrementAssignment" -> string! diff --git a/src/roslyn/src/Compilers/Test/Core/Compilation/CompilationDifference.cs b/src/roslyn/src/Compilers/Test/Core/Compilation/CompilationDifference.cs index 7e2c84c4e02..164703d1fc3 100644 --- a/src/roslyn/src/Compilers/Test/Core/Compilation/CompilationDifference.cs +++ b/src/roslyn/src/Compilers/Test/Core/Compilation/CompilationDifference.cs @@ -64,7 +64,8 @@ public void VerifyIL( [CallerLineNumber] int callerLine = 0, [CallerFilePath] string callerPath = null) { - string actualIL = ILDelta.GetMethodIL(); + using var readerProvider = MetadataReaderProvider.FromMetadataImage(MetadataDelta); + string actualIL = ILValidation.DumpEncDeltaMethodBodies(ILDelta, [readerProvider.GetMetadataReader()]); AssertEx.AssertEqualToleratingWhitespaceDifferences(expectedIL, actualIL, escapeQuotes: false, expectedValueSourcePath: callerPath, expectedValueSourceLine: callerLine); } diff --git a/src/roslyn/src/Compilers/Test/Core/Compilation/CompilationExtensions.cs b/src/roslyn/src/Compilers/Test/Core/Compilation/CompilationExtensions.cs index e2fdfbcc60d..32f881abf5f 100644 --- a/src/roslyn/src/Compilers/Test/Core/Compilation/CompilationExtensions.cs +++ b/src/roslyn/src/Compilers/Test/Core/Compilation/CompilationExtensions.cs @@ -142,6 +142,7 @@ internal static CompilationDifference EmitDifference( EmitBaseline baseline, ImmutableArray edits, IEnumerable allAddedSymbols = null, + EmitDifferenceOptions? options = null, CompilationTestData testData = null) { testData ??= new CompilationTestData(); @@ -158,6 +159,7 @@ internal static CompilationDifference EmitDifference( mdStream, ilStream, pdbStream, + options ?? EmitDifferenceOptions.Default, testData, CancellationToken.None); diff --git a/src/roslyn/src/Compilers/Test/Core/Metadata/ILBuilderVisualizer.cs b/src/roslyn/src/Compilers/Test/Core/Metadata/ILBuilderVisualizer.cs index b002e0c839c..6c4b3b99c5a 100644 --- a/src/roslyn/src/Compilers/Test/Core/Metadata/ILBuilderVisualizer.cs +++ b/src/roslyn/src/Compilers/Test/Core/Metadata/ILBuilderVisualizer.cs @@ -5,29 +5,29 @@ using System; using System.Collections.Generic; using System.Collections.Immutable; +using System.Diagnostics; using System.Reflection.Emit; using System.Reflection.Metadata; using System.Text; -using Microsoft.CodeAnalysis.PooledObjects; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CodeGen; +using Microsoft.CodeAnalysis.Emit; +using Microsoft.CodeAnalysis.PooledObjects; +using Microsoft.CodeAnalysis.Symbols; using Microsoft.Metadata.Tools; using Roslyn.Utilities; using Cci = Microsoft.Cci; -using Microsoft.CodeAnalysis.Symbols; -using System.Diagnostics; -using System.Reflection.Metadata.Ecma335; namespace Roslyn.Test.Utilities { internal sealed class ILBuilderVisualizer : ILVisualizer { - private readonly ITokenDeferral _tokenDeferral; + private readonly CommonPEModuleBuilder _module; private readonly SymbolDisplayFormat _symbolDisplayFormat; - public ILBuilderVisualizer(ITokenDeferral tokenDeferral, SymbolDisplayFormat? symbolDisplayFormat = null) + public ILBuilderVisualizer(CommonPEModuleBuilder module, SymbolDisplayFormat? symbolDisplayFormat = null) { - _tokenDeferral = tokenDeferral; + _module = module; _symbolDisplayFormat = symbolDisplayFormat ?? SymbolDisplayFormat.ILVisualizationFormat; } @@ -39,7 +39,7 @@ public override string VisualizeUserString(uint token) return "##MVID##"; } - return "\"" + _tokenDeferral.GetStringFromToken(token) + "\""; + return "\"" + _module.GetStringFromToken(token) + "\""; } public override string VisualizeSymbol(uint token, OperandType operandType) @@ -58,7 +58,7 @@ public override string VisualizeSymbol(uint token, OperandType operandType) token &= 0xffffff; } - object reference = _tokenDeferral.GetReferenceFromToken(token); + object reference = _module.GetReferenceFromToken(token); ISymbol? symbol = ((reference as ISymbolInternal) ?? (reference as Cci.IReference)?.GetInternalSymbol())?.GetISymbol(); return string.Format("\"{0}\"", symbol == null ? (object)reference : symbol.ToDisplayString(_symbolDisplayFormat)); } @@ -140,6 +140,8 @@ internal static string ILBuilderToString( IReadOnlyDictionary? markers = null, SymbolDisplayFormat? ilFormat = null) { + Debug.Assert(builder.LocalSlotManager != null); + var sb = new StringBuilder(); var ilStream = builder.RealizedIL; @@ -178,6 +180,8 @@ internal static string LocalSignatureToString( ILBuilder builder, Func? mapLocal = null) { + Debug.Assert(builder.LocalSlotManager != null); + var sb = new StringBuilder(); if (mapLocal == null) diff --git a/src/roslyn/src/Compilers/Test/Core/Metadata/ILValidation.cs b/src/roslyn/src/Compilers/Test/Core/Metadata/ILValidation.cs index 0503ba220aa..0d54449bcf1 100644 --- a/src/roslyn/src/Compilers/Test/Core/Metadata/ILValidation.cs +++ b/src/roslyn/src/Compilers/Test/Core/Metadata/ILValidation.cs @@ -7,10 +7,12 @@ using System; using System.Collections.Generic; using System.Collections.Immutable; +using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Reflection.Metadata; +using System.Reflection.Metadata.Ecma335; using System.Reflection.PortableExecutable; using System.Security.Cryptography; using System.Text; @@ -263,50 +265,98 @@ private static IEnumerable GetContentToSign( }); } - public static unsafe string GetMethodIL(this ImmutableArray ilArray) + public static unsafe string DumpEncDeltaMethodBodies(ImmutableArray il, ImmutableArray readers) { + var reader = readers[^1]; + + var rvasAndNames = from handle in reader.MethodDefinitions + let method = reader.GetMethodDefinition(handle) + orderby method.RelativeVirtualAddress + group method.Name by method.RelativeVirtualAddress into g + // Legacy test support: name can only be resolved when readers for all generations are given. + select (g.Key, readers.Length > 1 ? string.Join(", ", g.Select(readers.GetString)) : null); + var result = new StringBuilder(); - fixed (byte* ilPtr = ilArray.ToArray()) + + fixed (byte* ilPtr = il.ToArray()) { - int offset = 0; - while (true) - { - // skip padding: - while (offset < ilArray.Length && ilArray[offset] == 0) - { - offset++; - } + var bodyReader = new BlobReader(ilPtr, il.Length); - if (offset == ilArray.Length) + foreach (var (rva, name) in rvasAndNames) + { + if (name != null) { - break; + result.AppendLine(name); } - var reader = new BlobReader(ilPtr + offset, ilArray.Length - offset); - var methodIL = MethodBodyBlock.Create(reader); + bodyReader.Offset = rva; - if (methodIL == null) + MethodBodyBlock body; + try { - result.AppendFormat("", ilArray[offset], offset); - offset++; + body = MethodBodyBlock.Create(bodyReader); } - else + catch (BadImageFormatException) { - ILVisualizer.Default.DumpMethod( - result, - methodIL.MaxStack, - methodIL.GetILContent(), - ImmutableArray.Create(), - ImmutableArray.Create()); - - offset += methodIL.Size; + result.AppendFormat("", il[rva], rva); + continue; } + + ILVisualizer.Default.DumpMethod( + result, + body.MaxStack, + body.GetILContent(), + locals: [], + exceptionHandlers: []); } } return result.ToString(); } + public static unsafe string DumpEncDeltaFieldData(ImmutableArray il, ImmutableArray readers) + { + var reader = readers[^1]; + var aggregator = new MetadataAggregator(readers[0], readers[1..]); + + var fieldRvaTablePtr = reader.MetadataPointer + reader.GetTableMetadataOffset(TableIndex.FieldRva); + var rowCount = reader.GetTableRowCount(TableIndex.FieldRva); + var rowSize = reader.GetTableRowSize(TableIndex.FieldRva); + var tableReader = new BlobReader(fieldRvaTablePtr, rowCount * rowSize); + + var rvasAndNames = new List<(int rva, string name)>(); + for (var i = 0; i < rowCount; i++) + { + var rva = tableReader.ReadInt32(); + + // RowIds are 4 bytes in EnC deltas + var fieldRowId = tableReader.ReadInt32(); + + if (rva > 0) + { + var fieldHandle = MetadataTokens.FieldDefinitionHandle(fieldRowId); + var genFieldHandle = (FieldDefinitionHandle)aggregator.GetGenerationHandle(fieldHandle, out var fieldGen); + var fieldDef = readers[fieldGen].GetFieldDefinition(genFieldHandle); + var genNameHandle = (StringHandle)aggregator.GetGenerationHandle(fieldDef.Name, out var nameGen); + var fieldName = readers[nameGen].GetString(genNameHandle); + + rvasAndNames.Add((rva, fieldName)); + } + } + + var result = new StringBuilder(); + + for (var i = 0; i < rvasAndNames.Count; i++) + { + var (startRva, name) = rvasAndNames[i]; + var endRva = i + 1 < rvasAndNames.Count ? rvasAndNames[i + 1].rva : il.Length; + + result.AppendLine($"{name}: {BitConverter.ToString(il[startRva..endRva].ToArray())}"); + } + + return result.ToString(); + } + public static unsafe MethodBodyBlock GetMethodBodyBlock(this ImmutableArray ilArray) { fixed (byte* ilPtr = ilArray.AsSpan()) diff --git a/src/roslyn/src/Compilers/Test/Core/Mocks/TestMessageProvider.cs b/src/roslyn/src/Compilers/Test/Core/Mocks/TestMessageProvider.cs index b3fa3ea6172..98fa2e6c6df 100644 --- a/src/roslyn/src/Compilers/Test/Core/Mocks/TestMessageProvider.cs +++ b/src/roslyn/src/Compilers/Test/Core/Mocks/TestMessageProvider.cs @@ -400,6 +400,14 @@ public override int ERR_TooManyUserStrings } } + public override int ERR_TooManyUserStrings_RestartRequired + { + get + { + throw new NotImplementedException(); + } + } + public override int ERR_PeWritingFailure { get diff --git a/src/roslyn/src/Compilers/Test/Utilities/CSharp/CSharpTestBase.cs b/src/roslyn/src/Compilers/Test/Utilities/CSharp/CSharpTestBase.cs index 7cff6341780..0611918d426 100644 --- a/src/roslyn/src/Compilers/Test/Utilities/CSharp/CSharpTestBase.cs +++ b/src/roslyn/src/Compilers/Test/Utilities/CSharp/CSharpTestBase.cs @@ -2114,6 +2114,8 @@ internal static unsafe string VisualizeRealIL(PEModuleSymbol peModule, Compilati return ImmutableArray.Create(); } + Debug.Assert(builder.LocalSlotManager != null); + var result = new ILVisualizer.LocalInfo[localInfos.Length]; for (int i = 0; i < result.Length; i++) { diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/CodeGen/CodeGenerator.vb b/src/roslyn/src/Compilers/VisualBasic/Portable/CodeGen/CodeGenerator.vb index 479e808325b..75e96864cf5 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/CodeGen/CodeGenerator.vb +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/CodeGen/CodeGenerator.vb @@ -190,16 +190,16 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGen End Function Private Sub EmitSymbolToken(symbol As FieldSymbol, syntaxNode As SyntaxNode) - _builder.EmitToken(_module.Translate(symbol, syntaxNode, _diagnostics), syntaxNode, _diagnostics) + _builder.EmitToken(_module.Translate(symbol, syntaxNode, _diagnostics), syntaxNode) End Sub Private Sub EmitSymbolToken(symbol As MethodSymbol, syntaxNode As SyntaxNode, Optional encodeAsRawDefinitionToken As Boolean = False) Dim methodRef = _module.Translate(symbol, syntaxNode, _diagnostics, needDeclaration:=encodeAsRawDefinitionToken) - _builder.EmitToken(methodRef, syntaxNode, _diagnostics, If(encodeAsRawDefinitionToken, Cci.MetadataWriter.RawTokenEncoding.RowId, Cci.MetadataWriter.RawTokenEncoding.None)) + _builder.EmitToken(methodRef, syntaxNode, If(encodeAsRawDefinitionToken, Cci.MetadataWriter.RawTokenEncoding.RowId, Cci.MetadataWriter.RawTokenEncoding.None)) End Sub Private Sub EmitSymbolToken(symbol As TypeSymbol, syntaxNode As SyntaxNode) - _builder.EmitToken(_module.Translate(symbol, syntaxNode, _diagnostics), syntaxNode, _diagnostics) + _builder.EmitToken(_module.Translate(symbol, syntaxNode, _diagnostics), syntaxNode) End Sub Private Sub EmitSequencePointExpression(node As BoundSequencePointExpression, used As Boolean) diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/CodeGen/EmitAddress.vb b/src/roslyn/src/Compilers/VisualBasic/Portable/CodeGen/EmitAddress.vb index 07a97a9f19c..dc61bf6aa46 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/CodeGen/EmitAddress.vb +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/CodeGen/EmitAddress.vb @@ -418,7 +418,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGen _builder.EmitOpCode(ILOpCode.Ldelema) EmitSymbolToken(elementType, arrayAccess.Syntax) Else - _builder.EmitArrayElementAddress(_module.Translate(DirectCast(arrayAccess.Expression.Type, ArrayTypeSymbol)), arrayAccess.Syntax, _diagnostics) + _builder.EmitArrayElementAddress(_module.Translate(DirectCast(arrayAccess.Expression.Type, ArrayTypeSymbol)), arrayAccess.Syntax) End If End Sub diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/CodeGen/EmitArrayInitializer.vb b/src/roslyn/src/Compilers/VisualBasic/Portable/CodeGen/EmitArrayInitializer.vb index 2b36682d656..51cc53e794b 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/CodeGen/EmitArrayInitializer.vb +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/CodeGen/EmitArrayInitializer.vb @@ -41,7 +41,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGen If initializationStyle = ArrayInitializerStyle.Element Then Me.EmitElementInitializers(arrayType, initExprs, True) Else - _builder.EmitArrayBlockInitializer(Me.GetRawData(initExprs), inits.Syntax, _diagnostics) + _builder.EmitArrayBlockInitializer(Me.GetRawData(initExprs), inits.Syntax) If initializationStyle = ArrayInitializerStyle.Mixed Then EmitElementInitializers(arrayType, initExprs, False) @@ -188,9 +188,8 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGen End Function Private Function ShouldEmitBlockInitializer(elementType As TypeSymbol, inits As ImmutableArray(Of BoundExpression)) As ArrayInitializerStyle - If _module.IsEncDelta Then - ' Avoid using FieldRva table. Can be allowed if tested on all supported runtimes. - ' Consider removing: https://github.com/dotnet/roslyn/issues/69480 + If Not _module.FieldRvaSupported Then + ' Avoid using FieldRva table if the runtime does not support it. Return ArrayInitializerStyle.Element End If diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/CodeGen/EmitConversion.vb b/src/roslyn/src/Compilers/VisualBasic/Portable/CodeGen/EmitConversion.vb index 371a4af5b01..3c71c1f6f3d 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/CodeGen/EmitConversion.vb +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/CodeGen/EmitConversion.vb @@ -75,7 +75,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGen ' Handle conversions to Boolean If underlyingTo = PrimitiveTypeCode.Boolean Then ' Emit Zero - _builder.EmitConstantValue(ConstantValue.Default(underlyingFrom.GetConstantValueTypeDiscriminator())) + _builder.EmitConstantValue(ConstantValue.Default(underlyingFrom.GetConstantValueTypeDiscriminator()), conversion.Syntax) ' using cgt.un is optimal, but doesn't work in the case of floating point values If underlyingFrom.IsFloatingPoint() Then diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/CodeGen/EmitExpression.vb b/src/roslyn/src/Compilers/VisualBasic/Portable/CodeGen/EmitExpression.vb index 297f77c7ff3..6bfe58eaac5 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/CodeGen/EmitExpression.vb +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/CodeGen/EmitExpression.vb @@ -649,7 +649,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGen End If End Select Else - _builder.EmitArrayElementLoad(_module.Translate(DirectCast(arrayAccess.Expression.Type, ArrayTypeSymbol)), arrayAccess.Expression.Syntax, _diagnostics) + _builder.EmitArrayElementLoad(_module.Translate(DirectCast(arrayAccess.Expression.Type, ArrayTypeSymbol)), arrayAccess.Expression.Syntax) End If EmitPopIfUnused(used) @@ -1630,7 +1630,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGen _builder.EmitOpCode(ILOpCode.Newarr) EmitSymbolToken(arrayType.ElementType, expression.Syntax) Else - _builder.EmitArrayCreation(_module.Translate(arrayType), expression.Syntax, _diagnostics) + _builder.EmitArrayCreation(_module.Translate(arrayType), expression.Syntax) End If If expression.InitializerOpt IsNot Nothing Then @@ -1734,7 +1734,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGen If ((type IsNot Nothing) AndAlso (type.TypeKind = TypeKind.TypeParameter) AndAlso constantValue.IsNull) Then EmitInitObj(type, used, syntaxNode) Else - _builder.EmitConstantValue(constantValue) + _builder.EmitConstantValue(constantValue, syntaxNode) End If End If End Sub @@ -2107,7 +2107,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGen If arrayType.IsSZArray Then EmitVectorElementStore(arrayType, syntaxNode) Else - _builder.EmitArrayElementStore(_module.Translate(arrayType), syntaxNode, _diagnostics) + _builder.EmitArrayElementStore(_module.Translate(arrayType), syntaxNode) End If End Sub @@ -2355,7 +2355,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGen End Sub Private Sub EmitModuleVersionIdToken(node As BoundModuleVersionId) - _builder.EmitToken(_module.GetModuleVersionId(_module.Translate(node.Type, node.Syntax, _diagnostics), node.Syntax, _diagnostics), node.Syntax, _diagnostics) + _builder.EmitToken(_module.GetModuleVersionId(_module.Translate(node.Type, node.Syntax, _diagnostics), node.Syntax, _diagnostics), node.Syntax) End Sub Private Sub EmitModuleVersionIdStringLoad(node As BoundModuleVersionIdString) @@ -2374,7 +2374,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGen End Sub Private Sub EmitInstrumentationPayloadRootToken(node As BoundInstrumentationPayloadRoot) - _builder.EmitToken(_module.GetInstrumentationPayloadRoot(node.AnalysisKind, _module.Translate(node.Type, node.Syntax, _diagnostics), node.Syntax, _diagnostics), node.Syntax, _diagnostics) + _builder.EmitToken(_module.GetInstrumentationPayloadRoot(node.AnalysisKind, _module.Translate(node.Type, node.Syntax, _diagnostics), node.Syntax, _diagnostics), node.Syntax) End Sub Private Sub EmitSourceDocumentIndex(node As BoundSourceDocumentIndex) diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/CodeGen/EmitOperators.vb b/src/roslyn/src/Compilers/VisualBasic/Portable/CodeGen/EmitOperators.vb index 39fcbc0699b..b5b009cfa4c 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/CodeGen/EmitOperators.vb +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/CodeGen/EmitOperators.vb @@ -327,7 +327,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGen Dim shiftMax = GetShiftSizeMask(expression.Left.Type) Dim shiftConst = expression.Right.ConstantValueOpt If shiftConst Is Nothing OrElse shiftConst.UInt32Value > shiftMax Then - _builder.EmitConstantValue(ConstantValue.Create(shiftMax)) + _builder.EmitConstantValue(ConstantValue.Create(shiftMax), expression.Right.Syntax) _builder.EmitOpCode(ILOpCode.And) End If @@ -342,7 +342,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGen Dim shiftMax = GetShiftSizeMask(expression.Left.Type) Dim shiftConst = expression.Right.ConstantValueOpt If shiftConst Is Nothing OrElse shiftConst.UInt32Value > shiftMax Then - _builder.EmitConstantValue(ConstantValue.Create(shiftMax)) + _builder.EmitConstantValue(ConstantValue.Create(shiftMax), expression.Right.Syntax) _builder.EmitOpCode(ILOpCode.And) End If @@ -579,7 +579,7 @@ BinaryOperatorKindEqual: EmitBox(comparandType, comparand.Syntax) End If - _builder.EmitConstantValue(nullOrZero) + _builder.EmitConstantValue(nullOrZero, comparand.Syntax) _builder.EmitOpCode(ILOpCode.Cgt_un) End Sub @@ -591,7 +591,7 @@ BinaryOperatorKindEqual: EmitBox(comparandType, comparand.Syntax) End If - _builder.EmitConstantValue(nullOrZero) + _builder.EmitConstantValue(nullOrZero, comparand.Syntax) _builder.EmitOpCode(ILOpCode.Ceq) End Sub diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/CodeGen/EmitStatement.vb b/src/roslyn/src/Compilers/VisualBasic/Portable/CodeGen/EmitStatement.vb index a923f82f0ac..d0991f50819 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/CodeGen/EmitStatement.vb +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/CodeGen/EmitStatement.vb @@ -227,7 +227,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGen 'Determine if the exception object is or inherits from System.Exception _builder.EmitOpCode(ILOpCode.Isinst) - _builder.EmitToken(exceptionType, catchBlock.Syntax, _diagnostics) + _builder.EmitToken(exceptionType, catchBlock.Syntax) _builder.EmitOpCode(ILOpCode.Ldnull) _builder.EmitOpCode(ILOpCode.Cgt_un) @@ -251,7 +251,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGen _builder.MarkFilterConditionEnd() _builder.EmitOpCode(ILOpCode.Castclass) - _builder.EmitToken(exceptionType, catchBlock.Syntax, _diagnostics) + _builder.EmitToken(exceptionType, catchBlock.Syntax) If ShouldNoteProjectErrors() Then EmitSetProjectError(catchBlock.Syntax, catchBlock.ErrorLineNumberOpt) @@ -278,7 +278,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeGen typeCheckFailedLabel = New Object _builder.EmitOpCode(ILOpCode.Isinst) - _builder.EmitToken(exceptionType, catchBlock.Syntax, _diagnostics) + _builder.EmitToken(exceptionType, catchBlock.Syntax) _builder.EmitOpCode(ILOpCode.Dup) _builder.EmitBranch(ILOpCode.Brtrue, typeCheckPassedLabel) _builder.EmitOpCode(ILOpCode.Pop) @@ -1048,32 +1048,33 @@ OtherExpressions: Else Dim exprType = selectExpression.Type + Dim syntax As SyntaxNode = selectExpression.Syntax Dim temp As LocalDefinition = Nothing If exprType.SpecialType <> SpecialType.System_String Then If selectExpression.Kind = BoundKind.Local AndAlso Not DirectCast(selectExpression, BoundLocal).LocalSymbol.IsByRef Then - _builder.EmitIntegerSwitchJumpTable(caseLabels, fallThroughLabel, GetLocal(DirectCast(selectExpression, BoundLocal)), keyTypeCode:=exprType.GetEnumUnderlyingTypeOrSelf.PrimitiveTypeCode) + _builder.EmitIntegerSwitchJumpTable(caseLabels, fallThroughLabel, GetLocal(DirectCast(selectExpression, BoundLocal)), keyTypeCode:=exprType.GetEnumUnderlyingTypeOrSelf.PrimitiveTypeCode, syntax) ElseIf selectExpression.Kind = BoundKind.Parameter AndAlso Not DirectCast(selectExpression, BoundParameter).ParameterSymbol.IsByRef Then - _builder.EmitIntegerSwitchJumpTable(caseLabels, fallThroughLabel, ParameterSlot(DirectCast(selectExpression, BoundParameter)), keyTypeCode:=exprType.GetEnumUnderlyingTypeOrSelf.PrimitiveTypeCode) + _builder.EmitIntegerSwitchJumpTable(caseLabels, fallThroughLabel, ParameterSlot(DirectCast(selectExpression, BoundParameter)), keyTypeCode:=exprType.GetEnumUnderlyingTypeOrSelf.PrimitiveTypeCode, syntax) Else EmitExpression(selectExpression, True) - temp = AllocateTemp(exprType, selectExpression.Syntax) + temp = AllocateTemp(exprType, syntax) _builder.EmitLocalStore(temp) - _builder.EmitIntegerSwitchJumpTable(caseLabels, fallThroughLabel, temp, keyTypeCode:=exprType.GetEnumUnderlyingTypeOrSelf.PrimitiveTypeCode) + _builder.EmitIntegerSwitchJumpTable(caseLabels, fallThroughLabel, temp, keyTypeCode:=exprType.GetEnumUnderlyingTypeOrSelf.PrimitiveTypeCode, syntax) End If Else If selectExpression.Kind = BoundKind.Local AndAlso Not DirectCast(selectExpression, BoundLocal).LocalSymbol.IsByRef Then - EmitStringSwitchJumpTable(caseLabels, fallThroughLabel, GetLocal(DirectCast(selectExpression, BoundLocal)), selectExpression.Syntax) + EmitStringSwitchJumpTable(caseLabels, fallThroughLabel, GetLocal(DirectCast(selectExpression, BoundLocal)), syntax) Else EmitExpression(selectExpression, True) - temp = AllocateTemp(exprType, selectExpression.Syntax) + temp = AllocateTemp(exprType, syntax) _builder.EmitLocalStore(temp) - EmitStringSwitchJumpTable(caseLabels, fallThroughLabel, temp, selectExpression.Syntax) + EmitStringSwitchJumpTable(caseLabels, fallThroughLabel, temp, syntax) End If End If @@ -1099,7 +1100,7 @@ OtherExpressions: _builder.EmitLocalLoad(key) _builder.EmitOpCode(ILOpCode.[Call], stackAdjustment:=0) - _builder.EmitToken(stringHashMethodRef, syntaxNode, _diagnostics) + _builder.EmitToken(stringHashMethodRef, syntaxNode) Dim UInt32Type = DirectCast(_module.GetSpecialType(SpecialType.System_UInt32, syntaxNode, _diagnostics).GetInternalSymbol(), TypeSymbol) keyHash = AllocateTemp(UInt32Type, syntaxNode) @@ -1123,6 +1124,7 @@ OtherExpressions: End Sub _builder.EmitStringSwitchJumpTable( + syntaxNode, caseLabels, fallThroughLabel, key, @@ -1171,10 +1173,10 @@ OtherExpressions: ' NOTE: We generate string switch table only for Option Compare Binary, i.e. TextCompare = False _builder.EmitLoad(key) - _builder.EmitConstantValue(stringConstant) - _builder.EmitConstantValue(ConstantValue.False) + _builder.EmitConstantValue(stringConstant, syntaxNode) + _builder.EmitConstantValue(ConstantValue.False, syntaxNode) _builder.EmitOpCode(ILOpCode.Call, stackAdjustment:=-2) - _builder.EmitToken(stringCompareMethodRef, syntaxNode, _diagnostics) + _builder.EmitToken(stringCompareMethodRef, syntaxNode) ' CompareString returns 0 if Left and Right strings are equal. ' Branch to targetLabel if CompareString returned 0. diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/Compilation/MethodCompiler.vb b/src/roslyn/src/Compilers/VisualBasic/Portable/Compilation/MethodCompiler.vb index f0ace4940ea..6759c1b62a6 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/Compilation/MethodCompiler.vb +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/Compilation/MethodCompiler.vb @@ -269,6 +269,11 @@ Namespace Microsoft.CodeAnalysis.VisualBasic compiler.ProcessEmbeddedMethods() End If + ' Deleted definitions must be emitted before PrivateImplementationDetails are frozen since + ' it may add new members to it. All changes to PrivateImplementationDetails are additions, + ' so we don't need to create deleted method defs for those. + moduleBeingBuiltOpt.CreateDeletedMethodDefinitions(diagnostics.DiagnosticBag) + ' all threads that were adding methods must be finished now, we can freeze the class: Dim privateImplClass = moduleBeingBuiltOpt.FreezePrivateImplementationDetails() If privateImplClass IsNot Nothing Then @@ -1611,7 +1616,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic optimizations = OptimizationLevel.Release End If - Dim builder As ILBuilder = New ILBuilder(moduleBuilder, localSlotManager, optimizations, areLocalsZeroed:=True) + Dim builder As ILBuilder = New ILBuilder(moduleBuilder, localSlotManager, diagnostics.DiagnosticBag, optimizations, areLocalsZeroed:=True) Try Debug.Assert(Not diagnostics.HasAnyErrors) diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/Compilation/VisualBasicCompilation.vb b/src/roslyn/src/Compilers/VisualBasic/Portable/Compilation/VisualBasicCompilation.vb index 549049a4302..78216504415 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/Compilation/VisualBasicCompilation.vb +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/Compilation/VisualBasicCompilation.vb @@ -2603,6 +2603,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic metadataStream As Stream, ilStream As Stream, pdbStream As Stream, + options As EmitDifferenceOptions, testData As CompilationTestData, cancellationToken As CancellationToken) As EmitDifferenceResult @@ -2614,6 +2615,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic metadataStream, ilStream, pdbStream, + options, testData, cancellationToken) End Function diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/Emit/EditAndContinue/EmitHelpers.vb b/src/roslyn/src/Compilers/VisualBasic/Portable/Emit/EditAndContinue/EmitHelpers.vb index 11f3d1c93a8..c8447c76414 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/Emit/EditAndContinue/EmitHelpers.vb +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/Emit/EditAndContinue/EmitHelpers.vb @@ -25,6 +25,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Emit metadataStream As Stream, ilStream As Stream, pdbStream As Stream, + options As EmitDifferenceOptions, testData As CompilationTestData, cancellationToken As CancellationToken) As EmitDifferenceResult @@ -86,6 +87,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Emit compilation.SourceAssembly, changes, emitOpts, + options, compilation.Options.OutputKind, serializationProperties, manifestResources, @@ -118,7 +120,6 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Emit newBaseline = compilation.SerializeToDeltaStreams( moduleBeingBuilt, definitionMap, - changes, metadataStream, ilStream, pdbStream, diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/Emit/EditAndContinue/PEDeltaAssemblyBuilder.vb b/src/roslyn/src/Compilers/VisualBasic/Portable/Emit/EditAndContinue/PEDeltaAssemblyBuilder.vb index 955d149b988..88ad55df98e 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/Emit/EditAndContinue/PEDeltaAssemblyBuilder.vb +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/Emit/EditAndContinue/PEDeltaAssemblyBuilder.vb @@ -25,6 +25,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Emit Private ReadOnly _changes As SymbolChanges Private ReadOnly _deepTranslator As VisualBasicSymbolMatcher.DeepTranslator Private ReadOnly _predefinedHotReloadExceptionConstructor As MethodSymbol + Private ReadOnly _options As EmitDifferenceOptions ''' ''' HotReloadException type. May be created even if not used. We might find out @@ -46,6 +47,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Emit Public Sub New(sourceAssembly As SourceAssemblySymbol, changes As VisualBasicSymbolChanges, emitOptions As EmitOptions, + options As EmitDifferenceOptions, outputKind As OutputKind, serializationProperties As ModulePropertiesForSerialization, manifestResources As IEnumerable(Of ResourceDescription), @@ -54,6 +56,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Emit MyBase.New(sourceAssembly, emitOptions, outputKind, serializationProperties, manifestResources, additionalTypes:=ImmutableArray(Of NamedTypeSymbol).Empty) _changes = changes + _options = options ' Workaround for https://github.com/dotnet/roslyn/issues/3192. ' When compiling state machine we stash types of awaiters and state-machine hoisted variables, @@ -92,6 +95,12 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Emit End Get End Property + Public Overrides ReadOnly Property FieldRvaSupported As Boolean + Get + Return _options.EmitFieldRva + End Get + End Property + Friend Shared Function GetOrCreateMetadataSymbols(initialBaseline As EmitBaseline, compilation As VisualBasicCompilation) As EmitBaseline.MetadataSymbols If initialBaseline.LazyMetadataSymbols IsNot Nothing Then Return initialBaseline.LazyMetadataSymbols @@ -251,7 +260,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Emit End Function Public Overrides Function GetTopLevelTypeDefinitions(context As EmitContext) As IEnumerable(Of Cci.INamespaceTypeDefinition) - Return GetTopLevelTypeDefinitionsCore(context) + Return GetTopLevelTypeDefinitionsExcludingNoPiaAndRootModule(context, includePrivateImplementationDetails:=True) End Function Public Overrides Function GetTopLevelSourceTypeDefinitions(context As EmitContext) As IEnumerable(Of Cci.INamespaceTypeDefinition) diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/Emit/EditAndContinue/VisualBasicSymbolMatcher.vb b/src/roslyn/src/Compilers/VisualBasic/Portable/Emit/EditAndContinue/VisualBasicSymbolMatcher.vb index 6e53bb10ee2..be6752e8a4e 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/Emit/EditAndContinue/VisualBasicSymbolMatcher.vb +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/Emit/EditAndContinue/VisualBasicSymbolMatcher.vb @@ -45,7 +45,10 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Emit ' For simplicity, PID helpers and no-PIA embedded definitions are not reused across generations, so we don't map them here. ' Instead, new ones are regenerated as needed. - Debug.Assert(TypeOf definition Is PrivateImplementationDetails OrElse TypeOf definition Is Cci.IEmbeddedDefinition) + Debug.Assert(TypeOf definition Is PrivateImplementationDetails OrElse + TypeOf definition Is Cci.IEmbeddedDefinition OrElse + TypeOf definition Is MappedField OrElse + TypeOf definition Is ExplicitSizeStruct) Return Nothing End Function diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/Emit/PEAssemblyBuilder.vb b/src/roslyn/src/Compilers/VisualBasic/Portable/Emit/PEAssemblyBuilder.vb index d8c88417719..24e584bb216 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/Emit/PEAssemblyBuilder.vb +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/Emit/PEAssemblyBuilder.vb @@ -33,7 +33,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Emit ''' Private ReadOnly _metadataName As String - Public Sub New(sourceAssembly As SourceAssemblySymbol, + Friend Sub New(sourceAssembly As SourceAssemblySymbol, emitOptions As EmitOptions, outputKind As OutputKind, serializationProperties As Cci.ModulePropertiesForSerialization, @@ -198,6 +198,12 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Emit End Get End Property + Public Overrides ReadOnly Property FieldRvaSupported As Boolean + Get + Return True + End Get + End Property + Public Overrides Function TryGetOrCreateSynthesizedHotReloadExceptionType() As INamedTypeSymbolInternal Return Nothing End Function diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/Emit/PENetModuleBuilder.vb b/src/roslyn/src/Compilers/VisualBasic/Portable/Emit/PENetModuleBuilder.vb index aad6b5c1be5..e120c58453b 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/Emit/PENetModuleBuilder.vb +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/Emit/PENetModuleBuilder.vb @@ -45,6 +45,12 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Emit End Get End Property + Public Overrides ReadOnly Property FieldRvaSupported As Boolean + Get + Return True + End Get + End Property + Public Overrides Function TryGetOrCreateSynthesizedHotReloadExceptionType() As INamedTypeSymbolInternal Return Nothing End Function diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/Errors/ErrorFacts.vb b/src/roslyn/src/Compilers/VisualBasic/Portable/Errors/ErrorFacts.vb index ca8fcd8f489..b6bb38d54e9 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/Errors/ErrorFacts.vb +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/Errors/ErrorFacts.vb @@ -1304,6 +1304,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic ERRID.ERR_InvalidPathMap, ERRID.ERR_PublicSignNoKey, ERRID.ERR_TooManyUserStrings, + ERRID.ERR_TooManyUserStrings_RestartRequired, ERRID.ERR_PeWritingFailure, ERRID.ERR_OptionMustBeAbsolutePath, ERRID.ERR_DocFileGen, diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/Errors/Errors.vb b/src/roslyn/src/Compilers/VisualBasic/Portable/Errors/Errors.vb index 2c425f89a3c..712f0a799f7 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/Errors/Errors.vb +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/Errors/Errors.vb @@ -1787,8 +1787,9 @@ Namespace Microsoft.CodeAnalysis.VisualBasic ERR_CannotApplyOverloadResolutionPriorityToMember = 37334 ERR_EmbeddedAttributeMustFollowPattern = 37335 + ERR_TooManyUserStrings_RestartRequired = 37336 - ERR_NextAvailable = 37336 + ERR_NextAvailable = 37337 '// WARNINGS BEGIN HERE WRN_UseOfObsoleteSymbol2 = 40000 diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/Errors/MessageProvider.vb b/src/roslyn/src/Compilers/VisualBasic/Portable/Errors/MessageProvider.vb index 0e573eaa217..153704ad8e9 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/Errors/MessageProvider.vb +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/Errors/MessageProvider.vb @@ -558,6 +558,12 @@ Namespace Microsoft.CodeAnalysis.VisualBasic End Get End Property + Public Overrides ReadOnly Property ERR_TooManyUserStrings_RestartRequired As Integer + Get + Return ERRID.ERR_TooManyUserStrings_RestartRequired + End Get + End Property + Public Overrides ReadOnly Property ERR_PeWritingFailure As Integer Get Return ERRID.ERR_PeWritingFailure diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/SymbolDisplay/SymbolDisplayVisitor.Types.vb b/src/roslyn/src/Compilers/VisualBasic/Portable/SymbolDisplay/SymbolDisplayVisitor.Types.vb index 094967a928b..4122c175253 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/SymbolDisplay/SymbolDisplayVisitor.Types.vb +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/SymbolDisplay/SymbolDisplayVisitor.Types.vb @@ -239,7 +239,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic End If If symbolName Is Nothing Then - symbolName = symbol.Name + symbolName = If(symbol.IsExtension, symbol.MetadataName, symbol.Name) End If If Format.MiscellaneousOptions.IncludesOption(SymbolDisplayMiscellaneousOptions.UseErrorTypeSymbolName) AndAlso @@ -252,7 +252,8 @@ Namespace Microsoft.CodeAnalysis.VisualBasic Select Case symbol.TypeKind Case TypeKind.Class, - TypeKind.Submission + TypeKind.Submission, + TypeKind.Extension partKind = SymbolDisplayPartKind.ClassName Case TypeKind.Delegate partKind = SymbolDisplayPartKind.DelegateName diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/VBResources.resx b/src/roslyn/src/Compilers/VisualBasic/Portable/VBResources.resx index c153096c40a..9545bc9cc30 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/VBResources.resx +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/VBResources.resx @@ -5459,6 +5459,9 @@ Combined length of user strings used by the program exceeds allowed limit. Try to decrease use of string or XML literals. + + Combined length of user strings used by the program exceeds allowed limit. Adding a string or XML literal requires restarting the application. + An error occurred while writing the output file: {0} diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.cs.xlf b/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.cs.xlf index cd99d16dde1..2d0bb2054ef 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.cs.xlf +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.cs.xlf @@ -132,6 +132,11 @@ {0} je definováno v sestavení {1}. + + Combined length of user strings used by the program exceeds allowed limit. Adding a string or XML literal requires restarting the application. + Combined length of user strings used by the program exceeds allowed limit. Adding a string or XML literal requires restarting the application. + + The type name '{0}' is reserved to be used by the compiler. Název typu {0} je vyhrazený pro použití kompilátorem. diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.de.xlf b/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.de.xlf index f52b27726a1..956b1648d92 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.de.xlf +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.de.xlf @@ -132,6 +132,11 @@ "{0}" ist in Assembly "{1}" definiert. + + Combined length of user strings used by the program exceeds allowed limit. Adding a string or XML literal requires restarting the application. + Combined length of user strings used by the program exceeds allowed limit. Adding a string or XML literal requires restarting the application. + + The type name '{0}' is reserved to be used by the compiler. Der Typname "{0}" ist für die Verwendung durch den Compiler reserviert. diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.es.xlf b/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.es.xlf index be3274c2999..8f3b3eda58e 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.es.xlf +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.es.xlf @@ -132,6 +132,11 @@ '{0}' se define en el ensamblado '{1}'. + + Combined length of user strings used by the program exceeds allowed limit. Adding a string or XML literal requires restarting the application. + Combined length of user strings used by the program exceeds allowed limit. Adding a string or XML literal requires restarting the application. + + The type name '{0}' is reserved to be used by the compiler. El nombre de tipo "{0}" está reservado para uso del compilador. diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.fr.xlf b/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.fr.xlf index 4b05beae4f4..262a4631410 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.fr.xlf +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.fr.xlf @@ -132,6 +132,11 @@ '{0}' est défini dans l'assemblage '{1}'. + + Combined length of user strings used by the program exceeds allowed limit. Adding a string or XML literal requires restarting the application. + Combined length of user strings used by the program exceeds allowed limit. Adding a string or XML literal requires restarting the application. + + The type name '{0}' is reserved to be used by the compiler. L'utilisation du nom de type '{0}' est réservée au compilateur. diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.it.xlf b/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.it.xlf index d7659c5a7ee..88e05af0665 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.it.xlf +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.it.xlf @@ -132,6 +132,11 @@ '{0}' è definito nell'assembly '{1}'. + + Combined length of user strings used by the program exceeds allowed limit. Adding a string or XML literal requires restarting the application. + Combined length of user strings used by the program exceeds allowed limit. Adding a string or XML literal requires restarting the application. + + The type name '{0}' is reserved to be used by the compiler. Il nome di tipo '{0}' è riservato al compilatore. diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.ja.xlf b/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.ja.xlf index 440445efa79..82a9a3cca58 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.ja.xlf +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.ja.xlf @@ -132,6 +132,11 @@ '{0}' はアセンブリ '{1}' で定義されています。 + + Combined length of user strings used by the program exceeds allowed limit. Adding a string or XML literal requires restarting the application. + Combined length of user strings used by the program exceeds allowed limit. Adding a string or XML literal requires restarting the application. + + The type name '{0}' is reserved to be used by the compiler. 型名 '{0}' は、コンパイラによる使用のために予約されています。 diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.ko.xlf b/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.ko.xlf index 3ccca121c04..b9e34c11447 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.ko.xlf +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.ko.xlf @@ -132,6 +132,11 @@ '{0}'은(는) '{1}' 어셈블리에 정의되어 있습니다. + + Combined length of user strings used by the program exceeds allowed limit. Adding a string or XML literal requires restarting the application. + Combined length of user strings used by the program exceeds allowed limit. Adding a string or XML literal requires restarting the application. + + The type name '{0}' is reserved to be used by the compiler. 형식 이름 '{0}'은(는) 컴파일러에서 사용하도록 예약되어 있습니다. diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.pl.xlf b/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.pl.xlf index ea736d6e939..194b290b410 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.pl.xlf +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.pl.xlf @@ -132,6 +132,11 @@ „{0}” jest zdefiniowany w zestawie „{1}”. + + Combined length of user strings used by the program exceeds allowed limit. Adding a string or XML literal requires restarting the application. + Combined length of user strings used by the program exceeds allowed limit. Adding a string or XML literal requires restarting the application. + + The type name '{0}' is reserved to be used by the compiler. Nazwa typu „{0}” jest zarezerwowana do użycia przez kompilator. diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.pt-BR.xlf b/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.pt-BR.xlf index dd23654acf8..6879c0913a3 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.pt-BR.xlf +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.pt-BR.xlf @@ -132,6 +132,11 @@ '{0}' é definido no assembly '{1}'. + + Combined length of user strings used by the program exceeds allowed limit. Adding a string or XML literal requires restarting the application. + Combined length of user strings used by the program exceeds allowed limit. Adding a string or XML literal requires restarting the application. + + The type name '{0}' is reserved to be used by the compiler. O nome do tipo '{0}' está reservado para ser usado pelo compilador. diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.ru.xlf b/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.ru.xlf index 075a143a072..2414dda3230 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.ru.xlf +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.ru.xlf @@ -132,6 +132,11 @@ '{0}' определен в сборке '{1}'. + + Combined length of user strings used by the program exceeds allowed limit. Adding a string or XML literal requires restarting the application. + Combined length of user strings used by the program exceeds allowed limit. Adding a string or XML literal requires restarting the application. + + The type name '{0}' is reserved to be used by the compiler. Имя типа "{0}" зарезервировано для использования компилятором. diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.tr.xlf b/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.tr.xlf index 6af7446cd9a..11927a3b7d6 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.tr.xlf +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.tr.xlf @@ -132,6 +132,11 @@ '{0}', '{1}' derlemesinde tanımlı. + + Combined length of user strings used by the program exceeds allowed limit. Adding a string or XML literal requires restarting the application. + Combined length of user strings used by the program exceeds allowed limit. Adding a string or XML literal requires restarting the application. + + The type name '{0}' is reserved to be used by the compiler. '{0}' tür adı, derleyici tarafından kullanılmak üzere ayrılmıştır. diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.zh-Hans.xlf b/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.zh-Hans.xlf index 7a5a5f73a5c..e4c29d3e6e9 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.zh-Hans.xlf +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.zh-Hans.xlf @@ -132,6 +132,11 @@ “{0}”在程序集“{1}”中定义。 + + Combined length of user strings used by the program exceeds allowed limit. Adding a string or XML literal requires restarting the application. + Combined length of user strings used by the program exceeds allowed limit. Adding a string or XML literal requires restarting the application. + + The type name '{0}' is reserved to be used by the compiler. 类型名称“{0}”是保留给编译器使用的。 diff --git a/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.zh-Hant.xlf b/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.zh-Hant.xlf index 440e9c48e49..40cae595794 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.zh-Hant.xlf +++ b/src/roslyn/src/Compilers/VisualBasic/Portable/xlf/VBResources.zh-Hant.xlf @@ -132,6 +132,11 @@ '{0}' 於組件 '{1}' 中定義。 + + Combined length of user strings used by the program exceeds allowed limit. Adding a string or XML literal requires restarting the application. + Combined length of user strings used by the program exceeds allowed limit. Adding a string or XML literal requires restarting the application. + + The type name '{0}' is reserved to be used by the compiler. 類型名稱 '{0}' 保留供編譯器使用。 diff --git a/src/roslyn/src/Compilers/VisualBasic/Test/Emit/Emit/EditAndContinue/EditAndContinueClosureTests.vb b/src/roslyn/src/Compilers/VisualBasic/Test/Emit/Emit/EditAndContinue/EditAndContinueClosureTests.vb index b07005d502a..a2735c380d2 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Test/Emit/Emit/EditAndContinue/EditAndContinueClosureTests.vb +++ b/src/roslyn/src/Compilers/VisualBasic/Test/Emit/Emit/EditAndContinue/EditAndContinueClosureTests.vb @@ -2275,6 +2275,7 @@ End Class g.VerifyMethodDefNames("F", "_Lambda$__1-0", "_Lambda$__1-1", ".ctor", ".ctor", "_Lambda$__0#1") g.VerifyIL(" +F { // Code size 67 (0x43) .maxstack 2 @@ -2300,6 +2301,7 @@ End Class IL_0040: stloc.s V_5 IL_0042: ret } +_Lambda$__1-0 { // Code size 12 (0xc) .maxstack 8 @@ -2308,6 +2310,7 @@ End Class IL_0006: newobj 0x06000007 IL_000b: throw } +_Lambda$__1-1 { // Code size 9 (0x9) .maxstack 8 @@ -2317,6 +2320,7 @@ End Class IL_0007: nop IL_0008: ret } +.ctor { // Code size 15 (0xf) .maxstack 8 @@ -2328,6 +2332,7 @@ End Class IL_0009: stfld 0x04000004 IL_000e: ret } +.ctor { // Code size 7 (0x7) .maxstack 8 @@ -2335,6 +2340,7 @@ End Class IL_0001: call 0x0A00000C IL_0006: ret } +_Lambda$__0#1 { // Code size 14 (0xe) .maxstack 8 @@ -2392,6 +2398,7 @@ End Class g.VerifyMethodDefNames("F", "_Lambda$__1-0", "_Lambda$__1-1", ".ctor", ".ctor", "_Lambda$__1#1") g.VerifyIL(" +F { // Code size 66 (0x42) .maxstack 2 @@ -2417,6 +2424,7 @@ End Class IL_003f: stloc.s V_4 IL_0041: ret } +_Lambda$__1-0 { // Code size 9 (0x9) .maxstack 8 @@ -2426,6 +2434,7 @@ End Class IL_0007: nop IL_0008: ret } +_Lambda$__1-1 { // Code size 12 (0xc) .maxstack 8 @@ -2434,6 +2443,7 @@ End Class IL_0006: newobj 0x06000007 IL_000b: throw } +.ctor { // Code size 15 (0xf) .maxstack 8 @@ -2445,6 +2455,7 @@ End Class IL_0009: stfld 0x04000004 IL_000e: ret } +.ctor { // Code size 7 (0x7) .maxstack 8 @@ -2452,6 +2463,7 @@ End Class IL_0001: call 0x0A00000C IL_0006: ret } +_Lambda$__1#1 { // Code size 14 (0xe) .maxstack 8 @@ -2512,6 +2524,7 @@ End Class g.VerifyMethodDefNames("F", "_Lambda$__2-0", "_Lambda$__2-1", "_Lambda$__2-1#1", ".ctor") g.VerifyIL(" +F { // Code size 52 (0x34) .maxstack 2 @@ -2532,6 +2545,7 @@ End Class IL_0032: stloc.3 IL_0033: ret } +_Lambda$__2-0 { // Code size 9 (0x9) .maxstack 8 @@ -2541,6 +2555,7 @@ End Class IL_0007: nop IL_0008: ret } +_Lambda$__2-1 { // Code size 12 (0xc) .maxstack 8 @@ -2549,6 +2564,7 @@ End Class IL_0006: newobj 0x06000008 IL_000b: throw } +_Lambda$__2-1#1 { // Code size 14 (0xe) .maxstack 8 @@ -2559,6 +2575,7 @@ End Class IL_000c: nop IL_000d: ret } +.ctor { // Code size 15 (0xf) .maxstack 8 @@ -2617,6 +2634,7 @@ End Class g.VerifyMethodDefNames("F", "_Lambda$__0") g.VerifyIL(" +F { // Code size 30 (0x1e) .maxstack 2 @@ -2634,6 +2652,7 @@ End Class IL_001c: stloc.3 IL_001d: ret } +_Lambda$__0 { // Code size 12 (0xc) .maxstack 1 @@ -2691,6 +2710,7 @@ End Class g.VerifyMethodDefNames("F", "_Lambda$__0", ".ctor", ".ctor", ".cctor", "_Lambda$__1-0#1") g.VerifyIL(" +F { // Code size 41 (0x29) .maxstack 2 @@ -2709,6 +2729,7 @@ End Class IL_0027: stloc.3 IL_0028: ret } +_Lambda$__0 { // Code size 12 (0xc) .maxstack 8 @@ -2717,6 +2738,7 @@ End Class IL_0006: newobj 0x06000009 IL_000b: throw } +.ctor { // Code size 15 (0xf) .maxstack 8 @@ -2728,6 +2750,7 @@ End Class IL_0009: stfld 0x04000002 IL_000e: ret } +.ctor { // Code size 7 (0x7) .maxstack 8 @@ -2735,6 +2758,7 @@ End Class IL_0001: call 0x0A00000B IL_0006: ret } +.cctor { // Code size 11 (0xb) .maxstack 8 @@ -2742,6 +2766,7 @@ End Class IL_0005: stsfld 0x04000003 IL_000a: ret } +_Lambda$__1-0#1 { // Code size 7 (0x7) .maxstack 1 @@ -2776,6 +2801,7 @@ End Class g.VerifyMethodDefNames("F", "_Lambda$__1-0#1", ".ctor", "_Lambda$__0#2") g.VerifyIL(" +F { // Code size 32 (0x20) .maxstack 2 @@ -2791,6 +2817,7 @@ End Class IL_001d: stloc.s V_5 IL_001f: ret } +_Lambda$__1-0#1 { // Code size 12 (0xc) .maxstack 8 @@ -2799,6 +2826,7 @@ End Class IL_0006: newobj 0x06000009 IL_000b: throw } +.ctor { // Code size 7 (0x7) .maxstack 8 @@ -2806,6 +2834,7 @@ End Class IL_0001: call 0x0A00000E IL_0006: ret } +_Lambda$__0#2 { // Code size 14 (0xe) .maxstack 2 @@ -2869,6 +2898,7 @@ End Class g.VerifyMethodDefNames("F", "_Lambda$__2-0", "_Lambda$__2-1", ".ctor", "_Lambda$__2-0#1") g.VerifyIL(" +F { // Code size 76 (0x4c) .maxstack 2 @@ -2895,6 +2925,7 @@ End Class IL_004a: stloc.3 IL_004b: ret } +_Lambda$__2-0 { // Code size 12 (0xc) .maxstack 8 @@ -2903,6 +2934,7 @@ End Class IL_0006: newobj 0x0600000B IL_000b: throw } +_Lambda$__2-1 { // Code size 7 (0x7) .maxstack 1 @@ -2913,6 +2945,7 @@ End Class IL_0005: ldloc.0 IL_0006: ret } +.ctor { // Code size 15 (0xf) .maxstack 8 @@ -2924,6 +2957,7 @@ End Class IL_0009: stfld 0x04000004 IL_000e: ret } +_Lambda$__2-0#1 { // Code size 7 (0x7) .maxstack 1 @@ -2977,6 +3011,7 @@ End Class g.VerifyMethodDefNames("F", ".ctor", "_Lambda$__0#1") g.VerifyIL(" +F { // Code size 28 (0x1c) .maxstack 2 @@ -2992,6 +3027,7 @@ End Class IL_001a: stloc.2 IL_001b: ret } +.ctor { // Code size 7 (0x7) .maxstack 8 @@ -2999,6 +3035,7 @@ End Class IL_0001: call 0x0A000007 IL_0006: ret } +_Lambda$__0#1 { // Code size 12 (0xc) .maxstack 1 @@ -3032,6 +3069,7 @@ End Class g.VerifyMethodDefNames("F", "_Lambda$__0#1", ".ctor") g.VerifyIL(" +F { // Code size 4 (0x4) .maxstack 1 @@ -3040,6 +3078,7 @@ End Class IL_0002: stloc.3 IL_0003: ret } +_Lambda$__0#1 { // Code size 12 (0xc) .maxstack 8 @@ -3048,6 +3087,7 @@ End Class IL_0006: newobj 0x06000005 IL_000b: throw } +.ctor { // Code size 15 (0xf) .maxstack 8 @@ -3123,6 +3163,7 @@ End Class g.VerifyMethodDefNames("F", "_Lambda$__0", "_Lambda$__1", ".ctor", ".ctor", "_Lambda$__1#1") g.VerifyIL(" +F { // Code size 128 (0x80) .maxstack 3 @@ -3171,6 +3212,7 @@ End Class IL_007c: stloc.s V_5 IL_007e: br.s IL_0011 } +_Lambda$__0 { // Code size 12 (0xc) .maxstack 1 @@ -3182,6 +3224,7 @@ End Class IL_000a: ldloc.0 IL_000b: ret } +_Lambda$__1 { // Code size 12 (0xc) .maxstack 8 @@ -3190,6 +3233,7 @@ End Class IL_0006: newobj 0x06000007 IL_000b: throw } +.ctor { // Code size 15 (0xf) .maxstack 8 @@ -3201,6 +3245,7 @@ End Class IL_0009: stfld 0x04000005 IL_000e: ret } +.ctor { // Code size 22 (0x16) .maxstack 8 @@ -3214,6 +3259,7 @@ End Class IL_0010: stfld 0x04000006 IL_0015: ret } +_Lambda$__1#1 { // Code size 24 (0x18) .maxstack 2 @@ -3289,6 +3335,7 @@ End Class g.VerifyMethodDefNames("F", "_Lambda$__0", "_Lambda$__1", ".ctor", ".ctor", "_Lambda$__1#1") g.VerifyIL(" +F { // Code size 96 (0x60) .maxstack 3 @@ -3330,6 +3377,7 @@ End Class IL_005c: stloc.s V_5 IL_005e: br.s IL_0011 } +_Lambda$__0 { // Code size 12 (0xc) .maxstack 1 @@ -3341,6 +3389,7 @@ End Class IL_000a: ldloc.0 IL_000b: ret } +_Lambda$__1 { // Code size 12 (0xc) .maxstack 8 @@ -3349,6 +3398,7 @@ End Class IL_0006: newobj 0x0600000B IL_000b: throw } +.ctor { // Code size 15 (0xf) .maxstack 8 @@ -3360,6 +3410,7 @@ End Class IL_0009: stfld 0x04000005 IL_000e: ret } +.ctor { // Code size 22 (0x16) .maxstack 8 @@ -3373,6 +3424,7 @@ End Class IL_0010: stfld 0x04000006 IL_0015: ret } +_Lambda$__1#1 { // Code size 12 (0xc) .maxstack 1 @@ -3459,7 +3511,8 @@ End Class g.VerifyMethodDefNames("F", "_Lambda$__0", "_Lambda$__1", ".ctor", ".ctor", "_Lambda$__1#1", "_Lambda$__2#1", ".ctor") g.VerifyIL(" - { +F +{ // Code size 208 (0xd0) .maxstack 3 IL_0000: nop @@ -3528,6 +3581,7 @@ End Class IL_00c9: stloc.s V_7 IL_00cb: br IL_0014 } +_Lambda$__0 { // Code size 12 (0xc) .maxstack 1 @@ -3539,6 +3593,7 @@ End Class IL_000a: ldloc.0 IL_000b: ret } +_Lambda$__1 { // Code size 12 (0xc) .maxstack 8 @@ -3547,6 +3602,7 @@ End Class IL_0006: newobj 0x0600000B IL_000b: throw } +.ctor { // Code size 15 (0xf) .maxstack 8 @@ -3558,6 +3614,7 @@ End Class IL_0009: stfld 0x04000006 IL_000e: ret } +.ctor { // Code size 22 (0x16) .maxstack 8 @@ -3571,6 +3628,7 @@ End Class IL_0010: stfld 0x04000007 IL_0015: ret } +_Lambda$__1#1 { // Code size 29 (0x1d) .maxstack 2 @@ -3587,6 +3645,7 @@ End Class IL_001b: ldloc.0 IL_001c: ret } +_Lambda$__2#1 { // Code size 41 (0x29) .maxstack 2 @@ -3607,6 +3666,7 @@ End Class IL_0027: ldloc.0 IL_0028: ret } +.ctor { // Code size 22 (0x16) .maxstack 8 @@ -3682,6 +3742,7 @@ End Class g.VerifyMethodDefNames("F", "_Lambda$__0", "_Lambda$__2", "_Lambda$__1", ".ctor", "_Lambda$__2#1") g.VerifyIL(" +F { // Code size 106 (0x6a) .maxstack 3 @@ -3727,6 +3788,7 @@ End Class IL_0066: stloc.s V_6 IL_0068: br.s IL_0011 } +_Lambda$__0 { // Code size 12 (0xc) .maxstack 1 @@ -3738,6 +3800,7 @@ End Class IL_000a: ldloc.0 IL_000b: ret } +_Lambda$__2 { // Code size 12 (0xc) .maxstack 8 @@ -3746,6 +3809,7 @@ End Class IL_0006: newobj 0x06000008 IL_000b: throw } +_Lambda$__1 { // Code size 12 (0xc) .maxstack 1 @@ -3757,6 +3821,7 @@ End Class IL_000a: ldloc.0 IL_000b: ret } +.ctor { // Code size 15 (0xf) .maxstack 8 @@ -3768,6 +3833,7 @@ End Class IL_0009: stfld 0x04000005 IL_000e: ret } +_Lambda$__2#1 { // Code size 14 (0xe) .maxstack 2 @@ -3834,6 +3900,7 @@ End Class g.VerifyMethodDefNames("F", "_Lambda$__0") g.VerifyIL(" +F { // Code size 35 (0x23) .maxstack 2 @@ -3852,6 +3919,7 @@ End Class IL_0021: stloc.3 IL_0022: ret } +_Lambda$__0 { // Code size 19 (0x13) .maxstack 2 @@ -3916,6 +3984,7 @@ End Class g.VerifyMethodDefNames("F", "_Lambda$__0") g.VerifyIL(" +F { // Code size 35 (0x23) .maxstack 2 @@ -3934,6 +4003,7 @@ End Class IL_0021: stloc.2 IL_0022: ret } +_Lambda$__0 { // Code size 19 (0x13) .maxstack 2 @@ -3997,6 +4067,7 @@ End Class g.VerifyMethodDefNames("F", "_Lambda$__1-0", ".ctor", "_Lambda$__1-0#1") g.VerifyIL(" +F { // Code size 39 (0x27) .maxstack 2 @@ -4013,6 +4084,7 @@ End Class IL_0025: stloc.1 IL_0026: ret } +_Lambda$__1-0 { // Code size 12 (0xc) .maxstack 8 @@ -4021,6 +4093,7 @@ End Class IL_0006: newobj 0x06000006 IL_000b: throw } +.ctor { // Code size 15 (0xf) .maxstack 8 @@ -4032,6 +4105,7 @@ End Class IL_0009: stfld 0x04000003 IL_000e: ret } +_Lambda$__1-0#1 { // Code size 15 (0xf) .maxstack 1 diff --git a/src/roslyn/src/Compilers/VisualBasic/Test/Emit/Emit/EditAndContinue/EditAndContinueTests.vb b/src/roslyn/src/Compilers/VisualBasic/Test/Emit/Emit/EditAndContinue/EditAndContinueTests.vb index 8e3998babc5..8193d204d35 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Test/Emit/Emit/EditAndContinue/EditAndContinueTests.vb +++ b/src/roslyn/src/Compilers/VisualBasic/Test/Emit/Emit/EditAndContinue/EditAndContinueTests.vb @@ -1475,6 +1475,7 @@ End Class }) g.VerifyIL(" +add_E, remove_E, raise_E { // Code size 13 (0xd) .maxstack 8 @@ -1483,6 +1484,7 @@ End Class IL_0007: newobj 0x06000005 IL_000c: throw } +.ctor { // Code size 15 (0xf) .maxstack 8 @@ -1537,6 +1539,7 @@ End Class }) g.VerifyIL(" +add_E { // Code size 10 (0xa) .maxstack 8 @@ -1546,6 +1549,7 @@ End Class IL_0008: nop IL_0009: ret } +remove_E { // Code size 10 (0xa) .maxstack 8 @@ -1555,6 +1559,7 @@ End Class IL_0008: nop IL_0009: ret } +raise_E { // Code size 10 (0xa) .maxstack 8 @@ -1649,6 +1654,7 @@ End Class }) g.VerifyIL(" +add_E, remove_E { // Code size 13 (0xd) .maxstack 8 @@ -1657,6 +1663,7 @@ End Class IL_0007: newobj 0x06000007 IL_000c: throw } +add_E { // Code size 10 (0xa) .maxstack 8 @@ -1666,6 +1673,7 @@ End Class IL_0008: nop IL_0009: ret } +remove_E { // Code size 10 (0xa) .maxstack 8 @@ -1675,6 +1683,7 @@ End Class IL_0008: nop IL_0009: ret } +.ctor { // Code size 15 (0xf) .maxstack 8 @@ -1736,6 +1745,7 @@ End Class }) g.VerifyIL(" +add_E { // Code size 10 (0xa) .maxstack 8 @@ -1745,6 +1755,7 @@ End Class IL_0008: nop IL_0009: ret } +remove_E { // Code size 13 (0xd) .maxstack 8 @@ -1754,6 +1765,7 @@ End Class IL_000b: nop IL_000c: ret } +add_E, remove_E { // Code size 13 (0xd) .maxstack 8 @@ -2337,6 +2349,7 @@ End Class }) g.VerifyIL(" +get_P, set_P { // Code size 13 (0xd) .maxstack 8 @@ -2345,6 +2358,7 @@ End Class IL_0007: newobj 0x06000006 IL_000c: throw } +get_P { // Code size 15 (0xf) .maxstack 1 @@ -2358,6 +2372,7 @@ End Class IL_000d: ldloc.0 IL_000e: ret } +set_P { // Code size 10 (0xa) .maxstack 8 @@ -2367,6 +2382,7 @@ End Class IL_0008: nop IL_0009: ret } +.ctor { // Code size 15 (0xf) .maxstack 8 @@ -2429,6 +2445,7 @@ End Class }) g.VerifyIL(" +get_P { // Code size 15 (0xf) .maxstack 1 @@ -2442,6 +2459,7 @@ End Class IL_000d: ldloc.0 IL_000e: ret } +set_P { // Code size 13 (0xd) .maxstack 8 @@ -2451,6 +2469,7 @@ End Class IL_000b: nop IL_000c: ret } +get_P, set_P { // Code size 13 (0xd) .maxstack 8 @@ -2522,6 +2541,7 @@ End Class }) g.VerifyIL(" +get_P, set_P { // Code size 13 (0xd) .maxstack 8 @@ -2530,6 +2550,7 @@ End Class IL_0007: newobj 0x06000004 IL_000c: throw } +.ctor { // Code size 15 (0xf) .maxstack 8 @@ -2576,6 +2597,7 @@ End Class }) g.VerifyIL(" +get_P { // Code size 7 (0x7) .maxstack 1 @@ -2649,6 +2671,7 @@ End Class }) g.VerifyIL(" +get_P { // Code size 13 (0xd) .maxstack 8 @@ -2657,6 +2680,7 @@ End Class IL_0007: newobj 0x06000004 IL_000c: throw } +.ctor { // Code size 15 (0xf) .maxstack 8 @@ -2703,6 +2727,7 @@ End Class }) g.VerifyIL(" +get_P { // Code size 7 (0x7) .maxstack 1 @@ -5980,6 +6005,7 @@ End Class }) g.VerifyIL(" +F { // Code size 39 (0x27) .maxstack 2 @@ -5996,6 +6022,7 @@ End Class IL_0025: stloc.2 IL_0026: ret } +_Lambda$__1-0 { // Code size 12 (0xc) .maxstack 8 @@ -6004,6 +6031,7 @@ End Class IL_0006: newobj 0x06000007 IL_000b: throw } +_Lambda$__1-1 { // Code size 9 (0x9) .maxstack 8 @@ -6013,6 +6041,7 @@ End Class IL_0007: nop IL_0008: ret } +.ctor { // Code size 15 (0xf) .maxstack 8 @@ -6086,33 +6115,36 @@ End Class }) g.VerifyIL(" +F { - // Code size 13 (0xd) - .maxstack 8 - IL_0000: ldstr 0x70000005 - IL_0005: ldc.i4.s -2 - IL_0007: newobj 0x06000006 - IL_000c: throw - } - { - // Code size 12 (0xc) - .maxstack 8 - IL_0000: ldstr 0x7000014E - IL_0005: ldc.i4.m1 - IL_0006: newobj 0x06000006 - IL_000b: throw - } - { - // Code size 15 (0xf) - .maxstack 8 - IL_0000: ldarg.0 - IL_0001: ldarg.1 - IL_0002: call 0x0A000008 - IL_0007: ldarg.0 - IL_0008: ldarg.2 - IL_0009: stfld 0x04000003 - IL_000e: ret - } + // Code size 13 (0xd) + .maxstack 8 + IL_0000: ldstr 0x70000005 + IL_0005: ldc.i4.s -2 + IL_0007: newobj 0x06000006 + IL_000c: throw +} +_Lambda$__1-0 +{ + // Code size 12 (0xc) + .maxstack 8 + IL_0000: ldstr 0x7000014E + IL_0005: ldc.i4.m1 + IL_0006: newobj 0x06000006 + IL_000b: throw +} +.ctor +{ + // Code size 15 (0xf) + .maxstack 8 + IL_0000: ldarg.0 + IL_0001: ldarg.1 + IL_0002: call 0x0A000008 + IL_0007: ldarg.0 + IL_0008: ldarg.2 + IL_0009: stfld 0x04000003 + IL_000e: ret +} ") End Sub). AddGeneration(' 2 @@ -6160,6 +6192,7 @@ End Class }) g.VerifyIL(" +F { // Code size 39 (0x27) .maxstack 2 @@ -6176,6 +6209,7 @@ End Class IL_0025: stloc.0 IL_0026: ret } +.ctor { // Code size 7 (0x7) .maxstack 8 @@ -6183,6 +6217,7 @@ End Class IL_0001: call 0x0A00000B IL_0006: ret } +_Lambda$__1#2-0#2 { // Code size 9 (0x9) .maxstack 8 @@ -6233,6 +6268,7 @@ End Class }) g.VerifyIL(" +F { // Code size 13 (0xd) .maxstack 8 @@ -6241,6 +6277,7 @@ End Class IL_0007: newobj 0x06000006 IL_000c: throw } +_Lambda$__1#2-0#2 { // Code size 12 (0xc) .maxstack 8 @@ -6336,6 +6373,7 @@ End Class }) g.VerifyIL(" +F { // Code size 13 (0xd) .maxstack 8 @@ -6344,6 +6382,7 @@ End Class IL_0007: newobj 0x06000006 IL_000c: throw } +_Lambda$__1#1-0#1 { // Code size 12 (0xc) .maxstack 8 @@ -6352,6 +6391,7 @@ End Class IL_0006: newobj 0x06000006 IL_000b: throw } +.ctor { // Code size 15 (0xf) .maxstack 8 @@ -6478,6 +6518,7 @@ End Class }) g.VerifyIL(" +F { // Code size 13 (0xd) .maxstack 8 @@ -6486,6 +6527,7 @@ End Class IL_0007: newobj 0x06000009 IL_000c: throw } +_Lambda$__1-0, _Lambda$__1-1#1, _Lambda$__1-2#2 { // Code size 12 (0xc) .maxstack 8 @@ -6494,6 +6536,7 @@ End Class IL_0006: newobj 0x06000009 IL_000b: throw } +.ctor { // Code size 15 (0xf) .maxstack 8 @@ -6534,6 +6577,7 @@ End Class g.VerifyMemberRefNames(".ctor", "$I1#4-0#4", "$I", "_Lambda$__1#4-0#4", ".ctor", ".ctor", ".ctor", "$I", "WriteLine") g.VerifyIL(" +F { // Code size 50 (0x32) .maxstack 2 @@ -6554,6 +6598,7 @@ End Class IL_0030: ldloc.0 IL_0031: ret } +.ctor { // Code size 7 (0x7) .maxstack 8 @@ -6561,6 +6606,7 @@ End Class IL_0001: call 0x0A000029 IL_0006: ret } +.cctor { // Code size 11 (0xb) .maxstack 8 @@ -6568,6 +6614,7 @@ End Class IL_0005: stsfld 0x0A00002B IL_000a: ret } +_Lambda$__1#4-0#4 { // Code size 9 (0x9) .maxstack 8 @@ -6617,6 +6664,7 @@ End Class }) g.VerifyIL(" +F { // Code size 13 (0xd) .maxstack 8 @@ -6625,6 +6673,7 @@ End Class IL_0007: newobj 0x06000009 IL_000c: throw } +_Lambda$__1#4-0#4 { // Code size 12 (0xc) .maxstack 8 @@ -7319,6 +7368,7 @@ End Class", v.VerifyTypeRefNames("Object") v.VerifyIL(" +M { // Code size 13 (0xd) .maxstack 8 @@ -7371,6 +7421,7 @@ End Class", v.VerifyTypeRefNames("Exception", "Object") v.VerifyIL(" +M { // Code size 13 (0xd) .maxstack 8 @@ -7379,6 +7430,7 @@ End Class", IL_0007: newobj 0x06000003 IL_000c: throw } +.ctor { // Code size 10 (0xa) .maxstack 8 @@ -7436,7 +7488,7 @@ End Class", - Public Sub PrivateImplDetails_DataFields_Arrays() + Public Sub PrivateImplDetails_DataFields_Arrays_FieldRvaNotSupported() Using New EditAndContinueTest(). AddBaseline( source:=" @@ -7536,6 +7588,88 @@ End Class + Public Sub PrivateImplDetails_DataFields_Arrays_FieldRvaSupported() + Using New EditAndContinueTest(). + AddBaseline( + source:=" +Class C + Dim b As Byte() = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } +End Class +", + validator:= + Sub(g) + g.VerifyTypeDefNames("", "C", "", "__StaticArrayInitTypeSize=10") + g.VerifyFieldDefNames("b", "1F825AA2F0020EF7CF91DFA30DA4668D791C5D4824FC8E41354B89EC05795AB3") + g.VerifyMethodDefNames(".ctor") + End Sub). + AddGeneration( + source:=" +Class C + Dim b As Byte() = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 } +End Class +", + edits:= + { + Edit(SemanticEditKind.Update, symbolProvider:=Function(c) c.GetMember("C..ctor")) + }, + validator:= + Sub(g) + g.VerifyTypeDefNames("#1", "__StaticArrayInitTypeSize=11") + g.VerifyFieldDefNames("78A6273103D17C39A0B6126E226CEC70E33337F4BC6A38067401B54A33E78EAD") + g.VerifyMethodDefNames(".ctor") + + g.VerifyEncLogDefinitions( + { + Row(5, TableIndex.TypeDef, EditAndContinueOperation.Default), + Row(6, TableIndex.TypeDef, EditAndContinueOperation.Default), + Row(5, TableIndex.TypeDef, EditAndContinueOperation.AddField), + Row(3, TableIndex.Field, EditAndContinueOperation.Default), + Row(1, TableIndex.MethodDef, EditAndContinueOperation.Default), + Row(5, TableIndex.CustomAttribute, EditAndContinueOperation.Default), + Row(2, TableIndex.ClassLayout, EditAndContinueOperation.Default), + Row(2, TableIndex.FieldRva, EditAndContinueOperation.Default), + Row(2, TableIndex.NestedClass, EditAndContinueOperation.Default) + }) + + g.VerifyEncMapDefinitions( + { + Handle(5, TableIndex.TypeDef), + Handle(6, TableIndex.TypeDef), + Handle(3, TableIndex.Field), + Handle(1, TableIndex.MethodDef), + Handle(5, TableIndex.CustomAttribute), + Handle(2, TableIndex.ClassLayout), + Handle(2, TableIndex.FieldRva), + Handle(2, TableIndex.NestedClass) + }) + + g.VerifyIL("C..ctor", " +{ + // Code size 32 (0x20) + .maxstack 4 + IL_0000: ldarg.0 + IL_0001: call ""Sub Object..ctor()"" + IL_0006: nop + IL_0007: ldarg.0 + IL_0008: ldc.i4.s 11 + IL_000a: newarr ""Byte"" + IL_000f: dup + IL_0010: ldtoken ""#1.__StaticArrayInitTypeSize=11 #1.78A6273103D17C39A0B6126E226CEC70E33337F4BC6A38067401B54A33E78EAD"" + IL_0015: call ""Sub System.Runtime.CompilerServices.RuntimeHelpers.InitializeArray(System.Array, System.RuntimeFieldHandle)"" + IL_001a: stfld ""C.b As Byte()"" + IL_001f: ret +}") + End Sub, + options:= + New EmitDifferenceOptions() With + { + .EmitFieldRva = True + }). + Verify() + End Using + End Sub + + Public Sub PrivateImplDetails_ComputeStringHash() Using New EditAndContinueTest(). AddBaseline( diff --git a/src/roslyn/src/Compilers/VisualBasic/Test/Emit/Emit/EmitErrorTests.vb b/src/roslyn/src/Compilers/VisualBasic/Test/Emit/Emit/EmitErrorTests.vb index 20d5896b878..649cc8877b8 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Test/Emit/Emit/EmitErrorTests.vb +++ b/src/roslyn/src/Compilers/VisualBasic/Test/Emit/Emit/EmitErrorTests.vb @@ -597,10 +597,13 @@ End Module") Dim compilation = CreateEmptyCompilationWithReferences(VisualBasicSyntaxTree.ParseText(source.ToString()), {MscorlibRef, SystemRef, MsvbRef}) - AssertTheseEmitDiagnostics(compilation, - -BC37255: Combined length of user strings used by the program exceeds allowed limit. Try to decrease use of string or XML literals. -) + Dim expectedDiagnostics = + { + Diagnostic(ERRID.ERR_TooManyUserStrings, """" & New String("K"c, 1000000) & """").WithLocation(13, 33), + Diagnostic(ERRID.ERR_TooManyUserStrings, """" & New String("L"c, 1000000) & """").WithLocation(14, 33) + } + + CreateCompilation(source.ToString()).VerifyEmitDiagnostics(expectedDiagnostics) End Sub #End Region diff --git a/src/roslyn/src/Compilers/VisualBasic/Test/Symbol/SymbolDisplay/SymbolDisplayTests.vb b/src/roslyn/src/Compilers/VisualBasic/Test/Symbol/SymbolDisplay/SymbolDisplayTests.vb index 5f52b065c23..5c6423f123c 100644 --- a/src/roslyn/src/Compilers/VisualBasic/Test/Symbol/SymbolDisplay/SymbolDisplayTests.vb +++ b/src/roslyn/src/Compilers/VisualBasic/Test/Symbol/SymbolDisplay/SymbolDisplayTests.vb @@ -5898,7 +5898,7 @@ class Program SymbolDisplayPartKind.Keyword, SymbolDisplayPartKind.Space, SymbolDisplayPartKind.Keyword) - End sub + End Sub Public Sub UseLongHandValueTuple() @@ -6032,6 +6032,117 @@ end class" actual:=displayParts) End Sub + + Public Sub TestExtensionBlockCSharp_01(useMetadata As Boolean) + Dim text = + +static class E +{ + extension(object o) + { + public void M() { } + } +} +.Value + + Dim format = New SymbolDisplayFormat( + typeQualificationStyle:=SymbolDisplayTypeQualificationStyle.NameAndContainingTypesAndNamespaces, + memberOptions:=SymbolDisplayMemberOptions.IncludeParameters Or + SymbolDisplayMemberOptions.IncludeModifiers Or + SymbolDisplayMemberOptions.IncludeAccessibility Or + SymbolDisplayMemberOptions.IncludeType Or + SymbolDisplayMemberOptions.IncludeContainingType, + kindOptions:=SymbolDisplayKindOptions.IncludeMemberKeyword, + parameterOptions:=SymbolDisplayParameterOptions.IncludeType Or + SymbolDisplayParameterOptions.IncludeName Or + SymbolDisplayParameterOptions.IncludeDefaultValue, + miscellaneousOptions:=SymbolDisplayMiscellaneousOptions.UseSpecialTypes) + + Dim parseOptions = CSharp.CSharpParseOptions.Default.WithLanguageVersion(CSharp.LanguageVersion.Preview) + Dim comp As Compilation + If useMetadata Then + Dim libComp = CreateCSharpCompilation("c", text, parseOptions:=parseOptions) + comp = CreateCSharpCompilation("d", code:="", parseOptions:=parseOptions, referencedAssemblies:={libComp.EmitToImageReference()}) + Else + comp = CreateCSharpCompilation("c", text, parseOptions:=parseOptions) + End If + + Dim e = DirectCast(comp.GlobalNamespace.GetMembers("E").Single(), ITypeSymbol) + Dim extension = e.GetMembers().OfType(Of ITypeSymbol).Single() + + Assert.Equal("E.<>E__0", SymbolDisplay.ToDisplayString(extension, format)) + + Dim parts = SymbolDisplay.ToDisplayParts(extension, format) + Verify(parts, + "E.<>E__0", + SymbolDisplayPartKind.ClassName, + SymbolDisplayPartKind.Operator, + SymbolDisplayPartKind.ClassName) + + Dim skeletonM = extension.GetMembers("M").Single() + Assert.Equal("Public Sub E.<>E__0.M()", SymbolDisplay.ToDisplayString(skeletonM, format)) + End Sub + + + Public Sub TestExtensionBlockCSharp_02(useMetadata As Boolean) + Dim text = + + (T t) + { + public void M() { } + } +} + ]]> +.Value + + Dim format = New SymbolDisplayFormat( + typeQualificationStyle:=SymbolDisplayTypeQualificationStyle.NameAndContainingTypesAndNamespaces, + memberOptions:=SymbolDisplayMemberOptions.IncludeParameters Or + SymbolDisplayMemberOptions.IncludeModifiers Or + SymbolDisplayMemberOptions.IncludeAccessibility Or + SymbolDisplayMemberOptions.IncludeType Or + SymbolDisplayMemberOptions.IncludeContainingType, + kindOptions:=SymbolDisplayKindOptions.IncludeMemberKeyword, + genericsOptions:=SymbolDisplayGenericsOptions.IncludeTypeParameters, + parameterOptions:=SymbolDisplayParameterOptions.IncludeType Or + SymbolDisplayParameterOptions.IncludeName Or + SymbolDisplayParameterOptions.IncludeDefaultValue, + miscellaneousOptions:=SymbolDisplayMiscellaneousOptions.UseSpecialTypes) + + Dim parseOptions = CSharp.CSharpParseOptions.Default.WithLanguageVersion(CSharp.LanguageVersion.Preview) + Dim comp As Compilation + If useMetadata Then + Dim libComp = CreateCSharpCompilation("c", text, parseOptions:=parseOptions) + comp = CreateCSharpCompilation("d", code:="", parseOptions:=parseOptions, referencedAssemblies:={libComp.EmitToImageReference()}) + Else + comp = CreateCSharpCompilation("c", text, parseOptions:=parseOptions) + End If + + Dim e = DirectCast(comp.GlobalNamespace.GetMembers("E").Single(), ITypeSymbol) + Dim extension = e.GetMembers().OfType(Of ITypeSymbol).Single() + + ' Tracked by https://github.com/dotnet/roslyn/issues/76130 : the arity should not be included in the extension type name + Assert.Equal("E.<>E__0`1(Of T)", SymbolDisplay.ToDisplayString(extension, format)) + + Dim parts = SymbolDisplay.ToDisplayParts(extension, format) + Verify(parts, + "E.<>E__0`1(Of T)", + SymbolDisplayPartKind.ClassName, + SymbolDisplayPartKind.Operator, + SymbolDisplayPartKind.ClassName, + SymbolDisplayPartKind.Punctuation, + SymbolDisplayPartKind.Keyword, + SymbolDisplayPartKind.Space, + SymbolDisplayPartKind.TypeParameterName, + SymbolDisplayPartKind.Punctuation) + + Dim skeletonM = extension.GetMembers("M").Single() + Assert.Equal("Public Sub E.<>E__0`1(Of T).M()", SymbolDisplay.ToDisplayString(skeletonM, format)) + End Sub + #Region "Helpers" Private Shared Sub TestSymbolDescription( diff --git a/src/roslyn/src/Dependencies/.editorconfig b/src/roslyn/src/Dependencies/.editorconfig new file mode 100644 index 00000000000..4694508c4da --- /dev/null +++ b/src/roslyn/src/Dependencies/.editorconfig @@ -0,0 +1,6 @@ +[*.cs] + +# IDE0240: Remove redundant nullable directive +# The directive needs to be included since all sources in a source package are considered generated code +# when referenced from a project via package reference. +dotnet_diagnostic.IDE0240.severity = none \ No newline at end of file diff --git a/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/CustomDebugInfoConstants.cs b/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/CustomDebugInfoConstants.cs index febe61ffa43..faa494e8c23 100644 --- a/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/CustomDebugInfoConstants.cs +++ b/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/CustomDebugInfoConstants.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + namespace Microsoft.CodeAnalysis.Debugging { /// diff --git a/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/CustomDebugInfoEncoder.cs b/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/CustomDebugInfoEncoder.cs index da2f5b1c13c..d3b81fe3b74 100644 --- a/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/CustomDebugInfoEncoder.cs +++ b/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/CustomDebugInfoEncoder.cs @@ -2,7 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -#nullable disable +#nullable enable using System; using System.Collections.Generic; @@ -40,7 +40,7 @@ public CustomDebugInfoEncoder(BlobBuilder builder) public readonly int RecordCount => _recordCount; /// More than records added. - public readonly byte[] ToArray() + public readonly byte[]? ToArray() { if (_recordCount == 0) { @@ -54,8 +54,6 @@ public readonly byte[] ToArray() public void AddStateMachineTypeName(string typeName) { - Debug.Assert(typeName != null); - AddRecord( CustomDebugInfoKind.StateMachineTypeName, typeName, @@ -142,8 +140,6 @@ public void AddStateMachineHoistedLocalScopes(ImmutableArray dynamicLocals) { - Debug.Assert(dynamicLocals != null); - AddRecord( CustomDebugInfoKind.DynamicLocals, dynamicLocals, @@ -168,8 +164,6 @@ public void AddDynamicLocals(IReadOnlyCollection<(string LocalName, byte[] Flags public void AddTupleElementNames(IReadOnlyCollection<(string LocalName, int SlotIndex, int ScopeStart, int ScopeEnd, ImmutableArray Names)> tupleLocals) { - Debug.Assert(tupleLocals != null); - AddRecord( CustomDebugInfoKind.TupleElementNames, tupleLocals, diff --git a/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/CustomDebugInfoKind.cs b/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/CustomDebugInfoKind.cs index 207bdb58b56..320f5b0a2c9 100644 --- a/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/CustomDebugInfoKind.cs +++ b/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/CustomDebugInfoKind.cs @@ -2,7 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -#nullable disable +#nullable enable namespace Microsoft.CodeAnalysis.Debugging { diff --git a/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/CustomDebugInfoReader.cs b/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/CustomDebugInfoReader.cs index a6b5aab8dd4..778ebc39c62 100644 --- a/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/CustomDebugInfoReader.cs +++ b/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/CustomDebugInfoReader.cs @@ -2,12 +2,13 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -#nullable disable +#nullable enable using System; using System.Collections.Generic; using System.Collections.Immutable; using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; using System.Globalization; using System.Text; using Microsoft.CodeAnalysis.PooledObjects; @@ -313,7 +314,7 @@ public static ImmutableArray DecodeTupleElementNamesRecor private static TupleElementNamesInfo DecodeTupleElementNamesInfo(ImmutableArray bytes, ref int offset) { var n = ReadInt32(bytes, ref offset); - var builder = ArrayBuilder.GetInstance(n); + var builder = ArrayBuilder.GetInstance(n); for (var i = 0; i < n; i++) { var value = ReadUtf8String(bytes, ref offset); @@ -337,7 +338,7 @@ private static TupleElementNamesInfo DecodeTupleElementNamesInfo(ImmutableArray< public static ImmutableArray> GetCSharpGroupedImportStrings( int methodToken, TArg arg, - Func getMethodCustomDebugInfo, + Func getMethodCustomDebugInfo, Func> getMethodImportStrings, out ImmutableArray externAliasStrings) { @@ -572,7 +573,7 @@ private static bool IsCSharpExternAliasInfo(string import) /// "TSystem.Math" -> /// ]]> /// - public static bool TryParseCSharpImportString(string import, out string alias, out string externAlias, out string target, out ImportTargetKind kind) + public static bool TryParseCSharpImportString(string import, out string? alias, out string? externAlias, out string? target, out ImportTargetKind kind) { alias = null; externAlias = null; @@ -673,7 +674,7 @@ public static bool TryParseCSharpImportString(string import, out string alias, o /// /// is null. /// Format of is not valid. - public static bool TryParseVisualBasicImportString(string import, out string alias, out string target, out ImportTargetKind kind, out VBImportScopeKind scope) + public static bool TryParseVisualBasicImportString(string import, out string? alias, out string? target, out ImportTargetKind kind, out VBImportScopeKind scope) { alias = null; target = null; @@ -820,7 +821,7 @@ public static bool TryParseVisualBasicImportString(string import, out string ali } } - private static bool TrySplit(string input, int offset, char separator, out string before, out string after) + private static bool TrySplit(string input, int offset, char separator, [NotNullWhen(true)] out string? before, [NotNullWhen(true)] out string? after) { var separatorPos = input.IndexOf(separator, offset); diff --git a/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/CustomDebugInfoRecord.cs b/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/CustomDebugInfoRecord.cs index be95230e5c5..424a7f6a8fd 100644 --- a/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/CustomDebugInfoRecord.cs +++ b/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/CustomDebugInfoRecord.cs @@ -2,7 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -#nullable disable +#nullable enable using System.Collections.Immutable; diff --git a/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/DynamicLocalInfo.cs b/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/DynamicLocalInfo.cs index 32220fc3251..38b648dade9 100644 --- a/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/DynamicLocalInfo.cs +++ b/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/DynamicLocalInfo.cs @@ -2,7 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -#nullable disable +#nullable enable using System.Collections.Immutable; diff --git a/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/ImportTargetKind.cs b/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/ImportTargetKind.cs index eb3730f8e42..3442fd60cce 100644 --- a/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/ImportTargetKind.cs +++ b/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/ImportTargetKind.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + namespace Microsoft.CodeAnalysis.Debugging { internal enum ImportTargetKind diff --git a/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/Microsoft.CodeAnalysis.Debugging.Package.csproj b/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/Microsoft.CodeAnalysis.Debugging.Package.csproj index be31526b6c3..b712ad77046 100644 --- a/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/Microsoft.CodeAnalysis.Debugging.Package.csproj +++ b/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/Microsoft.CodeAnalysis.Debugging.Package.csproj @@ -22,6 +22,7 @@ - + + diff --git a/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/PortableCustomDebugInfoKinds.cs b/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/PortableCustomDebugInfoKinds.cs index a08e7536c6b..33fa120d468 100644 --- a/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/PortableCustomDebugInfoKinds.cs +++ b/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/PortableCustomDebugInfoKinds.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; namespace Microsoft.CodeAnalysis.Debugging diff --git a/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/StateMachineHoistedLocalScope.cs b/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/StateMachineHoistedLocalScope.cs index e54f83293af..6c47b4031b0 100644 --- a/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/StateMachineHoistedLocalScope.cs +++ b/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/StateMachineHoistedLocalScope.cs @@ -2,7 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -#nullable disable +#nullable enable using System.Diagnostics; diff --git a/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/TupleElementNamesInfo.cs b/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/TupleElementNamesInfo.cs index 28a972f008b..161696a9ee4 100644 --- a/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/TupleElementNamesInfo.cs +++ b/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/TupleElementNamesInfo.cs @@ -2,7 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. -#nullable disable +#nullable enable using System.Collections.Immutable; using System.Diagnostics; @@ -11,13 +11,13 @@ namespace Microsoft.CodeAnalysis.Debugging { internal readonly struct TupleElementNamesInfo { - internal readonly ImmutableArray ElementNames; + internal readonly ImmutableArray ElementNames; internal readonly int SlotIndex; // Locals only internal readonly string LocalName; internal readonly int ScopeStart; // Constants only internal readonly int ScopeEnd; // Constants only - internal TupleElementNamesInfo(ImmutableArray elementNames, int slotIndex, string localName, int scopeStart, int scopeEnd) + internal TupleElementNamesInfo(ImmutableArray elementNames, int slotIndex, string localName, int scopeStart, int scopeEnd) { Debug.Assert(!elementNames.IsDefault); diff --git a/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/VBImportScopeKind.cs b/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/VBImportScopeKind.cs index 34d85270ee7..e9b82318e7c 100644 --- a/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/VBImportScopeKind.cs +++ b/src/roslyn/src/Dependencies/CodeAnalysis.Debugging/VBImportScopeKind.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + namespace Microsoft.CodeAnalysis.Debugging { internal enum VBImportScopeKind diff --git a/src/roslyn/src/Dependencies/Collections/Extensions/ICollectionExtensions.cs b/src/roslyn/src/Dependencies/Collections/Extensions/ICollectionExtensions.cs index 0f88c8c6fae..b6fd40d078d 100644 --- a/src/roslyn/src/Dependencies/Collections/Extensions/ICollectionExtensions.cs +++ b/src/roslyn/src/Dependencies/Collections/Extensions/ICollectionExtensions.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections.Generic; using System.Collections.Immutable; diff --git a/src/roslyn/src/Dependencies/Collections/Extensions/IEnumerableExtensions.cs b/src/roslyn/src/Dependencies/Collections/Extensions/IEnumerableExtensions.cs index 058e1e54e38..d06a1733a9f 100644 --- a/src/roslyn/src/Dependencies/Collections/Extensions/IEnumerableExtensions.cs +++ b/src/roslyn/src/Dependencies/Collections/Extensions/IEnumerableExtensions.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections; using System.Collections.Generic; diff --git a/src/roslyn/src/Dependencies/Collections/Extensions/ImmutableArrayExtensions.cs b/src/roslyn/src/Dependencies/Collections/Extensions/ImmutableArrayExtensions.cs index a57b085a284..06227b65bc8 100644 --- a/src/roslyn/src/Dependencies/Collections/Extensions/ImmutableArrayExtensions.cs +++ b/src/roslyn/src/Dependencies/Collections/Extensions/ImmutableArrayExtensions.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections.Generic; using System.Collections.Immutable; diff --git a/src/roslyn/src/Dependencies/Collections/Internal/ArraySortHelper.cs b/src/roslyn/src/Dependencies/Collections/Internal/ArraySortHelper.cs index 1817447d268..0d60317f3ef 100644 --- a/src/roslyn/src/Dependencies/Collections/Internal/ArraySortHelper.cs +++ b/src/roslyn/src/Dependencies/Collections/Internal/ArraySortHelper.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + // NOTE: This code is derived from an implementation originally in dotnet/runtime: // https://github.com/dotnet/runtime/blob/v8.0.3/src/libraries/System.Private.CoreLib/src/System/Collections/Generic/ArraySortHelper.cs // diff --git a/src/roslyn/src/Dependencies/Collections/Internal/BitHelper.cs b/src/roslyn/src/Dependencies/Collections/Internal/BitHelper.cs index f7a74f4f6b8..a9238e0e47c 100644 --- a/src/roslyn/src/Dependencies/Collections/Internal/BitHelper.cs +++ b/src/roslyn/src/Dependencies/Collections/Internal/BitHelper.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + // NOTE: This code is derived from an implementation originally in dotnet/runtime: // https://github.com/dotnet/runtime/blob/v8.0.3/src/libraries/Common/src/System/Collections/Generic/BitHelper.cs // diff --git a/src/roslyn/src/Dependencies/Collections/Internal/HashHelpers.cs b/src/roslyn/src/Dependencies/Collections/Internal/HashHelpers.cs index 2dc9e630edd..1dfe0939094 100644 --- a/src/roslyn/src/Dependencies/Collections/Internal/HashHelpers.cs +++ b/src/roslyn/src/Dependencies/Collections/Internal/HashHelpers.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + // NOTE: This code is derived from an implementation originally in dotnet/runtime: // https://github.com/dotnet/runtime/blob/v8.0.3/src/libraries/System.Private.CoreLib/src/System/Collections/HashHelpers.cs // diff --git a/src/roslyn/src/Dependencies/Collections/Internal/ICollectionCalls.cs b/src/roslyn/src/Dependencies/Collections/Internal/ICollectionCalls.cs index 6d71ff82afb..e45d9116104 100644 --- a/src/roslyn/src/Dependencies/Collections/Internal/ICollectionCalls.cs +++ b/src/roslyn/src/Dependencies/Collections/Internal/ICollectionCalls.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections; diff --git a/src/roslyn/src/Dependencies/Collections/Internal/ICollectionCalls`1.cs b/src/roslyn/src/Dependencies/Collections/Internal/ICollectionCalls`1.cs index 45fa0142859..f902f8b817b 100644 --- a/src/roslyn/src/Dependencies/Collections/Internal/ICollectionCalls`1.cs +++ b/src/roslyn/src/Dependencies/Collections/Internal/ICollectionCalls`1.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System.Collections.Generic; namespace Microsoft.CodeAnalysis.Collections.Internal diff --git a/src/roslyn/src/Dependencies/Collections/Internal/ICollectionDebugView`1.cs b/src/roslyn/src/Dependencies/Collections/Internal/ICollectionDebugView`1.cs index 93269df4e76..f59fa686a6a 100644 --- a/src/roslyn/src/Dependencies/Collections/Internal/ICollectionDebugView`1.cs +++ b/src/roslyn/src/Dependencies/Collections/Internal/ICollectionDebugView`1.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + // NOTE: This code is derived from an implementation originally in dotnet/runtime: // https://github.com/dotnet/runtime/blob/v8.0.3/src/libraries/System.Private.CoreLib/src/System/Collections/Generic/ICollectionDebugView.cs // diff --git a/src/roslyn/src/Dependencies/Collections/Internal/IDictionaryCalls.cs b/src/roslyn/src/Dependencies/Collections/Internal/IDictionaryCalls.cs index 79d95fd22ef..a26d4425a6d 100644 --- a/src/roslyn/src/Dependencies/Collections/Internal/IDictionaryCalls.cs +++ b/src/roslyn/src/Dependencies/Collections/Internal/IDictionaryCalls.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections; diff --git a/src/roslyn/src/Dependencies/Collections/Internal/IDictionaryDebugView`2.cs b/src/roslyn/src/Dependencies/Collections/Internal/IDictionaryDebugView`2.cs index fd92c1c48a8..265c29b08a3 100644 --- a/src/roslyn/src/Dependencies/Collections/Internal/IDictionaryDebugView`2.cs +++ b/src/roslyn/src/Dependencies/Collections/Internal/IDictionaryDebugView`2.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + // NOTE: This code is derived from an implementation originally in dotnet/runtime: // https://github.com/dotnet/runtime/blob/v8.0.3/src/libraries/System.Private.CoreLib/src/System/Collections/Generic/IDictionaryDebugView.cs // diff --git a/src/roslyn/src/Dependencies/Collections/Internal/IEnumerableCalls.cs b/src/roslyn/src/Dependencies/Collections/Internal/IEnumerableCalls.cs index ae03c4968e3..4bdd34da0e1 100644 --- a/src/roslyn/src/Dependencies/Collections/Internal/IEnumerableCalls.cs +++ b/src/roslyn/src/Dependencies/Collections/Internal/IEnumerableCalls.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System.Collections; namespace Microsoft.CodeAnalysis.Collections.Internal diff --git a/src/roslyn/src/Dependencies/Collections/Internal/IEnumerableCalls`1.cs b/src/roslyn/src/Dependencies/Collections/Internal/IEnumerableCalls`1.cs index 551b3f1cc14..000fd0d7075 100644 --- a/src/roslyn/src/Dependencies/Collections/Internal/IEnumerableCalls`1.cs +++ b/src/roslyn/src/Dependencies/Collections/Internal/IEnumerableCalls`1.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System.Collections.Generic; namespace Microsoft.CodeAnalysis.Collections.Internal diff --git a/src/roslyn/src/Dependencies/Collections/Internal/IListCalls.cs b/src/roslyn/src/Dependencies/Collections/Internal/IListCalls.cs index d98ca9b3f13..f7555e2429d 100644 --- a/src/roslyn/src/Dependencies/Collections/Internal/IListCalls.cs +++ b/src/roslyn/src/Dependencies/Collections/Internal/IListCalls.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System.Collections; namespace Microsoft.CodeAnalysis.Collections.Internal diff --git a/src/roslyn/src/Dependencies/Collections/Internal/InsertionBehavior.cs b/src/roslyn/src/Dependencies/Collections/Internal/InsertionBehavior.cs index 1e5bcb9bf06..40e2d12ad2a 100644 --- a/src/roslyn/src/Dependencies/Collections/Internal/InsertionBehavior.cs +++ b/src/roslyn/src/Dependencies/Collections/Internal/InsertionBehavior.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + // NOTE: This code is derived from an implementation originally in dotnet/runtime: // https://github.com/dotnet/runtime/blob/v8.0.3/src/libraries/System.Private.CoreLib/src/System/Collections/Generic/InsertionBehavior.cs // diff --git a/src/roslyn/src/Dependencies/Collections/Internal/RoslynUnsafe.cs b/src/roslyn/src/Dependencies/Collections/Internal/RoslynUnsafe.cs index a02bcb73995..d8d40e90c5d 100644 --- a/src/roslyn/src/Dependencies/Collections/Internal/RoslynUnsafe.cs +++ b/src/roslyn/src/Dependencies/Collections/Internal/RoslynUnsafe.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System.Runtime.CompilerServices; namespace Microsoft.CodeAnalysis.Collections.Internal diff --git a/src/roslyn/src/Dependencies/Collections/Internal/SegmentedArrayHelper.cs b/src/roslyn/src/Dependencies/Collections/Internal/SegmentedArrayHelper.cs index 87caa4c74b5..70d87cbaea2 100644 --- a/src/roslyn/src/Dependencies/Collections/Internal/SegmentedArrayHelper.cs +++ b/src/roslyn/src/Dependencies/Collections/Internal/SegmentedArrayHelper.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Diagnostics; using System.Runtime.CompilerServices; diff --git a/src/roslyn/src/Dependencies/Collections/Internal/SegmentedArraySegment`1.cs b/src/roslyn/src/Dependencies/Collections/Internal/SegmentedArraySegment`1.cs index c995b39f5a0..69d490ea85f 100644 --- a/src/roslyn/src/Dependencies/Collections/Internal/SegmentedArraySegment`1.cs +++ b/src/roslyn/src/Dependencies/Collections/Internal/SegmentedArraySegment`1.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + namespace Microsoft.CodeAnalysis.Collections.Internal { internal readonly struct SegmentedArraySegment diff --git a/src/roslyn/src/Dependencies/Collections/Internal/SegmentedHashSetEqualityComparer`1.cs b/src/roslyn/src/Dependencies/Collections/Internal/SegmentedHashSetEqualityComparer`1.cs index 07edb995f83..5946c81f763 100644 --- a/src/roslyn/src/Dependencies/Collections/Internal/SegmentedHashSetEqualityComparer`1.cs +++ b/src/roslyn/src/Dependencies/Collections/Internal/SegmentedHashSetEqualityComparer`1.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + // NOTE: This code is derived from an implementation originally in dotnet/runtime: // https://github.com/dotnet/runtime/blob/v8.0.3/src/libraries/System.Private.CoreLib/src/System/Collections/Generic/HashSetEqualityComparer.cs // diff --git a/src/roslyn/src/Dependencies/Collections/Internal/ThrowHelper.cs b/src/roslyn/src/Dependencies/Collections/Internal/ThrowHelper.cs index 113f80cda3a..994a252a9ce 100644 --- a/src/roslyn/src/Dependencies/Collections/Internal/ThrowHelper.cs +++ b/src/roslyn/src/Dependencies/Collections/Internal/ThrowHelper.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + // This file defines an internal class used to throw exceptions in BCL code. // The main purpose is to reduce code size. // diff --git a/src/roslyn/src/Dependencies/Collections/OneOrMany.cs b/src/roslyn/src/Dependencies/Collections/OneOrMany.cs index 10856414dfe..eaad4dcf1c1 100644 --- a/src/roslyn/src/Dependencies/Collections/OneOrMany.cs +++ b/src/roslyn/src/Dependencies/Collections/OneOrMany.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections.Generic; using System.Collections.Immutable; diff --git a/src/roslyn/src/Dependencies/Collections/RoslynEnumerable.cs b/src/roslyn/src/Dependencies/Collections/RoslynEnumerable.cs index 18f7bc6f7b3..5edd13ee2e5 100644 --- a/src/roslyn/src/Dependencies/Collections/RoslynEnumerable.cs +++ b/src/roslyn/src/Dependencies/Collections/RoslynEnumerable.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System.Collections.Generic; using Microsoft.CodeAnalysis.Collections; using Microsoft.CodeAnalysis.Collections.Internal; diff --git a/src/roslyn/src/Dependencies/Collections/RoslynImmutableInterlocked.cs b/src/roslyn/src/Dependencies/Collections/RoslynImmutableInterlocked.cs index 6e5e8742d30..ae317798435 100644 --- a/src/roslyn/src/Dependencies/Collections/RoslynImmutableInterlocked.cs +++ b/src/roslyn/src/Dependencies/Collections/RoslynImmutableInterlocked.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections.Generic; using System.Collections.Immutable; diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary.cs b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary.cs index 4440fab2d77..70ca2fa8c17 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections.Generic; using System.Linq; diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+Builder+KeyCollection.cs b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+Builder+KeyCollection.cs index 74a16225c3c..6f406539a72 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+Builder+KeyCollection.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+Builder+KeyCollection.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections; using System.Collections.Generic; diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+Builder+PrivateMarshal.cs b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+Builder+PrivateMarshal.cs index 01f7a1c796d..174a53dfc09 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+Builder+PrivateMarshal.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+Builder+PrivateMarshal.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + namespace Microsoft.CodeAnalysis.Collections; internal readonly partial struct ImmutableSegmentedDictionary diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+Builder+ValueCollection.cs b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+Builder+ValueCollection.cs index a4a3db49a0c..bf68f898f0a 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+Builder+ValueCollection.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+Builder+ValueCollection.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections; using System.Collections.Generic; diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+Builder.cs b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+Builder.cs index 6e36d573d4a..a1e438608ac 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+Builder.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+Builder.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections; using System.Collections.Generic; diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+Enumerator.cs b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+Enumerator.cs index 3fabd7903d8..5513c12bbc7 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+Enumerator.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+Enumerator.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System.Collections; using System.Collections.Generic; diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+KeyCollection+Enumerator.cs b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+KeyCollection+Enumerator.cs index e8bc2d2e924..d4a04d85269 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+KeyCollection+Enumerator.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+KeyCollection+Enumerator.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System.Collections; using System.Collections.Generic; diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+KeyCollection.cs b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+KeyCollection.cs index bd198731f0f..dbdbd4e515d 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+KeyCollection.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+KeyCollection.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections; using System.Collections.Generic; diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+PrivateMarshal.cs b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+PrivateMarshal.cs index c50fc90148c..3b6ee1c382d 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+PrivateMarshal.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+PrivateMarshal.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System.Runtime.CompilerServices; using System.Threading; diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+ValueBuilder.cs b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+ValueBuilder.cs index 4c20bfdc65c..f57337bbd1d 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+ValueBuilder.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+ValueBuilder.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections; using System.Collections.Generic; diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+ValueCollection+Enumerator.cs b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+ValueCollection+Enumerator.cs index f9c24248037..dccb9177d81 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+ValueCollection+Enumerator.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+ValueCollection+Enumerator.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System.Collections; using System.Collections.Generic; diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+ValueCollection.cs b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+ValueCollection.cs index b45d6f89a83..966328f845f 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+ValueCollection.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2+ValueCollection.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections; using System.Collections.Generic; diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2.cs b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2.cs index bdcdcdddcf9..8898ed1e367 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedDictionary`2.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections; using System.Collections.Generic; diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedHashSet.cs b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedHashSet.cs index 7e51c5cf457..63e2a1e8969 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedHashSet.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedHashSet.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections.Generic; using System.Collections.Immutable; diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedHashSet`1+Builder.cs b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedHashSet`1+Builder.cs index f5140e38238..d8273f710b8 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedHashSet`1+Builder.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedHashSet`1+Builder.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System.Collections; using System.Collections.Generic; using System.Collections.Immutable; diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedHashSet`1+Enumerator.cs b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedHashSet`1+Enumerator.cs index 59dde6ec590..add645bb303 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedHashSet`1+Enumerator.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedHashSet`1+Enumerator.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System.Collections; using System.Collections.Generic; using System.Collections.Immutable; diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedHashSet`1+PrivateMarshal.cs b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedHashSet`1+PrivateMarshal.cs index cb8ed165669..282cbfb17a5 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedHashSet`1+PrivateMarshal.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedHashSet`1+PrivateMarshal.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System.Runtime.CompilerServices; using System.Threading; diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedHashSet`1+ValueBuilder.cs b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedHashSet`1+ValueBuilder.cs index c672df7acd9..8c8f2f88690 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedHashSet`1+ValueBuilder.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedHashSet`1+ValueBuilder.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections; using System.Collections.Generic; diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedHashSet`1.cs b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedHashSet`1.cs index c28d85c2ae2..4728fa7a05b 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedHashSet`1.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedHashSet`1.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections; using System.Collections.Generic; diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedList.cs b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedList.cs index 2c035ae1c7c..9272bfb5976 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedList.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedList.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections.Generic; using System.Collections.Immutable; diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedListExtensions.cs b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedListExtensions.cs index 19ad004d99d..a7675a069b7 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedListExtensions.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedListExtensions.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System.Collections.Generic; using Microsoft.CodeAnalysis.Collections; diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedList`1+Builder.cs b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedList`1+Builder.cs index 174d53ff890..6ffd557d665 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedList`1+Builder.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedList`1+Builder.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections; using System.Collections.Generic; diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedList`1+Enumerator.cs b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedList`1+Enumerator.cs index f0ab525e968..6d61c3a3178 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedList`1+Enumerator.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedList`1+Enumerator.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System.Collections; using System.Collections.Generic; diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedList`1+PrivateMarshal.cs b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedList`1+PrivateMarshal.cs index cf945b2144c..1b9cae87e4a 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedList`1+PrivateMarshal.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedList`1+PrivateMarshal.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System.Runtime.CompilerServices; using System.Threading; diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedList`1+ValueBuilder.cs b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedList`1+ValueBuilder.cs index 456d50419de..f71b14da7f5 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedList`1+ValueBuilder.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedList`1+ValueBuilder.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections; using System.Collections.Generic; diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedList`1.cs b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedList`1.cs index b8eb5c0f545..41a5c8473f2 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedList`1.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/ImmutableSegmentedList`1.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections; using System.Collections.Generic; diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedArray.cs b/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedArray.cs index 41b2fd7b96f..56301f0c088 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedArray.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedArray.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections.Generic; using System.Diagnostics; diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedArray`1+PrivateMarshal.cs b/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedArray`1+PrivateMarshal.cs index 20433a3451b..54bb94d2ffa 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedArray`1+PrivateMarshal.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedArray`1+PrivateMarshal.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + namespace Microsoft.CodeAnalysis.Collections; internal readonly partial struct SegmentedArray diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedArray`1.cs b/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedArray`1.cs index ae0eb89b32c..c544295a66a 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedArray`1.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedArray`1.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections; using System.Collections.Generic; diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedCollectionsMarshal.cs b/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedCollectionsMarshal.cs index d8a9ebeef1a..56c6f38b5e1 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedCollectionsMarshal.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedCollectionsMarshal.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System.Diagnostics.CodeAnalysis; namespace Microsoft.CodeAnalysis.Collections; diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedDictionary`2+PrivateMarshal.cs b/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedDictionary`2+PrivateMarshal.cs index b008a411e6a..d29131abc2b 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedDictionary`2+PrivateMarshal.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedDictionary`2+PrivateMarshal.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + namespace Microsoft.CodeAnalysis.Collections; internal sealed partial class SegmentedDictionary diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedDictionary`2.cs b/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedDictionary`2.cs index 75834b2f507..0a9302a05e6 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedDictionary`2.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedDictionary`2.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + // NOTE: This code is derived from an implementation originally in dotnet/runtime: // https://github.com/dotnet/runtime/blob/v8.0.3/src/libraries/System.Private.CoreLib/src/System/Collections/Generic/Dictionary.cs // diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedHashSet`1.cs b/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedHashSet`1.cs index 080048041e5..59d4528bc6d 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedHashSet`1.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedHashSet`1.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + // NOTE: This code is derived from an implementation originally in dotnet/runtime: // https://github.com/dotnet/runtime/blob/v8.0.3/src/libraries/System.Private.CoreLib/src/System/Collections/Generic/HashSet.cs // diff --git a/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedList`1.cs b/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedList`1.cs index 35118b06966..407d7925951 100644 --- a/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedList`1.cs +++ b/src/roslyn/src/Dependencies/Collections/Segmented/SegmentedList`1.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + // NOTE: This code is derived from an implementation originally in dotnet/runtime: // https://github.com/dotnet/runtime/blob/v8.0.3/src/libraries/System.Private.CoreLib/src/System/Collections/Generic/List.cs // diff --git a/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.Collection.cs b/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.Collection.cs index 99bf9198407..e135dcb8902 100644 --- a/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.Collection.cs +++ b/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.Collection.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections.Generic; diff --git a/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.Dictionary.cs b/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.Dictionary.cs index b3203178f23..7035b5e0c07 100644 --- a/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.Dictionary.cs +++ b/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.Dictionary.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; diff --git a/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.Enumerable.cs b/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.Enumerable.cs index e34c1d6b4f4..c0f577c7a74 100644 --- a/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.Enumerable.cs +++ b/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.Enumerable.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System.Collections.Generic; namespace Roslyn.Utilities diff --git a/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.Enumerator.cs b/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.Enumerator.cs index 2e4842b080e..fd3a41eb700 100644 --- a/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.Enumerator.cs +++ b/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.Enumerator.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections; diff --git a/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.Enumerator`1.cs b/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.Enumerator`1.cs index e28e25ee4c3..70c67464389 100644 --- a/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.Enumerator`1.cs +++ b/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.Enumerator`1.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections.Generic; diff --git a/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.List.cs b/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.List.cs index 677b502c546..2e367fd0240 100644 --- a/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.List.cs +++ b/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.List.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections.Generic; using System.Collections.Immutable; diff --git a/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.Set.cs b/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.Set.cs index fd3cffe9c56..13c41a758fa 100644 --- a/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.Set.cs +++ b/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.Set.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections.Generic; diff --git a/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.cs b/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.cs index 45c57451ded..34ef01c22cd 100644 --- a/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.cs +++ b/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Empty.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + namespace Roslyn.Utilities { internal partial class SpecializedCollections diff --git a/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.ReadOnly.Collection.cs b/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.ReadOnly.Collection.cs index 3d16afe8fd0..70c086c8cdd 100644 --- a/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.ReadOnly.Collection.cs +++ b/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.ReadOnly.Collection.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections.Generic; diff --git a/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.ReadOnly.Enumerable`1.cs b/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.ReadOnly.Enumerable`1.cs index f0dc08fe296..4b0c086b6cc 100644 --- a/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.ReadOnly.Enumerable`1.cs +++ b/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.ReadOnly.Enumerable`1.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System.Collections; namespace Roslyn.Utilities diff --git a/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.ReadOnly.Enumerable`2.cs b/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.ReadOnly.Enumerable`2.cs index ae8e3d8b8e6..5b88cbc975f 100644 --- a/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.ReadOnly.Enumerable`2.cs +++ b/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.ReadOnly.Enumerable`2.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System.Collections.Generic; namespace Roslyn.Utilities diff --git a/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.ReadOnly.Set.cs b/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.ReadOnly.Set.cs index 77c420b0df3..9a5781bd211 100644 --- a/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.ReadOnly.Set.cs +++ b/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.ReadOnly.Set.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections.Generic; diff --git a/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Singleton.Collection`1.cs b/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Singleton.Collection`1.cs index 0b34ed81936..0b1d4b5de5f 100644 --- a/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Singleton.Collection`1.cs +++ b/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Singleton.Collection`1.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections; using System.Collections.Generic; diff --git a/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Singleton.Enumerator`1.cs b/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Singleton.Enumerator`1.cs index 9e7bd4bde36..160e9f272e6 100644 --- a/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Singleton.Enumerator`1.cs +++ b/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.Singleton.Enumerator`1.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System.Collections; using System.Collections.Generic; diff --git a/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.cs b/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.cs index 6c426971d67..ac84a167127 100644 --- a/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.cs +++ b/src/roslyn/src/Dependencies/Collections/Specialized/SpecializedCollections.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System.Collections.Generic; namespace Roslyn.Utilities diff --git a/src/roslyn/src/Dependencies/Collections/TemporaryArrayExtensions.cs b/src/roslyn/src/Dependencies/Collections/TemporaryArrayExtensions.cs index ea21e53908e..df57c3f899b 100644 --- a/src/roslyn/src/Dependencies/Collections/TemporaryArrayExtensions.cs +++ b/src/roslyn/src/Dependencies/Collections/TemporaryArrayExtensions.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Linq; using System.Runtime.CompilerServices; diff --git a/src/roslyn/src/Dependencies/Collections/TemporaryArray`1.cs b/src/roslyn/src/Dependencies/Collections/TemporaryArray`1.cs index 51571b3073b..8f1856e4a58 100644 --- a/src/roslyn/src/Dependencies/Collections/TemporaryArray`1.cs +++ b/src/roslyn/src/Dependencies/Collections/TemporaryArray`1.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections.Generic; using System.Collections.Immutable; diff --git a/src/roslyn/src/Dependencies/Contracts/CollectionBuilderAttribute.cs b/src/roslyn/src/Dependencies/Contracts/CollectionBuilderAttribute.cs index 684065ca3b9..dc4da52e89f 100644 --- a/src/roslyn/src/Dependencies/Contracts/CollectionBuilderAttribute.cs +++ b/src/roslyn/src/Dependencies/Contracts/CollectionBuilderAttribute.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + #if !NET8_0_OR_GREATER namespace System.Runtime.CompilerServices diff --git a/src/roslyn/src/Dependencies/Contracts/CompilerFeatureRequiredAttribute.cs b/src/roslyn/src/Dependencies/Contracts/CompilerFeatureRequiredAttribute.cs index 1810bdc4f64..18d182764b3 100644 --- a/src/roslyn/src/Dependencies/Contracts/CompilerFeatureRequiredAttribute.cs +++ b/src/roslyn/src/Dependencies/Contracts/CompilerFeatureRequiredAttribute.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + // Copied from: // https://github.com/dotnet/runtime/blob/fdd104ec5e1d0d2aa24a6723995a98d0124f724b/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/CompilerFeatureRequiredAttribute.cs diff --git a/src/roslyn/src/Dependencies/Contracts/Contract.InterpolatedStringHandlers.cs b/src/roslyn/src/Dependencies/Contracts/Contract.InterpolatedStringHandlers.cs index 628aa3457f5..89b969dc5c6 100644 --- a/src/roslyn/src/Dependencies/Contracts/Contract.InterpolatedStringHandlers.cs +++ b/src/roslyn/src/Dependencies/Contracts/Contract.InterpolatedStringHandlers.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + #if !MICROSOFT_CODEANALYSIS_CONTRACTS_NO_CONTRACT using System.Runtime.CompilerServices; diff --git a/src/roslyn/src/Dependencies/Contracts/Contract.cs b/src/roslyn/src/Dependencies/Contracts/Contract.cs index 489ffe5bea9..28da2af8377 100644 --- a/src/roslyn/src/Dependencies/Contracts/Contract.cs +++ b/src/roslyn/src/Dependencies/Contracts/Contract.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + #if !MICROSOFT_CODEANALYSIS_CONTRACTS_NO_CONTRACT using System; diff --git a/src/roslyn/src/Dependencies/Contracts/ExceptionUtilities.cs b/src/roslyn/src/Dependencies/Contracts/ExceptionUtilities.cs index 983341521a3..cfc71b0c9ea 100644 --- a/src/roslyn/src/Dependencies/Contracts/ExceptionUtilities.cs +++ b/src/roslyn/src/Dependencies/Contracts/ExceptionUtilities.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Diagnostics; using System.Runtime.CompilerServices; diff --git a/src/roslyn/src/Dependencies/Contracts/ExperimentalAttribute.cs b/src/roslyn/src/Dependencies/Contracts/ExperimentalAttribute.cs index 723361aa24f..867f4636326 100644 --- a/src/roslyn/src/Dependencies/Contracts/ExperimentalAttribute.cs +++ b/src/roslyn/src/Dependencies/Contracts/ExperimentalAttribute.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + // This was copied from https://github.com/dotnet/runtime/blob/815953a12c822847095a843d69c610a9f895ae3f/src/libraries/System.Private.CoreLib/src/System/Diagnostics/CodeAnalysis/ExperimentalAttribute.cs // and updated to have the scope of the attributes be internal. diff --git a/src/roslyn/src/Dependencies/Contracts/IReadOnlySet.cs b/src/roslyn/src/Dependencies/Contracts/IReadOnlySet.cs index 00d0e12056f..23d96d1b0c0 100644 --- a/src/roslyn/src/Dependencies/Contracts/IReadOnlySet.cs +++ b/src/roslyn/src/Dependencies/Contracts/IReadOnlySet.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + #if NET6_0_OR_GREATER using System.Runtime.CompilerServices; diff --git a/src/roslyn/src/Dependencies/Contracts/Index.cs b/src/roslyn/src/Dependencies/Contracts/Index.cs index 8903fd515a3..21489812989 100644 --- a/src/roslyn/src/Dependencies/Contracts/Index.cs +++ b/src/roslyn/src/Dependencies/Contracts/Index.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + #if NET #pragma warning disable RS0016 // Add public types and members to the declared API (this is a supporting forwarder for an internal polyfill API) diff --git a/src/roslyn/src/Dependencies/Contracts/InterpolatedStringHandlerArgumentAttribute.cs b/src/roslyn/src/Dependencies/Contracts/InterpolatedStringHandlerArgumentAttribute.cs index 77690b8c514..a8df29ce946 100644 --- a/src/roslyn/src/Dependencies/Contracts/InterpolatedStringHandlerArgumentAttribute.cs +++ b/src/roslyn/src/Dependencies/Contracts/InterpolatedStringHandlerArgumentAttribute.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + #if NET6_0_OR_GREATER using System.Runtime.CompilerServices; @@ -12,6 +14,8 @@ #else +#pragma warning disable CA1019 // Add a public read-only property accessor for positional argument argument of Attribute + namespace System.Runtime.CompilerServices { /// Indicates which arguments to a method involving an interpolated string handler should be passed to that handler. diff --git a/src/roslyn/src/Dependencies/Contracts/InterpolatedStringHandlerAttribute.cs b/src/roslyn/src/Dependencies/Contracts/InterpolatedStringHandlerAttribute.cs index 84f82162718..1ac03f50fab 100644 --- a/src/roslyn/src/Dependencies/Contracts/InterpolatedStringHandlerAttribute.cs +++ b/src/roslyn/src/Dependencies/Contracts/InterpolatedStringHandlerAttribute.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + #if NET6_0_OR_GREATER using System.Runtime.CompilerServices; diff --git a/src/roslyn/src/Dependencies/Contracts/IsExternalInit.cs b/src/roslyn/src/Dependencies/Contracts/IsExternalInit.cs index 2e63533ac40..cf6d665f0f4 100644 --- a/src/roslyn/src/Dependencies/Contracts/IsExternalInit.cs +++ b/src/roslyn/src/Dependencies/Contracts/IsExternalInit.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + // Copied from: // https://github.com/dotnet/runtime/blob/218ef0f7776c2c20f6c594e3475b80f1fe2d7d08/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/IsExternalInit.cs diff --git a/src/roslyn/src/Dependencies/Contracts/NonCopyableAttribute.cs b/src/roslyn/src/Dependencies/Contracts/NonCopyableAttribute.cs index a5efff996a1..a83373ef6a5 100644 --- a/src/roslyn/src/Dependencies/Contracts/NonCopyableAttribute.cs +++ b/src/roslyn/src/Dependencies/Contracts/NonCopyableAttribute.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; namespace Microsoft.CodeAnalysis; diff --git a/src/roslyn/src/Dependencies/Contracts/NonDefaultableAttribute.cs b/src/roslyn/src/Dependencies/Contracts/NonDefaultableAttribute.cs index c89b6aed40f..bddbc3f3807 100644 --- a/src/roslyn/src/Dependencies/Contracts/NonDefaultableAttribute.cs +++ b/src/roslyn/src/Dependencies/Contracts/NonDefaultableAttribute.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; namespace Microsoft.CodeAnalysis; diff --git a/src/roslyn/src/Dependencies/Contracts/NullableAttributes.cs b/src/roslyn/src/Dependencies/Contracts/NullableAttributes.cs index ebe509bd420..b6eefd30184 100644 --- a/src/roslyn/src/Dependencies/Contracts/NullableAttributes.cs +++ b/src/roslyn/src/Dependencies/Contracts/NullableAttributes.cs @@ -2,8 +2,11 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + // This was copied from https://github.com/dotnet/runtime/blob/39b9607807f29e48cae4652cd74735182b31182e/src/libraries/System.Private.CoreLib/src/System/Diagnostics/CodeAnalysis/NullableAttributes.cs // and updated to have the scope of the attributes be internal. + namespace System.Diagnostics.CodeAnalysis { #if !NETCOREAPP diff --git a/src/roslyn/src/Dependencies/Contracts/Range.cs b/src/roslyn/src/Dependencies/Contracts/Range.cs index 0ee4eba72c7..1f4ac6e0bf5 100644 --- a/src/roslyn/src/Dependencies/Contracts/Range.cs +++ b/src/roslyn/src/Dependencies/Contracts/Range.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + #if NET #pragma warning disable RS0016 // Add public types and members to the declared API (this is a supporting forwarder for an internal polyfill API) diff --git a/src/roslyn/src/Dependencies/Contracts/RequiredMemberAttribute.cs b/src/roslyn/src/Dependencies/Contracts/RequiredMemberAttribute.cs index 520a3e44cfa..7004bd75265 100644 --- a/src/roslyn/src/Dependencies/Contracts/RequiredMemberAttribute.cs +++ b/src/roslyn/src/Dependencies/Contracts/RequiredMemberAttribute.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + // Copied from: // https://github.com/dotnet/runtime/blob/fdd104ec5e1d0d2aa24a6723995a98d0124f724b/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/RequiredMemberAttribute.cs diff --git a/src/roslyn/src/Dependencies/Contracts/SetsRequiredMembersAttribute.cs b/src/roslyn/src/Dependencies/Contracts/SetsRequiredMembersAttribute.cs index 05259b1e13e..891d50f2859 100644 --- a/src/roslyn/src/Dependencies/Contracts/SetsRequiredMembersAttribute.cs +++ b/src/roslyn/src/Dependencies/Contracts/SetsRequiredMembersAttribute.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + // Copied from: // https://github.com/dotnet/runtime/blob/fdd104ec5e1d0d2aa24a6723995a98d0124f724b/src/libraries/System.Private.CoreLib/src/System/Diagnostics/CodeAnalysis/SetsRequiredMembersAttribute.cs diff --git a/src/roslyn/src/Dependencies/Directory.Build.targets b/src/roslyn/src/Dependencies/Directory.Build.targets new file mode 100644 index 00000000000..db2b1748f0b --- /dev/null +++ b/src/roslyn/src/Dependencies/Directory.Build.targets @@ -0,0 +1,17 @@ + + + + + + + $(TargetsForTfmSpecificContentInPackage);_AddEditorConfigToSourcePackage + + + + + + + + diff --git a/src/roslyn/src/Dependencies/PooledObjects/ArrayBuilder.Enumerator.cs b/src/roslyn/src/Dependencies/PooledObjects/ArrayBuilder.Enumerator.cs index de429a7d0f3..94bfba790f9 100644 --- a/src/roslyn/src/Dependencies/PooledObjects/ArrayBuilder.Enumerator.cs +++ b/src/roslyn/src/Dependencies/PooledObjects/ArrayBuilder.Enumerator.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + namespace Microsoft.CodeAnalysis.PooledObjects { internal partial class ArrayBuilder diff --git a/src/roslyn/src/Dependencies/PooledObjects/ArrayBuilder.cs b/src/roslyn/src/Dependencies/PooledObjects/ArrayBuilder.cs index 179459990b5..80ebb45f367 100644 --- a/src/roslyn/src/Dependencies/PooledObjects/ArrayBuilder.cs +++ b/src/roslyn/src/Dependencies/PooledObjects/ArrayBuilder.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections.Generic; using System.Collections.Immutable; diff --git a/src/roslyn/src/Dependencies/PooledObjects/ArrayBuilderExtensions.cs b/src/roslyn/src/Dependencies/PooledObjects/ArrayBuilderExtensions.cs index 28005a924df..602e7df7b68 100644 --- a/src/roslyn/src/Dependencies/PooledObjects/ArrayBuilderExtensions.cs +++ b/src/roslyn/src/Dependencies/PooledObjects/ArrayBuilderExtensions.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System.Collections.Immutable; namespace Microsoft.CodeAnalysis.PooledObjects; diff --git a/src/roslyn/src/Dependencies/PooledObjects/IPooled.cs b/src/roslyn/src/Dependencies/PooledObjects/IPooled.cs index 0b687f3f3e6..db9243fce97 100644 --- a/src/roslyn/src/Dependencies/PooledObjects/IPooled.cs +++ b/src/roslyn/src/Dependencies/PooledObjects/IPooled.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + namespace Microsoft.CodeAnalysis.PooledObjects; internal interface IPooled diff --git a/src/roslyn/src/Dependencies/PooledObjects/Microsoft.CodeAnalysis.PooledObjects.Package.csproj b/src/roslyn/src/Dependencies/PooledObjects/Microsoft.CodeAnalysis.PooledObjects.Package.csproj index 744452f6837..c760d4f2807 100644 --- a/src/roslyn/src/Dependencies/PooledObjects/Microsoft.CodeAnalysis.PooledObjects.Package.csproj +++ b/src/roslyn/src/Dependencies/PooledObjects/Microsoft.CodeAnalysis.PooledObjects.Package.csproj @@ -21,8 +21,5 @@ - - - diff --git a/src/roslyn/src/Dependencies/PooledObjects/ObjectPool`1.cs b/src/roslyn/src/Dependencies/PooledObjects/ObjectPool`1.cs index 043a52b9ccc..66152356069 100644 --- a/src/roslyn/src/Dependencies/PooledObjects/ObjectPool`1.cs +++ b/src/roslyn/src/Dependencies/PooledObjects/ObjectPool`1.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + // define TRACE_LEAKS to get additional diagnostics that can lead to the leak sources. note: it will // make everything about 2-3x slower // diff --git a/src/roslyn/src/Dependencies/PooledObjects/PooledDelegates.cs b/src/roslyn/src/Dependencies/PooledObjects/PooledDelegates.cs index d4717535b33..f4c62b81662 100644 --- a/src/roslyn/src/Dependencies/PooledObjects/PooledDelegates.cs +++ b/src/roslyn/src/Dependencies/PooledObjects/PooledDelegates.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Runtime.CompilerServices; diff --git a/src/roslyn/src/Dependencies/PooledObjects/PooledDictionary.cs b/src/roslyn/src/Dependencies/PooledObjects/PooledDictionary.cs index d8347be56f5..c62b029a2db 100644 --- a/src/roslyn/src/Dependencies/PooledObjects/PooledDictionary.cs +++ b/src/roslyn/src/Dependencies/PooledObjects/PooledDictionary.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System.Collections.Generic; using System.Collections.Immutable; using System.Diagnostics; diff --git a/src/roslyn/src/Dependencies/PooledObjects/PooledDisposer.cs b/src/roslyn/src/Dependencies/PooledObjects/PooledDisposer.cs index e497c4dbd16..416eb6fc717 100644 --- a/src/roslyn/src/Dependencies/PooledObjects/PooledDisposer.cs +++ b/src/roslyn/src/Dependencies/PooledObjects/PooledDisposer.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + #if !MICROSOFT_CODEANALYSIS_POOLEDOBJECTS_NO_POOLED_DISPOSER using System; diff --git a/src/roslyn/src/Dependencies/PooledObjects/PooledHashSet.cs b/src/roslyn/src/Dependencies/PooledObjects/PooledHashSet.cs index d3c5ca7c981..95617c5ad40 100644 --- a/src/roslyn/src/Dependencies/PooledObjects/PooledHashSet.cs +++ b/src/roslyn/src/Dependencies/PooledObjects/PooledHashSet.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System.Collections.Generic; using System.Diagnostics; diff --git a/src/roslyn/src/Dependencies/PooledObjects/PooledStringBuilder.cs b/src/roslyn/src/Dependencies/PooledObjects/PooledStringBuilder.cs index 2a16fbd85f7..673f8ca8140 100644 --- a/src/roslyn/src/Dependencies/PooledObjects/PooledStringBuilder.cs +++ b/src/roslyn/src/Dependencies/PooledObjects/PooledStringBuilder.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System.Diagnostics; using System.Text; diff --git a/src/roslyn/src/Dependencies/SourcePackage.editorconfig b/src/roslyn/src/Dependencies/SourcePackage.editorconfig new file mode 100644 index 00000000000..f93cc9962b2 --- /dev/null +++ b/src/roslyn/src/Dependencies/SourcePackage.editorconfig @@ -0,0 +1,2 @@ +[*.cs] +generated_code = true \ No newline at end of file diff --git a/src/roslyn/src/Dependencies/Threading/AsyncBatchingWorkQueue`0.cs b/src/roslyn/src/Dependencies/Threading/AsyncBatchingWorkQueue`0.cs index db94f6efbc8..95b46d05e6b 100644 --- a/src/roslyn/src/Dependencies/Threading/AsyncBatchingWorkQueue`0.cs +++ b/src/roslyn/src/Dependencies/Threading/AsyncBatchingWorkQueue`0.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections.Generic; using System.Threading; diff --git a/src/roslyn/src/Dependencies/Threading/AsyncBatchingWorkQueue`1.cs b/src/roslyn/src/Dependencies/Threading/AsyncBatchingWorkQueue`1.cs index a14aebc098c..0c322ba753a 100644 --- a/src/roslyn/src/Dependencies/Threading/AsyncBatchingWorkQueue`1.cs +++ b/src/roslyn/src/Dependencies/Threading/AsyncBatchingWorkQueue`1.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections.Generic; using System.Threading; diff --git a/src/roslyn/src/Dependencies/Threading/AsyncBatchingWorkQueue`2.cs b/src/roslyn/src/Dependencies/Threading/AsyncBatchingWorkQueue`2.cs index 4844a6f60c8..3f31f922c04 100644 --- a/src/roslyn/src/Dependencies/Threading/AsyncBatchingWorkQueue`2.cs +++ b/src/roslyn/src/Dependencies/Threading/AsyncBatchingWorkQueue`2.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Collections.Generic; using System.Diagnostics; @@ -25,7 +27,7 @@ namespace Microsoft.CodeAnalysis.Threading; /// cref="CancellationToken.IsCancellationRequested"/>. /// /// -internal class AsyncBatchingWorkQueue +internal class AsyncBatchingWorkQueue : IDisposable { /// /// Delay we wait after finishing the processing of one batch and starting up on then. @@ -121,6 +123,11 @@ public AsyncBatchingWorkQueue( CancelExistingWork(); } + public void Dispose() + { + _cancellationSeries.Dispose(); + } + /// /// Cancels any outstanding work in this queue. Work that has not yet started will never run. Work that is in /// progress will request cancellation in a standard best effort fashion. diff --git a/src/roslyn/src/Dependencies/Threading/CancellationSeries.cs b/src/roslyn/src/Dependencies/Threading/CancellationSeries.cs index 1a477841243..36e6a71d1ff 100644 --- a/src/roslyn/src/Dependencies/Threading/CancellationSeries.cs +++ b/src/roslyn/src/Dependencies/Threading/CancellationSeries.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + // NOTE: This code is derived from an implementation originally in dotnet/project-system: // https://github.com/dotnet/project-system/blob/bdf69d5420ec8d894f5bf4c3d4692900b7f2479c/src/Microsoft.VisualStudio.ProjectSystem.Managed/Threading/Tasks/CancellationSeries.cs // diff --git a/src/roslyn/src/Dependencies/Threading/ConfiguredYieldAwaitable.cs b/src/roslyn/src/Dependencies/Threading/ConfiguredYieldAwaitable.cs index 80502b3fbc1..c77c9f0d13d 100644 --- a/src/roslyn/src/Dependencies/Threading/ConfiguredYieldAwaitable.cs +++ b/src/roslyn/src/Dependencies/Threading/ConfiguredYieldAwaitable.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Runtime.CompilerServices; using System.Threading; diff --git a/src/roslyn/src/Dependencies/Threading/TaskExtensions.cs b/src/roslyn/src/Dependencies/Threading/TaskExtensions.cs index f35eb18a71e..1ebca09b9e0 100644 --- a/src/roslyn/src/Dependencies/Threading/TaskExtensions.cs +++ b/src/roslyn/src/Dependencies/Threading/TaskExtensions.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Runtime.CompilerServices; using System.Threading.Tasks; diff --git a/src/roslyn/src/Dependencies/Threading/TestHooks/IAsyncToken.cs b/src/roslyn/src/Dependencies/Threading/TestHooks/IAsyncToken.cs index c28f3d31fd1..201bbf667b1 100644 --- a/src/roslyn/src/Dependencies/Threading/TestHooks/IAsyncToken.cs +++ b/src/roslyn/src/Dependencies/Threading/TestHooks/IAsyncToken.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; namespace Microsoft.CodeAnalysis.Shared.TestHooks; diff --git a/src/roslyn/src/Dependencies/Threading/TestHooks/IAsynchronousOperationListener.cs b/src/roslyn/src/Dependencies/Threading/TestHooks/IAsynchronousOperationListener.cs index e2093d80ad6..0b0e0b96948 100644 --- a/src/roslyn/src/Dependencies/Threading/TestHooks/IAsynchronousOperationListener.cs +++ b/src/roslyn/src/Dependencies/Threading/TestHooks/IAsynchronousOperationListener.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System.Runtime.CompilerServices; namespace Microsoft.CodeAnalysis.Shared.TestHooks; diff --git a/src/roslyn/src/Dependencies/Threading/TestHooks/IAsynchronousOperationListenerProvider.cs b/src/roslyn/src/Dependencies/Threading/TestHooks/IAsynchronousOperationListenerProvider.cs index dde7959cf71..dc11fd01821 100644 --- a/src/roslyn/src/Dependencies/Threading/TestHooks/IAsynchronousOperationListenerProvider.cs +++ b/src/roslyn/src/Dependencies/Threading/TestHooks/IAsynchronousOperationListenerProvider.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + namespace Microsoft.CodeAnalysis.Shared.TestHooks; /// diff --git a/src/roslyn/src/Dependencies/Threading/TestHooks/IExpeditableDelaySource.cs b/src/roslyn/src/Dependencies/Threading/TestHooks/IExpeditableDelaySource.cs index 45398b1737a..c144a997db0 100644 --- a/src/roslyn/src/Dependencies/Threading/TestHooks/IExpeditableDelaySource.cs +++ b/src/roslyn/src/Dependencies/Threading/TestHooks/IExpeditableDelaySource.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Diagnostics.CodeAnalysis; using System.Threading; diff --git a/src/roslyn/src/Dependencies/Threading/ValueTaskExtensions.cs b/src/roslyn/src/Dependencies/Threading/ValueTaskExtensions.cs index 366c3014edc..2d83f43f213 100644 --- a/src/roslyn/src/Dependencies/Threading/ValueTaskExtensions.cs +++ b/src/roslyn/src/Dependencies/Threading/ValueTaskExtensions.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; using System.Runtime.CompilerServices; using System.Threading.Tasks; diff --git a/src/roslyn/src/Dependencies/Threading/VoidResult.cs b/src/roslyn/src/Dependencies/Threading/VoidResult.cs index 2e626ce7209..6b4bce7d361 100644 --- a/src/roslyn/src/Dependencies/Threading/VoidResult.cs +++ b/src/roslyn/src/Dependencies/Threading/VoidResult.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System; namespace Microsoft.CodeAnalysis.Threading; diff --git a/src/roslyn/src/Dependencies/Threading/YieldAwaitableExtensions.cs b/src/roslyn/src/Dependencies/Threading/YieldAwaitableExtensions.cs index 6cd6f6db579..7aaf54e5363 100644 --- a/src/roslyn/src/Dependencies/Threading/YieldAwaitableExtensions.cs +++ b/src/roslyn/src/Dependencies/Threading/YieldAwaitableExtensions.cs @@ -2,6 +2,8 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System.Runtime.CompilerServices; using System.Threading.Tasks; diff --git a/src/roslyn/src/EditorFeatures/CSharp/EventHookup/EventHookupSessionManager_EventHookupSession.cs b/src/roslyn/src/EditorFeatures/CSharp/EventHookup/EventHookupSessionManager_EventHookupSession.cs index ab6af90bbb2..ecaba76aa5d 100644 --- a/src/roslyn/src/EditorFeatures/CSharp/EventHookup/EventHookupSessionManager_EventHookupSession.cs +++ b/src/roslyn/src/EditorFeatures/CSharp/EventHookup/EventHookupSessionManager_EventHookupSession.cs @@ -248,11 +248,8 @@ async Task ContinueOnMainThreadAsync( // Note: For generic, it's ok(it's even a good idea) to exclude type variables, // because the name is only used as a prefix for the method name. - var typeDeclaration = syntaxFactsService.GetContainingTypeDeclaration( - semanticModel.SyntaxTree.GetRoot(), - plusEqualsToken.SpanStart) as BaseTypeDeclarationSyntax; - - return typeDeclaration != null + return syntaxFactsService.GetContainingTypeDeclaration( + semanticModel.SyntaxTree.GetRoot(), plusEqualsToken.SpanStart) is BaseTypeDeclarationSyntax typeDeclaration ? typeDeclaration.Identifier.Text : eventSymbol.ContainingType.Name; } diff --git a/src/roslyn/src/EditorFeatures/Core/Copilot/CopilotWpfTextCreationListener.cs b/src/roslyn/src/EditorFeatures/Core/Copilot/CopilotWpfTextCreationListener.cs index 6f63b16aedc..8bdb1bfaf16 100644 --- a/src/roslyn/src/EditorFeatures/Core/Copilot/CopilotWpfTextCreationListener.cs +++ b/src/roslyn/src/EditorFeatures/Core/Copilot/CopilotWpfTextCreationListener.cs @@ -116,45 +116,12 @@ private static async ValueTask ProcessCompletionEventAsync( if (document is null) continue; - // Currently we do not support analyzing languges other than C# and VB. This is because we only want to do - // this analsis in our OOP process to avoid perf impact on the VS process. And we don't have OOP for other - // languages yet. - if (!document.SupportsSemanticModel) - continue; - - var normalizedEdits = Normalize(editGroup); - if (normalizedEdits.IsDefaultOrEmpty) - continue; - - var changeAnalysisService = document.Project.Solution.Services.GetRequiredService(); - var analysisResult = await changeAnalysisService.AnalyzeChangeAsync( - document, normalizedEdits, cancellationToken).ConfigureAwait(false); + using var _ = PooledObjects.ArrayBuilder.GetInstance(out var textChanges); + foreach (var edit in editGroup) + textChanges.Add(new TextChange(edit.Span.Span.ToTextSpan(), edit.ReplacementText)); - CopilotChangeAnalysisUtilities.LogCopilotChangeAnalysis( - featureId, accepted, proposalId, analysisResult, cancellationToken).Dispose(); + await CopilotChangeAnalysisUtilities.AnalyzeCopilotChangeAsync( + document, accepted, featureId, proposalId, textChanges, cancellationToken).ConfigureAwait(false); } } - - private static ImmutableArray Normalize(IEnumerable editGroup) - { - using var _ = PooledObjects.ArrayBuilder.GetInstance(out var builder); - foreach (var edit in editGroup) - builder.Add(new TextChange(edit.Span.Span.ToTextSpan(), edit.ReplacementText)); - - // Ensure everything is sorted. - builder.Sort(static (c1, c2) => c1.Span.Start - c2.Span.Start); - - // Now, go through and make sure no edit overlaps another. - for (int i = 1, n = builder.Count; i < n; i++) - { - var lastEdit = builder[i - 1]; - var currentEdit = builder[i]; - - if (lastEdit.Span.OverlapsWith(currentEdit.Span)) - return default; - } - - // Things look good. Can process these sorted edits. - return builder.ToImmutableAndClear(); - } } diff --git a/src/roslyn/src/EditorFeatures/Core/ExternalAccess/VSTypeScript/VSTypeScriptDidChangeHandler.cs b/src/roslyn/src/EditorFeatures/Core/ExternalAccess/VSTypeScript/VSTypeScriptDidChangeHandler.cs index 97b5d4c379d..2f8195d741a 100644 --- a/src/roslyn/src/EditorFeatures/Core/ExternalAccess/VSTypeScript/VSTypeScriptDidChangeHandler.cs +++ b/src/roslyn/src/EditorFeatures/Core/ExternalAccess/VSTypeScript/VSTypeScriptDidChangeHandler.cs @@ -11,11 +11,6 @@ namespace Microsoft.CodeAnalysis.ExternalAccess.VSTypeScript; [ExportStatelessLspService(typeof(DidChangeHandler), ProtocolConstants.TypeScriptLanguageContract), Shared] -internal class VSTypeScriptDidChangeHandler : DidChangeHandler -{ - [ImportingConstructor] - [Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] - public VSTypeScriptDidChangeHandler() - { - } -} +[method: ImportingConstructor] +[method: Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] +internal class VSTypeScriptDidChangeHandler() : DidChangeHandler; diff --git a/src/roslyn/src/EditorFeatures/Core/ExternalAccess/VSTypeScript/VSTypeScriptDidCloseHandler.cs b/src/roslyn/src/EditorFeatures/Core/ExternalAccess/VSTypeScript/VSTypeScriptDidCloseHandler.cs index d335db3b07f..683ba30acf4 100644 --- a/src/roslyn/src/EditorFeatures/Core/ExternalAccess/VSTypeScript/VSTypeScriptDidCloseHandler.cs +++ b/src/roslyn/src/EditorFeatures/Core/ExternalAccess/VSTypeScript/VSTypeScriptDidCloseHandler.cs @@ -11,11 +11,6 @@ namespace Microsoft.CodeAnalysis.ExternalAccess.VSTypeScript; [ExportStatelessLspService(typeof(DidCloseHandler), ProtocolConstants.TypeScriptLanguageContract), Shared] -internal class VSTypeScriptDidCloseHandler : DidCloseHandler -{ - [ImportingConstructor] - [Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] - public VSTypeScriptDidCloseHandler() - { - } -} +[method: ImportingConstructor] +[method: Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] +internal class VSTypeScriptDidCloseHandler() : DidCloseHandler; diff --git a/src/roslyn/src/EditorFeatures/Core/ExternalAccess/VSTypeScript/VSTypeScriptDidOpenHandler.cs b/src/roslyn/src/EditorFeatures/Core/ExternalAccess/VSTypeScript/VSTypeScriptDidOpenHandler.cs index 303f9761c95..975a386e746 100644 --- a/src/roslyn/src/EditorFeatures/Core/ExternalAccess/VSTypeScript/VSTypeScriptDidOpenHandler.cs +++ b/src/roslyn/src/EditorFeatures/Core/ExternalAccess/VSTypeScript/VSTypeScriptDidOpenHandler.cs @@ -11,11 +11,6 @@ namespace Microsoft.CodeAnalysis.ExternalAccess.VSTypeScript; [ExportStatelessLspService(typeof(DidOpenHandler), ProtocolConstants.TypeScriptLanguageContract), Shared] -internal class VSTypeScriptDidOpenHandler : DidOpenHandler -{ - [ImportingConstructor] - [Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] - public VSTypeScriptDidOpenHandler() - { - } -} +[method: ImportingConstructor] +[method: Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] +internal class VSTypeScriptDidOpenHandler() : DidOpenHandler; diff --git a/src/roslyn/src/EditorFeatures/Core/ExternalAccess/VSTypeScript/VSTypeScriptLifeCycleManager.cs b/src/roslyn/src/EditorFeatures/Core/ExternalAccess/VSTypeScript/VSTypeScriptLifeCycleManager.cs index 1aa9d2b7f04..bd93281be5f 100644 --- a/src/roslyn/src/EditorFeatures/Core/ExternalAccess/VSTypeScript/VSTypeScriptLifeCycleManager.cs +++ b/src/roslyn/src/EditorFeatures/Core/ExternalAccess/VSTypeScript/VSTypeScriptLifeCycleManager.cs @@ -11,11 +11,7 @@ namespace Microsoft.CodeAnalysis.ExternalAccess.VSTypeScript; [ExportLspServiceFactory(typeof(LspServiceLifeCycleManager), ProtocolConstants.TypeScriptLanguageContract), Shared] -internal class VSTypeScriptLifeCycleManager : LspServiceLifeCycleManager.LspLifeCycleManagerFactory -{ - [ImportingConstructor] - [Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] - public VSTypeScriptLifeCycleManager(LspWorkspaceRegistrationService lspWorkspaceRegistrationService) : base(lspWorkspaceRegistrationService) - { - } -} +[method: ImportingConstructor] +[method: Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] +internal class VSTypeScriptLifeCycleManager(LspWorkspaceRegistrationService lspWorkspaceRegistrationService) + : LspServiceLifeCycleManager.LspLifeCycleManagerFactory(lspWorkspaceRegistrationService); diff --git a/src/roslyn/src/EditorFeatures/Core/ExternalAccess/VSTypeScript/VSTypeScriptLspWorkspaceManagerFactory.cs b/src/roslyn/src/EditorFeatures/Core/ExternalAccess/VSTypeScript/VSTypeScriptLspWorkspaceManagerFactory.cs index 84adf1ec6e5..fd13170bd94 100644 --- a/src/roslyn/src/EditorFeatures/Core/ExternalAccess/VSTypeScript/VSTypeScriptLspWorkspaceManagerFactory.cs +++ b/src/roslyn/src/EditorFeatures/Core/ExternalAccess/VSTypeScript/VSTypeScriptLspWorkspaceManagerFactory.cs @@ -12,6 +12,5 @@ namespace Microsoft.CodeAnalysis.ExternalAccess.VSTypeScript; [ExportLspServiceFactory(typeof(LspWorkspaceManager), ProtocolConstants.TypeScriptLanguageContract), Shared] [method: ImportingConstructor] [method: Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] -internal class VSTypeScriptLspWorkspaceManagerFactory(LspWorkspaceRegistrationService lspWorkspaceRegistrationService) : LspWorkspaceManagerFactory(lspWorkspaceRegistrationService) -{ -} +internal class VSTypeScriptLspWorkspaceManagerFactory(LspWorkspaceRegistrationService lspWorkspaceRegistrationService) + : LspWorkspaceManagerFactory(lspWorkspaceRegistrationService); diff --git a/src/roslyn/src/EditorFeatures/Core/ExternalAccess/VSTypeScript/VSTypeScriptProjectContextHandler.cs b/src/roslyn/src/EditorFeatures/Core/ExternalAccess/VSTypeScript/VSTypeScriptProjectContextHandler.cs index d75e5bb112d..f7a8ff47b69 100644 --- a/src/roslyn/src/EditorFeatures/Core/ExternalAccess/VSTypeScript/VSTypeScriptProjectContextHandler.cs +++ b/src/roslyn/src/EditorFeatures/Core/ExternalAccess/VSTypeScript/VSTypeScriptProjectContextHandler.cs @@ -11,11 +11,6 @@ namespace Microsoft.CodeAnalysis.ExternalAccess.VSTypeScript; [ExportStatelessLspService(typeof(GetTextDocumentWithContextHandler), ProtocolConstants.TypeScriptLanguageContract), Shared] -internal class VSTypeScriptProjectContextHandler : GetTextDocumentWithContextHandler -{ - [ImportingConstructor] - [Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] - public VSTypeScriptProjectContextHandler() - { - } -} +[method: ImportingConstructor] +[method: Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] +internal class VSTypeScriptProjectContextHandler() : GetTextDocumentWithContextHandler; diff --git a/src/roslyn/src/EditorFeatures/Core/ExternalAccess/VSTypeScript/VSTypeScriptRequestTelemetryLoggerFactory.cs b/src/roslyn/src/EditorFeatures/Core/ExternalAccess/VSTypeScript/VSTypeScriptRequestTelemetryLoggerFactory.cs index a41f2540a3a..f34f7f77ee4 100644 --- a/src/roslyn/src/EditorFeatures/Core/ExternalAccess/VSTypeScript/VSTypeScriptRequestTelemetryLoggerFactory.cs +++ b/src/roslyn/src/EditorFeatures/Core/ExternalAccess/VSTypeScript/VSTypeScriptRequestTelemetryLoggerFactory.cs @@ -11,11 +11,6 @@ namespace Microsoft.CodeAnalysis.ExternalAccess.VSTypeScript; [ExportLspServiceFactory(typeof(RequestTelemetryLogger), ProtocolConstants.TypeScriptLanguageContract), Shared] -internal class VSTypeScriptRequestTelemetryLoggerFactory : RequestTelemetryLoggerFactory -{ - [ImportingConstructor] - [Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] - public VSTypeScriptRequestTelemetryLoggerFactory() - { - } -} +[method: ImportingConstructor] +[method: Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] +internal class VSTypeScriptRequestTelemetryLoggerFactory() : RequestTelemetryLoggerFactory; diff --git a/src/roslyn/src/ExpressionEvaluator/CSharp/Source/ExpressionCompiler/EEAssemblyBuilder.cs b/src/roslyn/src/ExpressionEvaluator/CSharp/Source/ExpressionCompiler/EEAssemblyBuilder.cs index 6dfffefaacd..b0bcd47af90 100644 --- a/src/roslyn/src/ExpressionEvaluator/CSharp/Source/ExpressionCompiler/EEAssemblyBuilder.cs +++ b/src/roslyn/src/ExpressionEvaluator/CSharp/Source/ExpressionCompiler/EEAssemblyBuilder.cs @@ -67,6 +67,7 @@ protected override Cci.IModuleReference TranslateModule(ModuleSymbol symbol, Dia internal override bool IgnoreAccessibility => true; public override EmitBaseline? PreviousGeneration => null; public override SymbolChanges? EncSymbolChanges => null; + public override bool FieldRvaSupported => true; public override INamedTypeSymbolInternal? TryGetOrCreateSynthesizedHotReloadExceptionType() => null; diff --git a/src/roslyn/src/ExpressionEvaluator/CSharp/Test/ExpressionCompiler/ReferencedModulesTests.cs b/src/roslyn/src/ExpressionEvaluator/CSharp/Test/ExpressionCompiler/ReferencedModulesTests.cs index 733ed844191..07102f9c9e0 100644 --- a/src/roslyn/src/ExpressionEvaluator/CSharp/Test/ExpressionCompiler/ReferencedModulesTests.cs +++ b/src/roslyn/src/ExpressionEvaluator/CSharp/Test/ExpressionCompiler/ReferencedModulesTests.cs @@ -1543,6 +1543,7 @@ public override IEnumerable GetTopLevelSourceTypeDefin public override SymbolChanges EncSymbolChanges => _builder.EncSymbolChanges; public override EmitBaseline PreviousGeneration => _builder.PreviousGeneration; + public override bool FieldRvaSupported => _builder.FieldRvaSupported; public override ISourceAssemblySymbolInternal SourceAssemblyOpt => _builder.SourceAssemblyOpt; diff --git a/src/roslyn/src/ExpressionEvaluator/Core/Source/ExpressionCompiler/PDB/MethodDebugInfo.Native.cs b/src/roslyn/src/ExpressionEvaluator/Core/Source/ExpressionCompiler/PDB/MethodDebugInfo.Native.cs index 40a59037629..1b22686f043 100644 --- a/src/roslyn/src/ExpressionEvaluator/Core/Source/ExpressionCompiler/PDB/MethodDebugInfo.Native.cs +++ b/src/roslyn/src/ExpressionEvaluator/Core/Source/ExpressionCompiler/PDB/MethodDebugInfo.Native.cs @@ -358,6 +358,7 @@ private static bool TryCreateImportRecordFromCSharpImportString(EESymbolProvider ITypeSymbolInternal? type = null; if (targetKind == ImportTargetKind.Type) { + RoslynDebug.Assert(targetString != null); type = symbolProvider.GetTypeSymbolForSerializedType(targetString); targetString = null; } @@ -599,10 +600,7 @@ private static void ReadVisualBasicImportsDebugInfo( private static bool TryCreateImportRecordFromVisualBasicImportString(string importString, out ImportRecord record, out VBImportScopeKind scope) { - ImportTargetKind targetKind; - string alias; - string targetString; - if (CustomDebugInfoReader.TryParseVisualBasicImportString(importString, out alias, out targetString, out targetKind, out scope)) + if (CustomDebugInfoReader.TryParseVisualBasicImportString(importString, out var alias, out var targetString, out var targetKind, out scope)) { record = new ImportRecord( targetKind: targetKind, diff --git a/src/roslyn/src/ExpressionEvaluator/VisualBasic/Source/ExpressionCompiler/EEAssemblyBuilder.vb b/src/roslyn/src/ExpressionEvaluator/VisualBasic/Source/ExpressionCompiler/EEAssemblyBuilder.vb index f3837978bc0..6fb8bc777ac 100644 --- a/src/roslyn/src/ExpressionEvaluator/VisualBasic/Source/ExpressionCompiler/EEAssemblyBuilder.vb +++ b/src/roslyn/src/ExpressionEvaluator/VisualBasic/Source/ExpressionCompiler/EEAssemblyBuilder.vb @@ -81,6 +81,12 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.ExpressionEvaluator End Get End Property + Public Overrides ReadOnly Property FieldRvaSupported As Boolean + Get + Return True + End Get + End Property + Public Overrides Function TryGetOrCreateSynthesizedHotReloadExceptionType() As INamedTypeSymbolInternal Return Nothing End Function diff --git a/src/roslyn/src/ExpressionEvaluator/VisualBasic/Test/ExpressionCompiler/ReferencedModulesTests.vb b/src/roslyn/src/ExpressionEvaluator/VisualBasic/Test/ExpressionCompiler/ReferencedModulesTests.vb index 035e5a7d149..e2afb96c254 100644 --- a/src/roslyn/src/ExpressionEvaluator/VisualBasic/Test/ExpressionCompiler/ReferencedModulesTests.vb +++ b/src/roslyn/src/ExpressionEvaluator/VisualBasic/Test/ExpressionCompiler/ReferencedModulesTests.vb @@ -969,7 +969,13 @@ End Class" Public Overrides ReadOnly Property PreviousGeneration As EmitBaseline Get - Return Nothing + Return _builder.PreviousGeneration + End Get + End Property + + Public Overrides ReadOnly Property FieldRvaSupported As Boolean + Get + Return _builder.FieldRvaSupported End Get End Property diff --git a/src/roslyn/src/Features/CSharp/Portable/Completion/CompletionProviders/ImportCompletion/ExtensionMethodImportCompletionProvider.cs b/src/roslyn/src/Features/CSharp/Portable/Completion/CompletionProviders/ImportCompletion/ExtensionMethodImportCompletionProvider.cs index 01180808fe0..75a830789c2 100644 --- a/src/roslyn/src/Features/CSharp/Portable/Completion/CompletionProviders/ImportCompletion/ExtensionMethodImportCompletionProvider.cs +++ b/src/roslyn/src/Features/CSharp/Portable/Completion/CompletionProviders/ImportCompletion/ExtensionMethodImportCompletionProvider.cs @@ -15,17 +15,12 @@ namespace Microsoft.CodeAnalysis.CSharp.Completion.Providers; -[ExportCompletionProvider(nameof(ExtensionMethodImportCompletionProvider), LanguageNames.CSharp)] +[ExportCompletionProvider(nameof(ExtensionMethodImportCompletionProvider), LanguageNames.CSharp), Shared] [ExtensionOrder(After = nameof(TypeImportCompletionProvider))] -[Shared] -internal sealed class ExtensionMethodImportCompletionProvider : AbstractExtensionMethodImportCompletionProvider +[method: ImportingConstructor] +[method: Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] +internal sealed class ExtensionMethodImportCompletionProvider() : AbstractExtensionMethodImportCompletionProvider { - [ImportingConstructor] - [Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] - public ExtensionMethodImportCompletionProvider() - { - } - internal override string Language => LanguageNames.CSharp; protected override string GenericSuffix => "<>"; diff --git a/src/roslyn/src/Features/CSharp/Portable/SignatureHelp/PrimaryConstructorBaseTypeSignatureHelpProvider.cs b/src/roslyn/src/Features/CSharp/Portable/SignatureHelp/PrimaryConstructorBaseTypeSignatureHelpProvider.cs index b3c345f2d0a..a836df057d0 100644 --- a/src/roslyn/src/Features/CSharp/Portable/SignatureHelp/PrimaryConstructorBaseTypeSignatureHelpProvider.cs +++ b/src/roslyn/src/Features/CSharp/Portable/SignatureHelp/PrimaryConstructorBaseTypeSignatureHelpProvider.cs @@ -74,8 +74,7 @@ private bool IsTriggerToken(SyntaxToken token) return null; var baseList = baseTypeSyntax.Parent as BaseListSyntax; - var namedTypeSyntax = baseList?.Parent as BaseTypeDeclarationSyntax; - if (namedTypeSyntax is null) + if (baseList?.Parent is not BaseTypeDeclarationSyntax namedTypeSyntax) return null; var semanticModel = await document.GetRequiredSemanticModelAsync(cancellationToken).ConfigureAwait(false); diff --git a/src/roslyn/src/Features/CSharpTest/IntroduceVariable/IntroduceVariableTests.cs b/src/roslyn/src/Features/CSharpTest/IntroduceVariable/IntroduceVariableTests.cs index da2c5e4fc88..34fa0af9300 100644 --- a/src/roslyn/src/Features/CSharpTest/IntroduceVariable/IntroduceVariableTests.cs +++ b/src/roslyn/src/Features/CSharpTest/IntroduceVariable/IntroduceVariableTests.cs @@ -9503,4 +9503,36 @@ void M() } """, index: 0, options: ImplicitTypingEverywhere()); } + + [Fact] + [WorkItem("https://github.com/dotnet/roslyn/issues/78204")] + [WorkItem("https://github.com/dotnet/roslyn/issues/77559")] + [WorkItem("https://github.com/dotnet/roslyn/issues/77147")] + public async Task TestInTopLevelStatement() + { + await TestMissingAsync( + """ + void M() + { + _ = ([|long|])0; + } + """); + } + + [Fact] + [WorkItem("https://github.com/dotnet/roslyn/issues/78204")] + [WorkItem("https://github.com/dotnet/roslyn/issues/77559")] + [WorkItem("https://github.com/dotnet/roslyn/issues/77147")] + public async Task TestInClassDeclaration() + { + await TestMissingAsync( + """ + public class C { + void M() + { + _ = ([|long|])0; + } + } + """); + } } diff --git a/src/roslyn/src/Features/Core/Portable/Completion/Log/CompletionProvidersLogger.cs b/src/roslyn/src/Features/Core/Portable/Completion/Log/CompletionProvidersLogger.cs index a052ac4a895..2e445ad2cce 100644 --- a/src/roslyn/src/Features/Core/Portable/Completion/Log/CompletionProvidersLogger.cs +++ b/src/roslyn/src/Features/Core/Portable/Completion/Log/CompletionProvidersLogger.cs @@ -53,21 +53,6 @@ internal static void LogTypeImportCompletionCacheMiss() internal static void LogCommitOfTypeImportCompletionItem() => s_countLogAggregator.IncreaseCount(ActionInfo.CommitsOfTypeImportCompletionItem); - internal static void LogExtensionMethodCompletionTicksDataPoint(TimeSpan total, TimeSpan getSymbols, TimeSpan createItems, TimeSpan? remoteAssetSync) - { - s_histogramLogAggregator.LogTime(ActionInfo.ExtensionMethodCompletionTicks, total); - s_statisticLogAggregator.AddDataPoint(ActionInfo.ExtensionMethodCompletionTicks, total); - - if (remoteAssetSync.HasValue) - { - s_statisticLogAggregator.AddDataPoint(ActionInfo.ExtensionMethodCompletionRemoteAssetSyncTicks, remoteAssetSync.Value); - s_statisticLogAggregator.AddDataPoint(ActionInfo.ExtensionMethodCompletionRemoteTicks, total - remoteAssetSync.Value - getSymbols - createItems); - } - - s_statisticLogAggregator.AddDataPoint(ActionInfo.ExtensionMethodCompletionGetSymbolsTicks, getSymbols); - s_statisticLogAggregator.AddDataPoint(ActionInfo.ExtensionMethodCompletionCreateItemsTicks, createItems); - } - internal static void LogExtensionMethodCompletionMethodsProvidedDataPoint(int count) => s_statisticLogAggregator.AddDataPoint(ActionInfo.ExtensionMethodCompletionMethodsProvided, count); diff --git a/src/roslyn/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/AbstractExtensionMethodImportCompletionProvider.cs b/src/roslyn/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/AbstractExtensionMethodImportCompletionProvider.cs index adde10f5e2e..dd4534ec948 100644 --- a/src/roslyn/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/AbstractExtensionMethodImportCompletionProvider.cs +++ b/src/roslyn/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/AbstractExtensionMethodImportCompletionProvider.cs @@ -12,6 +12,7 @@ using Microsoft.CodeAnalysis.LanguageService; using Microsoft.CodeAnalysis.Shared.Extensions; using Microsoft.CodeAnalysis.Shared.Extensions.ContextQuery; +using Roslyn.Utilities; namespace Microsoft.CodeAnalysis.Completion.Providers; @@ -43,12 +44,13 @@ protected override async Task AddCompletionItemsAsync( var syntaxFacts = completionContext.Document.GetRequiredLanguageService(); if (TryGetReceiverTypeSymbol(syntaxContext, syntaxFacts, cancellationToken, out var receiverTypeSymbol)) { - var inferredTypes = completionContext.CompletionOptions.TargetTypedCompletionFilter ? syntaxContext.InferredTypes : []; - var result = await ExtensionMethodImportCompletionHelper.GetUnimportedExtensionMethodsAsync( + var totalTime = SharedStopwatch.StartNew(); + + var completionItems = await ExtensionMethodImportCompletionHelper.GetUnimportedExtensionMethodsAsync( syntaxContext, receiverTypeSymbol, namespaceInScope, @@ -57,10 +59,10 @@ protected override async Task AddCompletionItemsAsync( hideAdvancedMembers: completionContext.CompletionOptions.MemberDisplayOptions.HideAdvancedMembers, cancellationToken).ConfigureAwait(false); - if (result is not null) + if (!completionItems.IsDefault) { var receiverTypeKey = SymbolKey.CreateString(receiverTypeSymbol, cancellationToken); - completionContext.AddItems(result.CompletionItems.Select(i => Convert(i, receiverTypeKey))); + completionContext.AddItems(completionItems.Select(i => Convert(i, receiverTypeKey))); } } } diff --git a/src/roslyn/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/ExtensionMethodImportCompletionHelper.SymbolComputer.cs b/src/roslyn/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/ExtensionMethodImportCompletionHelper.SymbolComputer.cs index e65bbb71f9d..2d25f11a38c 100644 --- a/src/roslyn/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/ExtensionMethodImportCompletionHelper.SymbolComputer.cs +++ b/src/roslyn/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/ExtensionMethodImportCompletionHelper.SymbolComputer.cs @@ -32,7 +32,6 @@ private sealed class SymbolComputer private readonly ITypeSymbol _receiverTypeSymbol; private readonly ImmutableArray _receiverTypeNames; private readonly ISet _namespaceInScope; - private readonly IImportCompletionCacheService _cacheService; // This dictionary is used as cache among all projects and PE references. // The key is the receiver type as in the extension method declaration (symbol retrived from originating compilation). @@ -54,7 +53,6 @@ public SymbolComputer( var receiverTypeNames = GetReceiverTypeNames(receiverTypeSymbol); _receiverTypeNames = AddComplexTypes(receiverTypeNames); - _cacheService = GetCacheService(document.Project); } private static IImportCompletionCacheService GetCacheService(Project project) @@ -71,16 +69,15 @@ public static void QueueCacheWarmUpTask(Project project) public static async ValueTask UpdateCacheAsync(Project project, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); - var cacheService = GetCacheService(project); foreach (var relevantProject in GetAllRelevantProjects(project)) - await GetUpToDateCacheEntryAsync(relevantProject, cacheService, cancellationToken).ConfigureAwait(false); + await GetUpToDateCacheEntryAsync(relevantProject, cancellationToken).ConfigureAwait(false); foreach (var peReference in GetAllRelevantPeReferences(project)) await SymbolTreeInfo.GetInfoForMetadataReferenceAsync(project.Solution, peReference, checksum: null, cancellationToken).ConfigureAwait(false); } - public async Task<(ImmutableArray symbols, bool isPartialResult)> GetExtensionMethodSymbolsAsync(bool forceCacheCreation, bool hideAdvancedMembers, CancellationToken cancellationToken) + public async Task> GetExtensionMethodSymbolsAsync(bool forceCacheCreation, bool hideAdvancedMembers, CancellationToken cancellationToken) { try { @@ -101,31 +98,18 @@ public static async ValueTask UpdateCacheAsync(Project project, CancellationToke var results = await Task.WhenAll(peReferenceMethodSymbolsTask, projectMethodSymbolsTask).ConfigureAwait(false); - var isPartialResult = false; - using var _ = ArrayBuilder.GetInstance(results[0].Length + results[1].Length, out var symbols); foreach (var methodArray in results) { foreach (var method in methodArray) - { - // `null` indicates we don't have the index ready for the corresponding project/PE. - // returns what we have even it means we only show partial results. - if (method is null) - { - isPartialResult = true; - } - else - { - symbols.Add(method); - } - } + symbols.AddIfNotNull(method); } var browsableSymbols = symbols .ToImmutable() .FilterToVisibleAndBrowsableSymbols(hideAdvancedMembers, _originatingSemanticModel.Compilation, inclusionFilter: static s => true); - return (browsableSymbols, isPartialResult); + return browsableSymbols; } finally { @@ -156,9 +140,9 @@ private async Task GetExtensionMethodSymbolsFromProjectAsync( ExtensionMethodImportCompletionCacheEntry? cacheEntry; if (forceCacheCreation) { - cacheEntry = await GetUpToDateCacheEntryAsync(project, _cacheService, cancellationToken).ConfigureAwait(false); + cacheEntry = await GetUpToDateCacheEntryAsync(project, cancellationToken).ConfigureAwait(false); } - else if (!s_projectItemsCache.TryGetValue(project.State, out cacheEntry)) + else if (!s_projectItemsCache.TryGetValue(project.Id, out cacheEntry)) { // Use cached data if available, even checksum doesn't match. otherwise, returns null indicating cache not ready. callback(null); diff --git a/src/roslyn/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/ExtensionMethodImportCompletionHelper.cs b/src/roslyn/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/ExtensionMethodImportCompletionHelper.cs index 749165b07bc..25dc6b650aa 100644 --- a/src/roslyn/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/ExtensionMethodImportCompletionHelper.cs +++ b/src/roslyn/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/ExtensionMethodImportCompletionHelper.cs @@ -3,6 +3,7 @@ // See the LICENSE file in the project root for more information. using System; +using System.Collections.Concurrent; using System.Collections.Generic; using System.Collections.Immutable; using System.Runtime.CompilerServices; @@ -26,7 +27,12 @@ namespace Microsoft.CodeAnalysis.Completion.Providers; /// It runs out-of-proc if it's enabled internal static partial class ExtensionMethodImportCompletionHelper { - private static readonly ConditionalWeakTable s_projectItemsCache = new(); + /// + /// Technically never gets cleared out. However, as we're only really storing information about extension + /// methods in a project, this should not be too bad. It's only really a leak if the project is truly + /// unloaded, and not too bad in that case. + /// + private static readonly ConcurrentDictionary s_projectItemsCache = new(); public static async Task WarmUpCacheAsync(Project project, CancellationToken cancellationToken) { @@ -48,7 +54,7 @@ public static async Task WarmUpCacheAsync(Project project, CancellationToken can public static void WarmUpCacheInCurrentProcess(Project project) => SymbolComputer.QueueCacheWarmUpTask(project); - public static async Task GetUnimportedExtensionMethodsAsync( + public static async Task> GetUnimportedExtensionMethodsAsync( SyntaxContext syntaxContext, ITypeSymbol receiverTypeSymbol, ISet namespaceInScope, @@ -57,13 +63,10 @@ public static void WarmUpCacheInCurrentProcess(Project project) bool hideAdvancedMembers, CancellationToken cancellationToken) { - SerializableUnimportedExtensionMethods? result = null; var document = syntaxContext.Document; var position = syntaxContext.Position; var project = document.Project; - var totalTime = SharedStopwatch.StartNew(); - var client = await RemoteHostClient.TryGetClientAsync(project, cancellationToken).ConfigureAwait(false); if (client != null) { @@ -72,36 +75,24 @@ public static void WarmUpCacheInCurrentProcess(Project project) // Call the project overload. Add-import-for-extension-method doesn't search outside of the current // project cone. - var remoteResult = await client.TryInvokeAsync( + var remoteResult = await client.TryInvokeAsync>( project, (service, solutionInfo, cancellationToken) => service.GetUnimportedExtensionMethodsAsync( solutionInfo, document.Id, position, receiverTypeSymbolKeyData, [.. namespaceInScope], targetTypesSymbolKeyData, forceCacheCreation, hideAdvancedMembers, cancellationToken), cancellationToken).ConfigureAwait(false); - result = remoteResult.HasValue ? remoteResult.Value : null; + return remoteResult.HasValue ? remoteResult.Value : default; } else { - result = await GetUnimportedExtensionMethodsInCurrentProcessAsync( - document, syntaxContext.SemanticModel, position, receiverTypeSymbol, namespaceInScope, targetTypesSymbols, forceCacheCreation, hideAdvancedMembers, remoteAssetSyncTime: null, cancellationToken) + return await GetUnimportedExtensionMethodsInCurrentProcessAsync( + document, syntaxContext.SemanticModel, position, receiverTypeSymbol, namespaceInScope, targetTypesSymbols, forceCacheCreation, hideAdvancedMembers, cancellationToken) .ConfigureAwait(false); } - - if (result is not null) - { - // report telemetry: - CompletionProvidersLogger.LogExtensionMethodCompletionTicksDataPoint( - totalTime.Elapsed, result.GetSymbolsTime, result.CreateItemsTime, result.RemoteAssetSyncTime); - - if (result.IsPartialResult) - CompletionProvidersLogger.LogExtensionMethodCompletionPartialResultCount(); - } - - return result; } - public static async Task GetUnimportedExtensionMethodsInCurrentProcessAsync( + public static async Task> GetUnimportedExtensionMethodsInCurrentProcessAsync( Document document, SemanticModel? semanticModel, int position, @@ -110,27 +101,19 @@ public static async Task GetUnimportedEx ImmutableArray targetTypes, bool forceCacheCreation, bool hideAdvancedMembers, - TimeSpan? remoteAssetSyncTime, CancellationToken cancellationToken) { - var stopwatch = SharedStopwatch.StartNew(); - // First find symbols of all applicable extension methods. // Workspace's syntax/symbol index is used to avoid iterating every method symbols in the solution. semanticModel ??= await document.GetRequiredSemanticModelAsync(cancellationToken).ConfigureAwait(false); var symbolComputer = new SymbolComputer( document, semanticModel, receiverTypeSymbol, position, namespaceInScope); - var (extensionMethodSymbols, isPartialResult) = await symbolComputer.GetExtensionMethodSymbolsAsync(forceCacheCreation, hideAdvancedMembers, cancellationToken).ConfigureAwait(false); - - var getSymbolsTime = stopwatch.Elapsed; - stopwatch = SharedStopwatch.StartNew(); + var extensionMethodSymbols = await symbolComputer.GetExtensionMethodSymbolsAsync(forceCacheCreation, hideAdvancedMembers, cancellationToken).ConfigureAwait(false); var compilation = await document.Project.GetRequiredCompilationAsync(cancellationToken).ConfigureAwait(false); var items = ConvertSymbolsToCompletionItems(compilation, extensionMethodSymbols, targetTypes, cancellationToken); - var createItemsTime = stopwatch.Elapsed; - - return new SerializableUnimportedExtensionMethods(items, isPartialResult, getSymbolsTime, createItemsTime, remoteAssetSyncTime); + return items; } public static async ValueTask BatchUpdateCacheAsync(ImmutableSegmentedList projects, CancellationToken cancellationToken) @@ -250,15 +233,16 @@ private static string GetFullyQualifiedNamespaceName(INamespaceSymbol symbol, Di private static async Task GetUpToDateCacheEntryAsync( Project project, - IImportCompletionCacheService cacheService, CancellationToken cancellationToken) { + var projectId = project.Id; + // While we are caching data from SyntaxTreeInfo, all the things we cared about here are actually based on sources symbols. // So using source symbol checksum would suffice. var checksum = await SymbolTreeInfo.GetSourceSymbolsChecksumAsync(project, cancellationToken).ConfigureAwait(false); // Cache miss, create all requested items. - if (!s_projectItemsCache.TryGetValue(project.State, out var cacheEntry) || + if (!s_projectItemsCache.TryGetValue(projectId, out var cacheEntry) || cacheEntry.Checksum != checksum || cacheEntry.Language != project.Language) { @@ -281,12 +265,7 @@ private static async Task GetUpToDate } cacheEntry = builder.ToCacheEntry(); -#if NET - s_projectItemsCache.AddOrUpdate(project.State, cacheEntry); -#else - s_projectItemsCache.Remove(project.State); - s_projectItemsCache.GetValue(project.State, _ => cacheEntry); -#endif + s_projectItemsCache[projectId] = cacheEntry; } return cacheEntry; diff --git a/src/roslyn/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/IRemoteExtensionMethodImportCompletionService.cs b/src/roslyn/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/IRemoteExtensionMethodImportCompletionService.cs index fec176c1072..768d23ee002 100644 --- a/src/roslyn/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/IRemoteExtensionMethodImportCompletionService.cs +++ b/src/roslyn/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/IRemoteExtensionMethodImportCompletionService.cs @@ -10,7 +10,7 @@ namespace Microsoft.CodeAnalysis.Completion.Providers; internal interface IRemoteExtensionMethodImportCompletionService { - ValueTask GetUnimportedExtensionMethodsAsync( + ValueTask> GetUnimportedExtensionMethodsAsync( Checksum solutionChecksum, DocumentId documentId, int position, diff --git a/src/roslyn/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/ImportCompletionItem.cs b/src/roslyn/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/ImportCompletionItem.cs index 5d714b7a07c..1b740b06cdc 100644 --- a/src/roslyn/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/ImportCompletionItem.cs +++ b/src/roslyn/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/ImportCompletionItem.cs @@ -179,9 +179,7 @@ private static (ISymbol? symbol, int overloadCount) GetSymbolAndOverloadCount(Co // If we have SymbolKey data (i.e. this is an extension method item), use it to recover symbol if (item.TryGetProperty(MethodKey, out var methodSymbolKey)) { - var methodSymbol = SymbolKey.ResolveString(methodSymbolKey, compilation).GetAnySymbol() as IMethodSymbol; - - if (methodSymbol != null) + if (SymbolKey.ResolveString(methodSymbolKey, compilation).GetAnySymbol() is IMethodSymbol methodSymbol) { var overloadCount = item.TryGetProperty(OverloadCountKey, out var overloadCountString) && int.TryParse(overloadCountString, out var count) ? count : 0; diff --git a/src/roslyn/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/SerializableUnimportedExtensionMethods.cs b/src/roslyn/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/SerializableUnimportedExtensionMethods.cs deleted file mode 100644 index 95ecce5db93..00000000000 --- a/src/roslyn/src/Features/Core/Portable/Completion/Providers/ImportCompletionProvider/SerializableUnimportedExtensionMethods.cs +++ /dev/null @@ -1,33 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. -// See the LICENSE file in the project root for more information. - -using System; -using System.Collections.Immutable; -using System.Runtime.Serialization; - -namespace Microsoft.CodeAnalysis.Completion.Providers; - -[DataContract] -internal sealed class SerializableUnimportedExtensionMethods( - ImmutableArray completionItems, - bool isPartialResult, - TimeSpan getSymbolsTime, - TimeSpan createItemsTime, - TimeSpan? remoteAssetSyncTime) -{ - [DataMember(Order = 0)] - public readonly ImmutableArray CompletionItems = completionItems; - - [DataMember(Order = 1)] - public readonly bool IsPartialResult = isPartialResult; - - [DataMember(Order = 2)] - public TimeSpan GetSymbolsTime { get; set; } = getSymbolsTime; - - [DataMember(Order = 3)] - public readonly TimeSpan CreateItemsTime = createItemsTime; - - [DataMember(Order = 4)] - public readonly TimeSpan? RemoteAssetSyncTime = remoteAssetSyncTime; -} diff --git a/src/roslyn/src/Features/Core/Portable/Completion/Providers/Scripting/AbstractReferenceDirectiveCompletionProvider.cs b/src/roslyn/src/Features/Core/Portable/Completion/Providers/Scripting/AbstractReferenceDirectiveCompletionProvider.cs index 6c0cd767a77..b1b4b2e3625 100644 --- a/src/roslyn/src/Features/Core/Portable/Completion/Providers/Scripting/AbstractReferenceDirectiveCompletionProvider.cs +++ b/src/roslyn/src/Features/Core/Portable/Completion/Providers/Scripting/AbstractReferenceDirectiveCompletionProvider.cs @@ -48,8 +48,7 @@ private static ImmutableArray GetCommitCharacters() protected override async Task ProvideCompletionsAsync(CompletionContext context, string pathThroughLastSlash) { - var resolver = context.Document.Project.CompilationOptions.MetadataReferenceResolver as RuntimeMetadataReferenceResolver; - if (resolver != null && pathThroughLastSlash.IndexOfAny(s_pathIndicators) < 0) + if (context.Document.Project.CompilationOptions.MetadataReferenceResolver is RuntimeMetadataReferenceResolver resolver && pathThroughLastSlash.IndexOfAny(s_pathIndicators) < 0) { foreach (var (name, path) in resolver.TrustedPlatformAssemblies) { diff --git a/src/roslyn/src/Features/Core/Portable/Copilot/CopilotChangeAnalysis.cs b/src/roslyn/src/Features/Core/Portable/Copilot/CopilotChangeAnalysis.cs index 4ac58c7f4bd..8df5f9a04b5 100644 --- a/src/roslyn/src/Features/Core/Portable/Copilot/CopilotChangeAnalysis.cs +++ b/src/roslyn/src/Features/Core/Portable/Copilot/CopilotChangeAnalysis.cs @@ -46,6 +46,7 @@ internal readonly record struct CopilotDiagnosticAnalysis( /// Mapping from diagnostic id to the total time taken to fix diagnostics with that id. /// Mapping from diagnostic id to the name of the provider that provided the fix. /// Mapping from provider name to the total time taken to fix diagnostics with that provider. +/// Mapping from provider name to whether or not that provider conflicted with another provider in producing a fix. [DataContract] internal readonly record struct CopilotCodeFixAnalysis( [property: DataMember(Order = 0)] TimeSpan TotalComputationTime, @@ -53,4 +54,5 @@ internal readonly record struct CopilotCodeFixAnalysis( [property: DataMember(Order = 2)] Dictionary DiagnosticIdToCount, [property: DataMember(Order = 3)] Dictionary DiagnosticIdToApplicationTime, [property: DataMember(Order = 4)] Dictionary> DiagnosticIdToProviderName, - [property: DataMember(Order = 5)] Dictionary ProviderNameToApplicationTime); + [property: DataMember(Order = 5)] Dictionary ProviderNameToApplicationTime, + [property: DataMember(Order = 6)] Dictionary ProviderNameToHasConflict); diff --git a/src/roslyn/src/Features/Core/Portable/Copilot/CopilotChangeAnalysisUtilities.cs b/src/roslyn/src/Features/Core/Portable/Copilot/CopilotChangeAnalysisUtilities.cs index d239a642fd3..81eb1276587 100644 --- a/src/roslyn/src/Features/Core/Portable/Copilot/CopilotChangeAnalysisUtilities.cs +++ b/src/roslyn/src/Features/Core/Portable/Copilot/CopilotChangeAnalysisUtilities.cs @@ -4,15 +4,85 @@ using System; using System.Collections.Generic; -using System.ComponentModel; +using System.Collections.Immutable; using System.Linq; using System.Threading; +using System.Threading.Tasks; using Microsoft.CodeAnalysis.Internal.Log; +using Microsoft.CodeAnalysis.Text; namespace Microsoft.CodeAnalysis.Copilot; internal static class CopilotChangeAnalysisUtilities { + /// + /// Analyzes and collects interesting data about an edit made by some copilot feature, and reports that back as + /// telemetry to help inform what automatic fixing features we should invest in. + /// + /// The document being edited. The document should represent the contents of hte file + /// prior to the being applied. + /// Whether or not the user accepted the copilot suggestion, or rejected it. Used to + /// determine if there are interesting issues occurring that might be leading to the user rejecting the change + /// (for example, excessive syntax errors). + /// The name of the feature making the text change. For example 'Completion'. Used + /// to bucket information by feature area in case certain feature produce different sets of diagnostics or + /// fixes commonly. + /// Copilot proposal id (generally a stringified ). Used to be able + /// to map from one of these proposed edits to any additional telemetry stored in other tables about this copilot + /// interaction. + /// The actual text changes to make. The text changes do not have to be normalized. + /// Though they should not overlap. If they overlap, this request will be ignored. These would be the changes + /// passed to for the text snapshot corresponding to + /// . + public static async Task AnalyzeCopilotChangeAsync( + Document document, + bool accepted, + string featureId, + string proposalId, + IEnumerable textChanges, + CancellationToken cancellationToken) + { + // Currently we do not support analyzing languges other than C# and VB. This is because we only want to do + // this analsis in our OOP process to avoid perf impact on the VS process. And we don't have OOP for other + // languages yet. + if (!document.SupportsSemanticModel) + return; + + var normalizedEdits = Normalize(textChanges); + if (normalizedEdits.IsDefaultOrEmpty) + return; + + var changeAnalysisService = document.Project.Solution.Services.GetRequiredService(); + var analysisResult = await changeAnalysisService.AnalyzeChangeAsync( + document, normalizedEdits, cancellationToken).ConfigureAwait(false); + + CopilotChangeAnalysisUtilities.LogCopilotChangeAnalysis( + featureId, accepted, proposalId, analysisResult, cancellationToken).Dispose(); + } + + private static ImmutableArray Normalize(IEnumerable textChanges) + { + using var _ = PooledObjects.ArrayBuilder.GetInstance(out var builder); + foreach (var textChange in textChanges) + builder.Add(textChange); + + // Ensure everything is sorted. + builder.Sort(static (c1, c2) => c1.Span.Start - c2.Span.Start); + + // Now, go through and make sure no edit overlaps another. + for (int i = 1, n = builder.Count; i < n; i++) + { + var lastEdit = builder[i - 1]; + var currentEdit = builder[i]; + + if (lastEdit.Span.OverlapsWith(currentEdit.Span)) + return default; + } + + // Things look good. Can process these sorted edits. + return builder.ToImmutableAndClear(); + } + public static IDisposable LogCopilotChangeAnalysis( string featureId, bool accepted, string proposalId, CopilotChangeAnalysis analysisResult, CancellationToken cancellationToken) { @@ -49,6 +119,7 @@ public static IDisposable LogCopilotChangeAnalysis( d["CodeFixAnalysis_DiagnosticIdToApplicationTime"] = StringifyDictionary(analysisResult.CodeFixAnalysis.DiagnosticIdToApplicationTime); d["CodeFixAnalysis_DiagnosticIdToProviderName"] = StringifyDictionary(analysisResult.CodeFixAnalysis.DiagnosticIdToProviderName); d["CodeFixAnalysis_ProviderNameToApplicationTime"] = StringifyDictionary(analysisResult.CodeFixAnalysis.ProviderNameToApplicationTime); + d["CodeFixAnalysis_ProviderNameToHasConflict"] = StringifyDictionary(analysisResult.CodeFixAnalysis.ProviderNameToHasConflict); }, args: (featureId, accepted, proposalId, analysisResult)), cancellationToken); } diff --git a/src/roslyn/src/Features/Core/Portable/Copilot/ICopilotChangeAnalysisService.cs b/src/roslyn/src/Features/Core/Portable/Copilot/ICopilotChangeAnalysisService.cs index 31348615b97..f5019cf4305 100644 --- a/src/roslyn/src/Features/Core/Portable/Copilot/ICopilotChangeAnalysisService.cs +++ b/src/roslyn/src/Features/Core/Portable/Copilot/ICopilotChangeAnalysisService.cs @@ -14,7 +14,6 @@ using Microsoft.CodeAnalysis.Diagnostics; using Microsoft.CodeAnalysis.Host; using Microsoft.CodeAnalysis.Host.Mef; -using Microsoft.CodeAnalysis.Options; using Microsoft.CodeAnalysis.PooledObjects; using Microsoft.CodeAnalysis.Remote; using Microsoft.CodeAnalysis.Shared; @@ -255,13 +254,14 @@ private async Task ComputeCodeFixAnalysisAsync( var diagnosticIdToApplicationTime = new Dictionary(); var diagnosticIdToProviderName = new Dictionary>(); var providerNameToApplicationTime = new Dictionary(); + var providerNameToHasConflict = new Dictionary(); var totalApplicationTimeStopWatch = SharedStopwatch.StartNew(); await ProducerConsumer<(CodeFixCollection collection, TimeSpan elapsedTime)>.RunParallelAsync( codeFixCollections, produceItems: static async (codeFixCollection, callback, args, cancellationToken) => { - var (@this, solution, _, _, _, _) = args; + var (@this, solution, _, _, _, _, _) = args; var firstAction = GetFirstAction(codeFixCollection.Fixes[0]); var applicationTimeStopWatch = SharedStopwatch.StartNew(); @@ -270,19 +270,48 @@ private async Task ComputeCodeFixAnalysisAsync( }, consumeItems: static async (values, args, cancellationToken) => { - var (@this, solution, diagnosticIdToCount, diagnosticIdToApplicationTime, diagnosticIdToProviderName, providerNameToApplicationTime) = args; + var (@this, solution, diagnosticIdToCount, diagnosticIdToApplicationTime, diagnosticIdToProviderName, providerNameToApplicationTime, providerNameToHasConflict) = args; + + // Track which text span each code fix says it will be fixing. We can use this to efficiently determine + // which codefixes 'conflict' with some other codefix (in that that multiple features think they can fix + // the same span of code). We would need some mechanism to determine which we would prefer to take in + // order to have a good experience in such a case. + var intervalTree = new SimpleMutableIntervalTree(new CodeFixCollectionIntervalIntrospector()); + await foreach (var (codeFixCollection, applicationTime) in values) { var diagnosticId = codeFixCollection.FirstDiagnostic.Id; - var providerName = codeFixCollection.Provider.GetType().FullName![RoslynPrefix.Length..]; + var providerName = GetProviderName(codeFixCollection); IncrementCount(diagnosticIdToCount, diagnosticId); IncrementElapsedTime(diagnosticIdToApplicationTime, diagnosticId, applicationTime); diagnosticIdToProviderName.MultiAdd(diagnosticId, providerName); IncrementElapsedTime(providerNameToApplicationTime, providerName, applicationTime); + + intervalTree.AddIntervalInPlace(codeFixCollection); + } + + // Now go over the fixed spans and see which intersect with other spans + using var intersectingCollections = TemporaryArray.Empty; + foreach (var codeFixCollection in intervalTree) + { + intersectingCollections.Clear(); + intervalTree.FillWithIntervalsThatIntersectWith( + codeFixCollection.TextSpan.Start, + codeFixCollection.TextSpan.Length, + ref intersectingCollections.AsRef()); + + var providerName = GetProviderName(codeFixCollection); + + // >= 2 because we want to see how many total fixers fix a particular span, and we only care if + // we're seeing multiple. + var newHasConflictValue = intersectingCollections.Count >= 2; + var storedHasConflictValue = providerNameToHasConflict.TryGetValue(providerName, out var currentHasConflictValue) && currentHasConflictValue; + + providerNameToHasConflict[providerName] = storedHasConflictValue || newHasConflictValue; } }, - args: (@this: this, newDocument.Project.Solution, diagnosticIdToCount, diagnosticIdToApplicationTime, diagnosticIdToProviderName, providerNameToApplicationTime), + args: (@this: this, newDocument.Project.Solution, diagnosticIdToCount, diagnosticIdToApplicationTime, diagnosticIdToProviderName, providerNameToApplicationTime, providerNameToHasConflict), cancellationToken).ConfigureAwait(false); var totalApplicationTime = totalApplicationTimeStopWatch.Elapsed; @@ -292,7 +321,8 @@ private async Task ComputeCodeFixAnalysisAsync( diagnosticIdToCount, diagnosticIdToApplicationTime, diagnosticIdToProviderName, - providerNameToApplicationTime); + providerNameToApplicationTime, + providerNameToHasConflict); Task> ComputeCodeFixCollectionsAsync() { @@ -300,8 +330,6 @@ Task> ComputeCodeFixCollectionsAsync() newSpans, static async (span, callback, args, cancellationToken) => { - var intervalTree = new TextSpanMutableIntervalTree(); - var (@this, newDocument) = args; await foreach (var codeFixCollection in @this._codeFixService.StreamFixesAsync( newDocument, span, cancellationToken).ConfigureAwait(false)) @@ -316,11 +344,6 @@ static async (span, callback, args, cancellationToken) => IsVisibleDiagnostic(codeFix.PrimaryDiagnostic.IsSuppressed, codeFix.PrimaryDiagnostic.Severity) && (codeFixCollection.Provider.GetType().Namespace ?? "").StartsWith(RoslynPrefix)) { - // The first for a particular span is the one we would apply. Ignore others that fix the same span. - if (intervalTree.HasIntervalThatOverlapsWith(codeFixCollection.TextSpan)) - continue; - - intervalTree.AddIntervalInPlace(codeFixCollection.TextSpan); callback(codeFixCollection); } } @@ -328,5 +351,14 @@ static async (span, callback, args, cancellationToken) => args: (@this: this, newDocument), cancellationToken); } + + static string GetProviderName(CodeFixCollection codeFixCollection) + => codeFixCollection.Provider.GetType().FullName![RoslynPrefix.Length..]; + } + + private readonly struct CodeFixCollectionIntervalIntrospector : IIntervalIntrospector + { + public TextSpan GetSpan(CodeFixCollection value) + => value.TextSpan; } } diff --git a/src/roslyn/src/Features/Core/Portable/EditAndContinue/EditAndContinueCapabilities.cs b/src/roslyn/src/Features/Core/Portable/EditAndContinue/EditAndContinueCapabilities.cs index 36607b513ff..5666e53e558 100644 --- a/src/roslyn/src/Features/Core/Portable/EditAndContinue/EditAndContinueCapabilities.cs +++ b/src/roslyn/src/Features/Core/Portable/EditAndContinue/EditAndContinueCapabilities.cs @@ -70,6 +70,12 @@ internal enum EditAndContinueCapabilities /// The runtime supports adding to InterfaceImpl table. /// AddExplicitInterfaceImplementation = 1 << 10, + + /// + /// The runtime supports adding FieldRva table entry. This allows compiler to emit better code for certain features including + /// array initializers, collection expressions, UTF8 string literals and data section string literals. + /// + AddFieldRva = 1 << 11, } internal static class EditAndContinueCapabilitiesParser @@ -93,6 +99,7 @@ public static EditAndContinueCapabilities Parse(ImmutableArray capabilit nameof(EditAndContinueCapabilities.GenericUpdateMethod) => EditAndContinueCapabilities.GenericUpdateMethod, nameof(EditAndContinueCapabilities.GenericAddFieldToExistingType) => EditAndContinueCapabilities.GenericAddFieldToExistingType, nameof(EditAndContinueCapabilities.AddExplicitInterfaceImplementation) => EditAndContinueCapabilities.AddExplicitInterfaceImplementation, + nameof(EditAndContinueCapabilities.AddFieldRva) => EditAndContinueCapabilities.AddFieldRva, // To make it eaiser for runtimes to specify more broad capabilities "AddDefinitionToExistingType" => EditAndContinueCapabilities.AddMethodToExistingType | EditAndContinueCapabilities.AddStaticFieldToExistingType | EditAndContinueCapabilities.AddInstanceFieldToExistingType, @@ -132,6 +139,9 @@ public static ImmutableArray ToStringArray(this EditAndContinueCapabilit if (capabilities.HasFlag(EditAndContinueCapabilities.AddExplicitInterfaceImplementation)) builder.Add(nameof(EditAndContinueCapabilities.AddExplicitInterfaceImplementation)); + if (capabilities.HasFlag(EditAndContinueCapabilities.AddFieldRva)) + builder.Add(nameof(EditAndContinueCapabilities.AddFieldRva)); + return builder.ToImmutableAndClear(); } } diff --git a/src/roslyn/src/Features/Core/Portable/EditAndContinue/EditSession.cs b/src/roslyn/src/Features/Core/Portable/EditAndContinue/EditSession.cs index cfdd7572685..9b7c90fd750 100644 --- a/src/roslyn/src/Features/Core/Portable/EditAndContinue/EditSession.cs +++ b/src/roslyn/src/Features/Core/Portable/EditAndContinue/EditSession.cs @@ -1097,6 +1097,7 @@ void UpdateChangedDocumentsStaleness(bool isStale) metadataStream, ilStream, pdbStream, + new EmitDifferenceOptions() { EmitFieldRva = capabilities.HasFlag(EditAndContinueCapabilities.AddFieldRva) }, cancellationToken); Telemetry.LogEmitDifferenceTime(emitDifferenceTimer.Elapsed); diff --git a/src/roslyn/src/Features/Core/Portable/GenerateComparisonOperators/GenerateComparisonOperatorsCodeRefactoringProvider.cs b/src/roslyn/src/Features/Core/Portable/GenerateComparisonOperators/GenerateComparisonOperatorsCodeRefactoringProvider.cs index 036250273f8..eedf9f85b48 100644 --- a/src/roslyn/src/Features/Core/Portable/GenerateComparisonOperators/GenerateComparisonOperatorsCodeRefactoringProvider.cs +++ b/src/roslyn/src/Features/Core/Portable/GenerateComparisonOperators/GenerateComparisonOperatorsCodeRefactoringProvider.cs @@ -62,8 +62,7 @@ public override async Task ComputeRefactoringsAsync(CodeRefactoringContext conte if (comparableType == null) return; - var containingType = semanticModel.GetDeclaredSymbol(typeDeclaration, cancellationToken) as INamedTypeSymbol; - if (containingType == null) + if (semanticModel.GetDeclaredSymbol(typeDeclaration, cancellationToken) is not INamedTypeSymbol containingType) return; using var _1 = ArrayBuilder.GetInstance(out var missingComparableTypes); diff --git a/src/roslyn/src/Features/Core/Portable/InlineMethod/AbstractInlineMethodRefactoringProvider.cs b/src/roslyn/src/Features/Core/Portable/InlineMethod/AbstractInlineMethodRefactoringProvider.cs index 22dcc7f6a3c..9ab398938b2 100644 --- a/src/roslyn/src/Features/Core/Portable/InlineMethod/AbstractInlineMethodRefactoringProvider.cs +++ b/src/roslyn/src/Features/Core/Portable/InlineMethod/AbstractInlineMethodRefactoringProvider.cs @@ -91,8 +91,7 @@ public override async Task ComputeRefactoringsAsync(CodeRefactoringContext conte } var semanticModel = await document.GetRequiredSemanticModelAsync(cancellationToken).ConfigureAwait(false); - var calleeMethodSymbol = semanticModel.GetSymbolInfo(calleeInvocationNode, cancellationToken).GetAnySymbol() as IMethodSymbol; - if (calleeMethodSymbol == null) + if (semanticModel.GetSymbolInfo(calleeInvocationNode, cancellationToken).GetAnySymbol() is not IMethodSymbol calleeMethodSymbol) { return; } @@ -125,8 +124,7 @@ public override async Task ComputeRefactoringsAsync(CodeRefactoringContext conte } var calleeMethodDeclarationSyntaxReference = calleeMethodDeclarationSyntaxReferences[0]; - var calleeMethodNode = await calleeMethodDeclarationSyntaxReference.GetSyntaxAsync(cancellationToken).ConfigureAwait(false) as TMethodDeclarationSyntax; - if (calleeMethodNode == null) + if (await calleeMethodDeclarationSyntaxReference.GetSyntaxAsync(cancellationToken).ConfigureAwait(false) is not TMethodDeclarationSyntax calleeMethodNode) { return; } @@ -222,8 +220,7 @@ public override async Task ComputeRefactoringsAsync(CodeRefactoringContext conte } var callerDeclarationNode = await callerReferences[0].GetSyntaxAsync(cancellationToken).ConfigureAwait(false); - var invocationOperation = semanticModel.GetOperation(calleeInvocationNode, cancellationToken) as IInvocationOperation; - if (invocationOperation == null) + if (semanticModel.GetOperation(calleeInvocationNode, cancellationToken) is not IInvocationOperation invocationOperation) { return; } diff --git a/src/roslyn/src/Features/Core/Portable/IntroduceVariable/AbstractIntroduceVariableService.State.cs b/src/roslyn/src/Features/Core/Portable/IntroduceVariable/AbstractIntroduceVariableService.State.cs index 59233f09c04..954bb8fcd3f 100644 --- a/src/roslyn/src/Features/Core/Portable/IntroduceVariable/AbstractIntroduceVariableService.State.cs +++ b/src/roslyn/src/Features/Core/Portable/IntroduceVariable/AbstractIntroduceVariableService.State.cs @@ -98,6 +98,9 @@ private async Task TryInitializeAsync( if (containingType?.TypeKind is TypeKind.Interface) return false; + if (!CanIntroduceVariable(textSpan.IsEmpty, cancellationToken)) + return false; + if (containingType is null) { var globalStatement = Expression.AncestorsAndSelf().FirstOrDefault(syntaxFacts.IsGlobalStatement); @@ -110,9 +113,6 @@ private async Task TryInitializeAsync( return false; } - if (!CanIntroduceVariable(textSpan.IsEmpty, cancellationToken)) - return false; - IsConstant = IsExpressionConstant(Document, Expression, _service, cancellationToken); // Note: the ordering of these clauses are important. They go, generally, from diff --git a/src/roslyn/src/Features/Core/Portable/UseNamedArguments/AbstractUseNamedArgumentsCodeRefactoringProvider.cs b/src/roslyn/src/Features/Core/Portable/UseNamedArguments/AbstractUseNamedArgumentsCodeRefactoringProvider.cs index 74749e6b82e..3a9ab3951b7 100644 --- a/src/roslyn/src/Features/Core/Portable/UseNamedArguments/AbstractUseNamedArgumentsCodeRefactoringProvider.cs +++ b/src/roslyn/src/Features/Core/Portable/UseNamedArguments/AbstractUseNamedArgumentsCodeRefactoringProvider.cs @@ -31,8 +31,7 @@ public async Task ComputeRefactoringsAsync( // We allow empty nodes here to find VB implicit arguments. var potentialArguments = await document.GetRelevantNodesAsync(textSpan, allowEmptyNodes: true, cancellationToken).ConfigureAwait(false); - var argument = potentialArguments.FirstOrDefault(n => n.Parent is TArgumentListSyntax) as TSimpleArgumentSyntax; - if (argument == null) + if (potentialArguments.FirstOrDefault(n => n.Parent is TArgumentListSyntax) is not TSimpleArgumentSyntax argument) { return; } diff --git a/src/roslyn/src/Features/TestUtilities/EditAndContinue/EditAndContinueTestVerifier.cs b/src/roslyn/src/Features/TestUtilities/EditAndContinue/EditAndContinueTestVerifier.cs index 835d7210d8b..eb7321a98e6 100644 --- a/src/roslyn/src/Features/TestUtilities/EditAndContinue/EditAndContinueTestVerifier.cs +++ b/src/roslyn/src/Features/TestUtilities/EditAndContinue/EditAndContinueTestVerifier.cs @@ -40,12 +40,19 @@ internal abstract class EditAndContinueTestVerifier EditAndContinueCapabilities.ChangeCustomAttributes | EditAndContinueCapabilities.UpdateParameters; - public const EditAndContinueCapabilities AllRuntimeCapabilities = + public const EditAndContinueCapabilities Net8RuntimeCapabilities = Net6RuntimeCapabilities | EditAndContinueCapabilities.GenericAddMethodToExistingType | EditAndContinueCapabilities.GenericUpdateMethod | EditAndContinueCapabilities.GenericAddFieldToExistingType; + public const EditAndContinueCapabilities Net10RuntimeCapabilities = + Net8RuntimeCapabilities | + EditAndContinueCapabilities.AddFieldRva; + + public const EditAndContinueCapabilities AllRuntimeCapabilities = + Net10RuntimeCapabilities; + public AbstractEditAndContinueAnalyzer Analyzer { get; } protected EditAndContinueTestVerifier(Action? faultInjector) diff --git a/src/roslyn/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer.UnitTests/Utilities/AbstractLanguageServerHostTests.cs b/src/roslyn/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer.UnitTests/Utilities/AbstractLanguageServerHostTests.cs index ae12838c614..56583026440 100644 --- a/src/roslyn/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer.UnitTests/Utilities/AbstractLanguageServerHostTests.cs +++ b/src/roslyn/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer.UnitTests/Utilities/AbstractLanguageServerHostTests.cs @@ -68,7 +68,7 @@ private TestLspServer(ExportProvider exportProvider, ILoggerFactory loggerFactor var typeRefResolver = new ExtensionTypeRefResolver(assemblyLoader, loggerFactory); var (clientStream, serverStream) = FullDuplexStream.CreatePair(); - LanguageServerHost = new LanguageServerHost(serverStream, serverStream, exportProvider, loggerFactory.CreateLogger(), typeRefResolver); + LanguageServerHost = new LanguageServerHost(serverStream, serverStream, exportProvider, loggerFactory, typeRefResolver); var messageFormatter = RoslynLanguageServer.CreateJsonMessageFormatter(); _clientRpc = new JsonRpc(new HeaderDelimitedMessageHandler(clientStream, clientStream, messageFormatter)) diff --git a/src/roslyn/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/LanguageServer/Handler/Restore/RestoreHandler.cs b/src/roslyn/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/LanguageServer/Handler/Restore/RestoreHandler.cs index 7f57a870a5c..e419f2ee621 100644 --- a/src/roslyn/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/LanguageServer/Handler/Restore/RestoreHandler.cs +++ b/src/roslyn/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/LanguageServer/Handler/Restore/RestoreHandler.cs @@ -106,7 +106,7 @@ private static ImmutableArray GetRestorePaths(RestoreParams request, Sol .Distinct() .ToImmutableArray(); - context.TraceInformation($"Found {projects.Length} restorable projects from {solution.Projects.Count()} projects in solution"); + context.TraceDebug($"Found {projects.Length} restorable projects from {solution.Projects.Count()} projects in solution"); return projects; } } diff --git a/src/roslyn/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/LanguageServer/LanguageServerHost.cs b/src/roslyn/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/LanguageServer/LanguageServerHost.cs index a874f6049f8..8e6b86e719d 100644 --- a/src/roslyn/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/LanguageServer/LanguageServerHost.cs +++ b/src/roslyn/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/LanguageServer/LanguageServerHost.cs @@ -26,7 +26,7 @@ internal sealed class LanguageServerHost private readonly AbstractLanguageServer _roslynLanguageServer; private readonly JsonRpc _jsonRpc; - public LanguageServerHost(Stream inputStream, Stream outputStream, ExportProvider exportProvider, ILogger logger, AbstractTypeRefResolver typeRefResolver) + public LanguageServerHost(Stream inputStream, Stream outputStream, ExportProvider exportProvider, ILoggerFactory loggerFactory, AbstractTypeRefResolver typeRefResolver) { var messageFormatter = RoslynLanguageServer.CreateJsonMessageFormatter(); @@ -41,7 +41,7 @@ public LanguageServerHost(Stream inputStream, Stream outputStream, ExportProvide var roslynLspFactory = exportProvider.GetExportedValue(); var capabilitiesProvider = new ServerCapabilitiesProvider(exportProvider.GetExportedValue()); - _logger = logger; + _logger = loggerFactory.CreateLogger("LSP"); var lspLogger = new LspServiceLogger(_logger); var hostServices = exportProvider.GetExportedValue().HostServices; diff --git a/src/roslyn/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/Logging/LspServiceLogger.cs b/src/roslyn/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/Logging/LspServiceLogger.cs index 08fb6743c88..d12c83f0fbf 100644 --- a/src/roslyn/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/Logging/LspServiceLogger.cs +++ b/src/roslyn/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/Logging/LspServiceLogger.cs @@ -35,7 +35,7 @@ public LspServiceLogger(ILogger hostLogger) /// /// TODO - Switch this to call LogInformation once appropriate callers have been changed to LogDebug. /// - public override void LogInformation(string message, params object[] @params) => _hostLogger.LogDebug(message, @params); + public override void LogInformation(string message, params object[] @params) => _hostLogger.LogInformation(message, @params); public override void LogWarning(string message, params object[] @params) => _hostLogger.LogWarning(message, @params); } diff --git a/src/roslyn/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/Program.cs b/src/roslyn/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/Program.cs index 779bb65eea7..115adac328b 100644 --- a/src/roslyn/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/Program.cs +++ b/src/roslyn/src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/Program.cs @@ -122,12 +122,10 @@ static async Task RunAsync(ServerConfiguration serverConfiguration, Cancellation // TODO: Remove, the path should match exactly. Workaround for https://devdiv.visualstudio.com/DevDiv/_workitems/edit/1830914. Microsoft.CodeAnalysis.EditAndContinue.EditAndContinueMethodDebugInfoReader.IgnoreCaseWhenComparingDocumentNames = Path.DirectorySeparatorChar == '\\'; - var languageServerLogger = loggerFactory.CreateLogger(nameof(LanguageServerHost)); - LanguageServerHost? server = null; if (serverConfiguration.UseStdIo) { - server = new LanguageServerHost(Console.OpenStandardInput(), Console.OpenStandardOutput(), exportProvider, languageServerLogger, typeRefResolver); + server = new LanguageServerHost(Console.OpenStandardInput(), Console.OpenStandardOutput(), exportProvider, loggerFactory, typeRefResolver); } else { @@ -147,7 +145,7 @@ static async Task RunAsync(ServerConfiguration serverConfiguration, Cancellation // Wait for connection from client await pipeServer.WaitForConnectionAsync(cancellationToken); - server = new LanguageServerHost(pipeServer, pipeServer, exportProvider, languageServerLogger, typeRefResolver); + server = new LanguageServerHost(pipeServer, pipeServer, exportProvider, loggerFactory, typeRefResolver); } server.Start(); diff --git a/src/roslyn/src/LanguageServer/Microsoft.CommonLanguageServerProtocol.Framework/AbstractLanguageServer.cs b/src/roslyn/src/LanguageServer/Microsoft.CommonLanguageServerProtocol.Framework/AbstractLanguageServer.cs index 89f6d1b0f1a..629f001c946 100644 --- a/src/roslyn/src/LanguageServer/Microsoft.CommonLanguageServerProtocol.Framework/AbstractLanguageServer.cs +++ b/src/roslyn/src/LanguageServer/Microsoft.CommonLanguageServerProtocol.Framework/AbstractLanguageServer.cs @@ -65,6 +65,9 @@ protected AbstractLanguageServer( _jsonRpc = jsonRpc; TypeRefResolver = typeRefResolver ?? TypeRef.DefaultResolver.Instance; + // We have no need to continue running LSP requests after the connection is closed. + _jsonRpc.CancelLocallyInvokedMethodsWhenConnectionIsClosed = true; + _jsonRpc.AddLocalRpcTarget(this); _jsonRpc.Disconnected += JsonRpc_Disconnected; _lspServices = new Lazy(() => ConstructLspServices()); @@ -181,7 +184,7 @@ protected IRequestExecutionQueue GetRequestExecutionQueue() public virtual bool TryGetLanguageForRequest(string methodName, object? serializedRequest, [NotNullWhen(true)] out string? language) { - Logger.LogInformation($"Using default language handler for {methodName}"); + Logger.LogDebug($"Using default language handler for {methodName}"); language = LanguageServerConstants.DefaultLanguageName; return true; } diff --git a/src/roslyn/src/LanguageServer/Microsoft.CommonLanguageServerProtocol.Framework/QueueItem.cs b/src/roslyn/src/LanguageServer/Microsoft.CommonLanguageServerProtocol.Framework/QueueItem.cs index d13a0415ffb..4fca35567d3 100644 --- a/src/roslyn/src/LanguageServer/Microsoft.CommonLanguageServerProtocol.Framework/QueueItem.cs +++ b/src/roslyn/src/LanguageServer/Microsoft.CommonLanguageServerProtocol.Framework/QueueItem.cs @@ -223,7 +223,7 @@ public async Task StartRequestAsync(TRequest request, TRequ { // Record logs + metrics on cancellation. _requestTelemetryScope?.RecordCancellation(); - _logger.LogInformation($"Request was cancelled."); + _logger.LogDebug($"Request was cancelled."); _completionSource.TrySetCanceled(ex.CancellationToken); } diff --git a/src/roslyn/src/LanguageServer/Protocol/Extensions/ProtocolConversions.cs b/src/roslyn/src/LanguageServer/Protocol/Extensions/ProtocolConversions.cs index 1d0be6244de..a8449c99b24 100644 --- a/src/roslyn/src/LanguageServer/Protocol/Extensions/ProtocolConversions.cs +++ b/src/roslyn/src/LanguageServer/Protocol/Extensions/ProtocolConversions.cs @@ -492,7 +492,7 @@ public static LSP.Range TextSpanToRange(TextSpan textSpan, SourceText text) if (uri == null) { - context?.TraceInformation($"Could not convert '{mappedSpan.FilePath}' to uri"); + context?.TraceWarning($"Could not convert '{mappedSpan.FilePath}' to uri"); return null; } diff --git a/src/roslyn/src/LanguageServer/Protocol/Features/UnifiedSuggestions/UnifiedSuggestedActions/UnifiedSuggestedAction.cs b/src/roslyn/src/LanguageServer/Protocol/Features/UnifiedSuggestions/UnifiedSuggestedActions/UnifiedSuggestedAction.cs index d465134d029..17e04ceeb9b 100644 --- a/src/roslyn/src/LanguageServer/Protocol/Features/UnifiedSuggestions/UnifiedSuggestedActions/UnifiedSuggestedAction.cs +++ b/src/roslyn/src/LanguageServer/Protocol/Features/UnifiedSuggestions/UnifiedSuggestedActions/UnifiedSuggestedAction.cs @@ -10,18 +10,11 @@ namespace Microsoft.CodeAnalysis.UnifiedSuggestions; /// Similar to SuggestedAction, but in a location that can be used by /// both local Roslyn and LSP. /// -internal class UnifiedSuggestedAction : IUnifiedSuggestedAction +internal class UnifiedSuggestedAction(Workspace workspace, CodeAction codeAction, CodeActionPriority codeActionPriority) : IUnifiedSuggestedAction { - public Workspace Workspace { get; } + public Workspace Workspace { get; } = workspace; - public CodeAction OriginalCodeAction { get; } + public CodeAction OriginalCodeAction { get; } = codeAction; - public CodeActionPriority CodeActionPriority { get; } - - public UnifiedSuggestedAction(Workspace workspace, CodeAction codeAction, CodeActionPriority codeActionPriority) - { - Workspace = workspace; - OriginalCodeAction = codeAction; - CodeActionPriority = codeActionPriority; - } + public CodeActionPriority CodeActionPriority { get; } = codeActionPriority; } diff --git a/src/roslyn/src/LanguageServer/Protocol/Handler/CodeActions/CodeActionResolveHelper.cs b/src/roslyn/src/LanguageServer/Protocol/Handler/CodeActions/CodeActionResolveHelper.cs index de8d79e7abd..a7bfd10318a 100644 --- a/src/roslyn/src/LanguageServer/Protocol/Handler/CodeActions/CodeActionResolveHelper.cs +++ b/src/roslyn/src/LanguageServer/Protocol/Handler/CodeActions/CodeActionResolveHelper.cs @@ -30,7 +30,7 @@ internal sealed class CodeActionResolveHelper data, operations, context.GetRequiredClientCapabilities().Workspace?.WorkspaceEdit?.ResourceOperations ?? [], - context.TraceInformation, + context.TraceDebug, cancellationToken); } diff --git a/src/roslyn/src/LanguageServer/Protocol/Handler/Commands/ProvidesCommandAttribute.cs b/src/roslyn/src/LanguageServer/Protocol/Handler/Commands/ProvidesCommandAttribute.cs index 029c5de4056..05b47491028 100644 --- a/src/roslyn/src/LanguageServer/Protocol/Handler/Commands/ProvidesCommandAttribute.cs +++ b/src/roslyn/src/LanguageServer/Protocol/Handler/Commands/ProvidesCommandAttribute.cs @@ -9,9 +9,5 @@ namespace Microsoft.CodeAnalysis.LanguageServer.Handler.Commands; [MetadataAttribute] [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)] -internal class CommandAttribute : MethodAttribute -{ - public CommandAttribute(string command) : base(AbstractExecuteWorkspaceCommandHandler.GetRequestNameForCommandName(command)) - { - } -} +internal class CommandAttribute(string command) + : MethodAttribute(AbstractExecuteWorkspaceCommandHandler.GetRequestNameForCommandName(command)); diff --git a/src/roslyn/src/LanguageServer/Protocol/Handler/Completion/CompletionResolveHandler.cs b/src/roslyn/src/LanguageServer/Protocol/Handler/Completion/CompletionResolveHandler.cs index a7be8405ffb..48d369721d0 100644 --- a/src/roslyn/src/LanguageServer/Protocol/Handler/Completion/CompletionResolveHandler.cs +++ b/src/roslyn/src/LanguageServer/Protocol/Handler/Completion/CompletionResolveHandler.cs @@ -51,7 +51,7 @@ public CompletionResolveHandler(IGlobalOptionService globalOptions) if (!completionListCache.TryGetCompletionListCacheEntry(completionItem, out var cacheEntry)) { // Don't have a cache associated with this completion item, cannot resolve. - context.TraceInformation("No cache entry found for the provided completion item at resolve time."); + context.TraceWarning("No cache entry found for the provided completion item at resolve time."); return Task.FromResult(completionItem); } diff --git a/src/roslyn/src/LanguageServer/Protocol/Handler/Diagnostics/AbstractDocumentPullDiagnosticHandler.cs b/src/roslyn/src/LanguageServer/Protocol/Handler/Diagnostics/AbstractDocumentPullDiagnosticHandler.cs index 21c18891297..f9919ddd6af 100644 --- a/src/roslyn/src/LanguageServer/Protocol/Handler/Diagnostics/AbstractDocumentPullDiagnosticHandler.cs +++ b/src/roslyn/src/LanguageServer/Protocol/Handler/Diagnostics/AbstractDocumentPullDiagnosticHandler.cs @@ -37,7 +37,7 @@ protected override ValueTask> GetOrderedDiagno var textDocument = context.TextDocument; if (textDocument is null) { - context.TraceInformation("Ignoring diagnostics request because no text document was provided"); + context.TraceDebug("Ignoring diagnostics request because no text document was provided"); return new([]); } diff --git a/src/roslyn/src/LanguageServer/Protocol/Handler/Diagnostics/AbstractPullDiagnosticHandler.cs b/src/roslyn/src/LanguageServer/Protocol/Handler/Diagnostics/AbstractPullDiagnosticHandler.cs index 315ad969031..33ce7c29a33 100644 --- a/src/roslyn/src/LanguageServer/Protocol/Handler/Diagnostics/AbstractPullDiagnosticHandler.cs +++ b/src/roslyn/src/LanguageServer/Protocol/Handler/Diagnostics/AbstractPullDiagnosticHandler.cs @@ -107,7 +107,7 @@ protected virtual Task WaitForChangesAsync(string? category, RequestContext cont // noise. It is not exposed to the user. if (!this.GlobalOptions.GetOption(SolutionCrawlerRegistrationService.EnableSolutionCrawler)) { - context.TraceInformation($"{this.GetType()}. Skipping due to {nameof(SolutionCrawlerRegistrationService.EnableSolutionCrawler)}={false}"); + context.TraceDebug($"{this.GetType()}. Skipping due to {nameof(SolutionCrawlerRegistrationService.EnableSolutionCrawler)}={false}"); } else { @@ -116,7 +116,7 @@ protected virtual Task WaitForChangesAsync(string? category, RequestContext cont var clientCapabilities = context.GetRequiredClientCapabilities(); var category = GetRequestDiagnosticCategory(diagnosticsParams); var handlerName = $"{this.GetType().Name}(category: {category})"; - context.TraceInformation($"{handlerName} started getting diagnostics"); + context.TraceDebug($"{handlerName} started getting diagnostics"); var versionedCache = _categoryToVersionedCache.GetOrAdd( handlerName, static (handlerName, globalOptions) => new(globalOptions, handlerName), GlobalOptions); @@ -124,7 +124,7 @@ protected virtual Task WaitForChangesAsync(string? category, RequestContext cont // Get the set of results the request said were previously reported. We can use this to determine both // what to skip, and what files we have to tell the client have been removed. var previousResults = GetPreviousResults(diagnosticsParams) ?? []; - context.TraceInformation($"previousResults.Length={previousResults.Length}"); + context.TraceDebug($"previousResults.Length={previousResults.Length}"); // Create a mapping from documents to the previous results the client says it has for them. That way as we // process documents we know if we should tell the client it should stay the same, or we can tell it what @@ -142,7 +142,7 @@ protected virtual Task WaitForChangesAsync(string? category, RequestContext cont var orderedSources = await GetOrderedDiagnosticSourcesAsync( diagnosticsParams, category, context, cancellationToken).ConfigureAwait(false); - context.TraceInformation($"Processing {orderedSources.Length} documents"); + context.TraceDebug($"Processing {orderedSources.Length} documents"); // Keep track of what diagnostic sources we see this time around. For any we do not see this time // around, we'll notify the client that the diagnostics for it have been removed. @@ -169,7 +169,7 @@ protected virtual Task WaitForChangesAsync(string? category, RequestContext cont } else { - context.TraceInformation($"Diagnostics were unchanged for {diagnosticSource.ToDisplayString()}"); + context.TraceDebug($"Diagnostics were unchanged for {diagnosticSource.ToDisplayString()}"); // Nothing changed between the last request and this one. Report a (null-diagnostics, // same-result-id) response to the client as that means they should just preserve the current @@ -212,7 +212,7 @@ protected virtual Task WaitForChangesAsync(string? category, RequestContext cont // If we had a progress object, then we will have been reporting to that. Otherwise, take what we've been // collecting and return that. - context.TraceInformation($"{this.GetType()} finished getting diagnostics"); + context.TraceDebug($"{this.GetType()} finished getting diagnostics"); } return CreateReturn(progress); @@ -297,7 +297,7 @@ private void HandleRemovedDocuments(RequestContext context, HashSet> ComputeDataAsync(DiagnosticsRequestState state, CancellationToken cancellationToken) { var diagnostics = await state.DiagnosticSource.GetDiagnosticsAsync(state.Context, cancellationToken).ConfigureAwait(false); - state.Context.TraceInformation($"Found {diagnostics.Length} diagnostics for {state.DiagnosticSource.ToDisplayString()}"); + state.Context.TraceDebug($"Found {diagnostics.Length} diagnostics for {state.DiagnosticSource.ToDisplayString()}"); return diagnostics; } diff --git a/src/roslyn/src/LanguageServer/Protocol/Handler/DocumentChanges/DidCloseHandler.cs b/src/roslyn/src/LanguageServer/Protocol/Handler/DocumentChanges/DidCloseHandler.cs index e095e7aeaab..265f2381d96 100644 --- a/src/roslyn/src/LanguageServer/Protocol/Handler/DocumentChanges/DidCloseHandler.cs +++ b/src/roslyn/src/LanguageServer/Protocol/Handler/DocumentChanges/DidCloseHandler.cs @@ -15,14 +15,10 @@ namespace Microsoft.CodeAnalysis.LanguageServer.Handler.DocumentChanges; [ExportCSharpVisualBasicStatelessLspService(typeof(DidCloseHandler)), Shared] [Method(LSP.Methods.TextDocumentDidCloseName)] -internal class DidCloseHandler : ILspServiceNotificationHandler, ITextDocumentIdentifierHandler +[method: ImportingConstructor] +[method: Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] +internal class DidCloseHandler() : ILspServiceNotificationHandler, ITextDocumentIdentifierHandler { - [ImportingConstructor] - [Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] - public DidCloseHandler() - { - } - public bool MutatesSolutionState => true; public bool RequiresLSPSolution => false; @@ -31,7 +27,7 @@ public DidCloseHandler() public async Task HandleNotificationAsync(LSP.DidCloseTextDocumentParams request, RequestContext context, CancellationToken cancellationToken) { // GetTextDocumentIdentifier returns null to avoid creating the solution, so the queue is not able to log the uri. - context.TraceInformation($"didClose for {request.TextDocument.DocumentUri}"); + context.TraceDebug($"didClose for {request.TextDocument.DocumentUri}"); await context.StopTrackingAsync(request.TextDocument.DocumentUri, cancellationToken).ConfigureAwait(false); } diff --git a/src/roslyn/src/LanguageServer/Protocol/Handler/DocumentChanges/DidOpenHandler.cs b/src/roslyn/src/LanguageServer/Protocol/Handler/DocumentChanges/DidOpenHandler.cs index eb6f36942b7..16c05505d5b 100644 --- a/src/roslyn/src/LanguageServer/Protocol/Handler/DocumentChanges/DidOpenHandler.cs +++ b/src/roslyn/src/LanguageServer/Protocol/Handler/DocumentChanges/DidOpenHandler.cs @@ -16,14 +16,10 @@ namespace Microsoft.CodeAnalysis.LanguageServer.Handler.DocumentChanges; [ExportCSharpVisualBasicStatelessLspService(typeof(DidOpenHandler)), Shared] [Method(LSP.Methods.TextDocumentDidOpenName)] -internal class DidOpenHandler : ILspServiceNotificationHandler, ITextDocumentIdentifierHandler +[method: ImportingConstructor] +[method: Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] +internal class DidOpenHandler() : ILspServiceNotificationHandler, ITextDocumentIdentifierHandler { - [ImportingConstructor] - [Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] - public DidOpenHandler() - { - } - public bool MutatesSolutionState => true; public bool RequiresLSPSolution => false; @@ -32,7 +28,7 @@ public DidOpenHandler() public async Task HandleNotificationAsync(LSP.DidOpenTextDocumentParams request, RequestContext context, CancellationToken cancellationToken) { // GetTextDocumentIdentifier returns null to avoid creating the solution, so the queue is not able to log the uri. - context.TraceInformation($"didOpen for {request.TextDocument.DocumentUri}"); + context.TraceDebug($"didOpen for {request.TextDocument.DocumentUri}"); // Add the document and ensure the text we have matches whats on the client // TODO (https://github.com/dotnet/roslyn/issues/63583): diff --git a/src/roslyn/src/LanguageServer/Protocol/Handler/InlineCompletions/XmlSnippetParser.cs b/src/roslyn/src/LanguageServer/Protocol/Handler/InlineCompletions/XmlSnippetParser.cs index a866a357c74..0ca5cd43d7e 100644 --- a/src/roslyn/src/LanguageServer/Protocol/Handler/InlineCompletions/XmlSnippetParser.cs +++ b/src/roslyn/src/LanguageServer/Protocol/Handler/InlineCompletions/XmlSnippetParser.cs @@ -47,7 +47,7 @@ public XmlSnippetParser() ParsedXmlSnippet? parsedSnippet = null; try { - logger.LogInformation($"Reading snippet for {matchingSnippetInfo.Title} with path {matchingSnippetInfo.Path}"); + logger.LogDebug($"Reading snippet for {matchingSnippetInfo.Title} with path {matchingSnippetInfo.Path}"); parsedSnippet = GetAndParseSnippetFromFile(matchingSnippetInfo); } catch (Exception ex) when (FatalError.ReportAndCatch(ex, ErrorSeverity.General)) diff --git a/src/roslyn/src/LanguageServer/Protocol/Handler/MapCode/MapCodeHandler.cs b/src/roslyn/src/LanguageServer/Protocol/Handler/MapCode/MapCodeHandler.cs index eda5bf4dd5a..3d941086b7c 100644 --- a/src/roslyn/src/LanguageServer/Protocol/Handler/MapCode/MapCodeHandler.cs +++ b/src/roslyn/src/LanguageServer/Protocol/Handler/MapCode/MapCodeHandler.cs @@ -102,7 +102,7 @@ public MapCodeHandler() if (textChanges is null) { - context.TraceInformation($"mapCode sub-request for {textDocument.DocumentUri} failed: 'IMapCodeService.MapCodeAsync' returns null."); + context.TraceDebug($"mapCode sub-request for {textDocument.DocumentUri} failed: 'IMapCodeService.MapCodeAsync' returns null."); return null; } @@ -127,7 +127,7 @@ public MapCodeHandler() // Ignore anything not in target document, which current code mapper doesn't handle anyway if (!location.DocumentUri.Equals(textDocumentIdentifier.DocumentUri)) { - context.TraceInformation($"A focus location in '{textDocumentIdentifier.DocumentUri}' is skipped, only locations in corresponding MapCodeMapping.TextDocument is currently considered."); + context.TraceDebug($"A focus location in '{textDocumentIdentifier.DocumentUri}' is skipped, only locations in corresponding MapCodeMapping.TextDocument is currently considered."); continue; } diff --git a/src/roslyn/src/LanguageServer/Protocol/Handler/MethodAttribute.cs b/src/roslyn/src/LanguageServer/Protocol/Handler/MethodAttribute.cs index eb040cf3fb8..5a666343096 100644 --- a/src/roslyn/src/LanguageServer/Protocol/Handler/MethodAttribute.cs +++ b/src/roslyn/src/LanguageServer/Protocol/Handler/MethodAttribute.cs @@ -8,9 +8,5 @@ namespace Microsoft.CodeAnalysis.LanguageServer.Handler; [MetadataAttribute] -internal class MethodAttribute : LanguageServerEndpointAttribute -{ - public MethodAttribute(string method) : base(method, LanguageServerConstants.DefaultLanguageName) - { - } -} +internal class MethodAttribute(string method) + : LanguageServerEndpointAttribute(method, LanguageServerConstants.DefaultLanguageName); diff --git a/src/roslyn/src/LanguageServer/Protocol/Handler/ProjectContext/GetTextDocumentWithContextHandler.cs b/src/roslyn/src/LanguageServer/Protocol/Handler/ProjectContext/GetTextDocumentWithContextHandler.cs index 73191ad6671..0f718729323 100644 --- a/src/roslyn/src/LanguageServer/Protocol/Handler/ProjectContext/GetTextDocumentWithContextHandler.cs +++ b/src/roslyn/src/LanguageServer/Protocol/Handler/ProjectContext/GetTextDocumentWithContextHandler.cs @@ -17,14 +17,10 @@ namespace Microsoft.CodeAnalysis.LanguageServer.Handler; [ExportCSharpVisualBasicStatelessLspService(typeof(GetTextDocumentWithContextHandler)), Shared] [Method(VSMethods.GetProjectContextsName)] -internal class GetTextDocumentWithContextHandler : ILspServiceDocumentRequestHandler +[method: ImportingConstructor] +[method: Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] +internal class GetTextDocumentWithContextHandler() : ILspServiceDocumentRequestHandler { - [ImportingConstructor] - [Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] - public GetTextDocumentWithContextHandler() - { - } - public bool MutatesSolutionState => false; public bool RequiresLSPSolution => true; diff --git a/src/roslyn/src/LanguageServer/Protocol/Handler/RelatedDocuments/RelatedDocumentsHandler.cs b/src/roslyn/src/LanguageServer/Protocol/Handler/RelatedDocuments/RelatedDocumentsHandler.cs index 513be4762d6..875655305f4 100644 --- a/src/roslyn/src/LanguageServer/Protocol/Handler/RelatedDocuments/RelatedDocumentsHandler.cs +++ b/src/roslyn/src/LanguageServer/Protocol/Handler/RelatedDocuments/RelatedDocumentsHandler.cs @@ -41,19 +41,17 @@ public TextDocumentIdentifier GetTextDocumentIdentifier(VSInternalRelatedDocumen public async Task HandleRequestAsync( VSInternalRelatedDocumentParams requestParams, RequestContext context, CancellationToken cancellationToken) { - context.TraceInformation($"{this.GetType()} started getting related documents"); - var solution = context.Solution; var document = context.Document; Contract.ThrowIfNull(solution); Contract.ThrowIfNull(document); - context.TraceInformation($"Processing: {document.FilePath}"); + context.TraceDebug($"Processing: {document.FilePath}"); var relatedDocumentsService = document.GetLanguageService(); if (relatedDocumentsService == null) { - context.TraceInformation($"Ignoring document '{document.FilePath}' because it does not support related documents"); + context.TraceDebug($"Ignoring document '{document.FilePath}' because it does not support related documents"); return []; } @@ -85,7 +83,6 @@ await relatedDocumentsService.GetRelatedDocumentIdsAsync( // If we had a progress object, then we will have been reporting to that. Otherwise, take what we've been // collecting and return that. - context.TraceInformation($"{this.GetType()} finished getting related documents"); return progress.GetFlattenedValues(); } } diff --git a/src/roslyn/src/LanguageServer/Protocol/Handler/RequestContext.cs b/src/roslyn/src/LanguageServer/Protocol/Handler/RequestContext.cs index 146bbed5444..59f2e94a7c2 100644 --- a/src/roslyn/src/LanguageServer/Protocol/Handler/RequestContext.cs +++ b/src/roslyn/src/LanguageServer/Protocol/Handler/RequestContext.cs @@ -330,13 +330,13 @@ public SourceText GetTrackedDocumentSourceText(DocumentUri documentUri) // handler treats those as separate worlds that they are responsible for. if (TextDocument is not TDocument document) { - TraceInformation($"Ignoring diagnostics request because no {typeof(TDocument).Name} was provided"); + TraceDebug($"Ignoring diagnostics request because no {typeof(TDocument).Name} was provided"); return null; } if (!IsTracking(document.GetURI())) { - TraceWarning($"Ignoring diagnostics request for untracked document: {document.GetURI()}"); + TraceDebug($"Ignoring diagnostics request for untracked document: {document.GetURI()}"); return null; } @@ -361,6 +361,9 @@ public void ClearSolutionContext() _lspSolution.Value = default; } + public void TraceDebug(string message) + => _logger.LogDebug(message); + /// /// Logs an informational message. /// diff --git a/src/roslyn/src/LanguageServer/Protocol/Handler/SpellCheck/AbstractSpellCheckingHandler.cs b/src/roslyn/src/LanguageServer/Protocol/Handler/SpellCheck/AbstractSpellCheckingHandler.cs index dc7f44fd9b0..a27b547c973 100644 --- a/src/roslyn/src/LanguageServer/Protocol/Handler/SpellCheck/AbstractSpellCheckingHandler.cs +++ b/src/roslyn/src/LanguageServer/Protocol/Handler/SpellCheck/AbstractSpellCheckingHandler.cs @@ -62,7 +62,7 @@ protected AbstractSpellCheckHandler() public async Task HandleRequestAsync( TParams requestParams, RequestContext context, CancellationToken cancellationToken) { - context.TraceInformation($"{this.GetType()} started getting spell checking spans"); + context.TraceDebug($"{this.GetType()} started getting spell checking spans"); // The progress object we will stream reports to. using var progress = BufferedProgress.Create(requestParams.PartialResultToken); @@ -70,7 +70,7 @@ protected AbstractSpellCheckHandler() // Get the set of results the request said were previously reported. We can use this to determine both // what to skip, and what files we have to tell the client have been removed. var previousResults = GetPreviousResults(requestParams) ?? []; - context.TraceInformation($"previousResults.Length={previousResults.Length}"); + context.TraceDebug($"previousResults.Length={previousResults.Length}"); // First, let the client know if any workspace documents have gone away. That way it can remove those for // the user from squiggles or error-list. @@ -84,16 +84,16 @@ protected AbstractSpellCheckHandler() // Next process each file in priority order. Determine if spans are changed or unchanged since the // last time we notified the client. Report back either to the client so they can update accordingly. var orderedDocuments = GetOrderedDocuments(context, cancellationToken); - context.TraceInformation($"Processing {orderedDocuments.Length} documents"); + context.TraceDebug($"Processing {orderedDocuments.Length} documents"); foreach (var document in orderedDocuments) { - context.TraceInformation($"Processing: {document.FilePath}"); + context.TraceDebug($"Processing: {document.FilePath}"); var languageService = document.GetLanguageService(); if (languageService == null) { - context.TraceInformation($"Ignoring document '{document.FilePath}' because it does not support spell checking"); + context.TraceDebug($"Ignoring document '{document.FilePath}' because it does not support spell checking"); continue; } @@ -107,7 +107,7 @@ protected AbstractSpellCheckHandler() if (newResult != null) { var (newResultId, spans) = newResult.Value; - context.TraceInformation($"Spans were changed for document: {document.FilePath}"); + context.TraceDebug($"Spans were changed for document: {document.FilePath}"); foreach (var report in ReportCurrentSpans( document, spans, newResultId)) { @@ -116,7 +116,7 @@ protected AbstractSpellCheckHandler() } else { - context.TraceInformation($"Spans were unchanged for document: {document.FilePath}"); + context.TraceDebug($"Spans were unchanged for document: {document.FilePath}"); // Nothing changed between the last request and this one. Report a (null-spans, same-result-id) // response to the client as that means they should just preserve the current spans they have for @@ -128,7 +128,7 @@ protected AbstractSpellCheckHandler() // If we had a progress object, then we will have been reporting to that. Otherwise, take what we've been // collecting and return that. - context.TraceInformation($"{this.GetType()} finished getting spans"); + context.TraceDebug($"{this.GetType()} finished getting spans"); return progress.GetFlattenedValues(); } @@ -212,7 +212,7 @@ private async Task HandleRemovedDocumentsAsync( var document = await context.Solution.GetTextDocumentAsync(textDocument, cancellationToken).ConfigureAwait(false); if (document == null) { - context.TraceInformation($"Clearing spans for removed document: {textDocument.DocumentUri}"); + context.TraceDebug($"Clearing spans for removed document: {textDocument.DocumentUri}"); // Client is asking server about a document that no longer exists (i.e. was removed/deleted from // the workspace). Report a (null-spans, null-result-id) response to the client as that means diff --git a/src/roslyn/src/LanguageServer/Protocol/Handler/SpellCheck/DocumentSpellCheckHandler.cs b/src/roslyn/src/LanguageServer/Protocol/Handler/SpellCheck/DocumentSpellCheckHandler.cs index 318fc1a0191..a2d6479cbc9 100644 --- a/src/roslyn/src/LanguageServer/Protocol/Handler/SpellCheck/DocumentSpellCheckHandler.cs +++ b/src/roslyn/src/LanguageServer/Protocol/Handler/SpellCheck/DocumentSpellCheckHandler.cs @@ -47,13 +47,13 @@ internal static ImmutableArray GetRequestedDocument(RequestContext con // handler treats those as separate worlds that they are responsible for. if (context.Document == null) { - context.TraceInformation("Ignoring spell check request because no document was provided"); + context.TraceDebug("Ignoring spell check request because no document was provided"); return []; } if (!context.IsTracking(context.Document.GetURI())) { - context.TraceInformation($"Ignoring spell check request for untracked document: {context.Document.GetURI()}"); + context.TraceDebug($"Ignoring spell check request for untracked document: {context.Document.GetURI()}"); return []; } diff --git a/src/roslyn/src/LanguageServer/Protocol/Handler/SpellCheck/WorkspaceSpellCheckHandler.cs b/src/roslyn/src/LanguageServer/Protocol/Handler/SpellCheck/WorkspaceSpellCheckHandler.cs index ad36a4f6b58..a3233c7bcac 100644 --- a/src/roslyn/src/LanguageServer/Protocol/Handler/SpellCheck/WorkspaceSpellCheckHandler.cs +++ b/src/roslyn/src/LanguageServer/Protocol/Handler/SpellCheck/WorkspaceSpellCheckHandler.cs @@ -79,7 +79,7 @@ void AddDocumentsFromProject(Project? project, ImmutableArray supportedL // Each handler treats those as separate worlds that they are responsible for. if (context.IsTracking(document.GetURI())) { - context.TraceInformation($"Skipping tracked document: {document.GetURI()}"); + context.TraceDebug($"Skipping tracked document: {document.GetURI()}"); continue; } diff --git a/src/roslyn/src/LanguageServer/Protocol/Handler/Telemetry/RequestTelemetryLoggerFactory.cs b/src/roslyn/src/LanguageServer/Protocol/Handler/Telemetry/RequestTelemetryLoggerFactory.cs index bd6963b36a6..acee1416aa2 100644 --- a/src/roslyn/src/LanguageServer/Protocol/Handler/Telemetry/RequestTelemetryLoggerFactory.cs +++ b/src/roslyn/src/LanguageServer/Protocol/Handler/Telemetry/RequestTelemetryLoggerFactory.cs @@ -9,16 +9,10 @@ namespace Microsoft.CodeAnalysis.LanguageServer.Handler; [ExportCSharpVisualBasicLspServiceFactory(typeof(RequestTelemetryLogger)), Shared] -internal class RequestTelemetryLoggerFactory : ILspServiceFactory +[method: ImportingConstructor] +[method: Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] +internal class RequestTelemetryLoggerFactory() : ILspServiceFactory { - [ImportingConstructor] - [Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] - public RequestTelemetryLoggerFactory() - { - } - public ILspService CreateILspService(LspServices lspServices, WellKnownLspServerKinds serverKind) - { - return new RequestTelemetryLogger(serverKind.ToTelemetryString()); - } + => new RequestTelemetryLogger(serverKind.ToTelemetryString()); } diff --git a/src/roslyn/src/LanguageServer/Protocol/LspServices/AbstractLspServiceProvider.cs b/src/roslyn/src/LanguageServer/Protocol/LspServices/AbstractLspServiceProvider.cs index 433505c3956..d01136ebdd7 100644 --- a/src/roslyn/src/LanguageServer/Protocol/LspServices/AbstractLspServiceProvider.cs +++ b/src/roslyn/src/LanguageServer/Protocol/LspServices/AbstractLspServiceProvider.cs @@ -9,18 +9,12 @@ namespace Microsoft.CodeAnalysis.LanguageServer; -internal class AbstractLspServiceProvider +internal abstract class AbstractLspServiceProvider( + IEnumerable> specificLspServices, + IEnumerable> specificLspServiceFactories) { - private readonly ImmutableArray> _lspServices; - private readonly ImmutableArray> _lspServiceFactories; - - public AbstractLspServiceProvider( - IEnumerable> specificLspServices, - IEnumerable> specificLspServiceFactories) - { - _lspServices = [.. specificLspServices]; - _lspServiceFactories = [.. specificLspServiceFactories]; - } + private readonly ImmutableArray> _lspServices = [.. specificLspServices]; + private readonly ImmutableArray> _lspServiceFactories = [.. specificLspServiceFactories]; public LspServices CreateServices(WellKnownLspServerKinds serverKind, FrozenDictionary> baseServices) { diff --git a/src/roslyn/src/LanguageServer/Protocol/LspServices/ExportCSharpVisualBasicLspServiceFactoryAttribute.cs b/src/roslyn/src/LanguageServer/Protocol/LspServices/ExportCSharpVisualBasicLspServiceFactoryAttribute.cs index e833c82c704..53cc49c18d6 100644 --- a/src/roslyn/src/LanguageServer/Protocol/LspServices/ExportCSharpVisualBasicLspServiceFactoryAttribute.cs +++ b/src/roslyn/src/LanguageServer/Protocol/LspServices/ExportCSharpVisualBasicLspServiceFactoryAttribute.cs @@ -11,9 +11,5 @@ namespace Microsoft.CodeAnalysis.LanguageServer.Handler; /// Defines an easy to use subclass for with the roslyn languages contract name. /// [AttributeUsage(AttributeTargets.Class, AllowMultiple = false), MetadataAttribute] -internal class ExportCSharpVisualBasicLspServiceFactoryAttribute : ExportLspServiceFactoryAttribute -{ - public ExportCSharpVisualBasicLspServiceFactoryAttribute(Type type, WellKnownLspServerKinds serverKind = WellKnownLspServerKinds.Any) : base(type, ProtocolConstants.RoslynLspLanguagesContract, serverKind) - { - } -} +internal class ExportCSharpVisualBasicLspServiceFactoryAttribute(Type type, WellKnownLspServerKinds serverKind = WellKnownLspServerKinds.Any) + : ExportLspServiceFactoryAttribute(type, ProtocolConstants.RoslynLspLanguagesContract, serverKind); diff --git a/src/roslyn/src/LanguageServer/Protocol/LspServices/ExportCSharpVisualBasicStatelessLspServiceAttribute.cs b/src/roslyn/src/LanguageServer/Protocol/LspServices/ExportCSharpVisualBasicStatelessLspServiceAttribute.cs index f17276c1394..b9e4b9bb0eb 100644 --- a/src/roslyn/src/LanguageServer/Protocol/LspServices/ExportCSharpVisualBasicStatelessLspServiceAttribute.cs +++ b/src/roslyn/src/LanguageServer/Protocol/LspServices/ExportCSharpVisualBasicStatelessLspServiceAttribute.cs @@ -8,9 +8,5 @@ namespace Microsoft.CodeAnalysis.LanguageServer.Handler; [AttributeUsage(AttributeTargets.Class, AllowMultiple = false), MetadataAttribute] -internal class ExportCSharpVisualBasicStatelessLspServiceAttribute : ExportStatelessLspServiceAttribute -{ - public ExportCSharpVisualBasicStatelessLspServiceAttribute(Type type, WellKnownLspServerKinds serverKind = WellKnownLspServerKinds.Any) : base(type, ProtocolConstants.RoslynLspLanguagesContract, serverKind) - { - } -} +internal class ExportCSharpVisualBasicStatelessLspServiceAttribute(Type type, WellKnownLspServerKinds serverKind = WellKnownLspServerKinds.Any) + : ExportStatelessLspServiceAttribute(type, ProtocolConstants.RoslynLspLanguagesContract, serverKind); diff --git a/src/roslyn/src/LanguageServer/Protocol/LspServices/ExportLspServiceFactoryAttribute.cs b/src/roslyn/src/LanguageServer/Protocol/LspServices/ExportLspServiceFactoryAttribute.cs index a3bff35f593..7285db9b638 100644 --- a/src/roslyn/src/LanguageServer/Protocol/LspServices/ExportLspServiceFactoryAttribute.cs +++ b/src/roslyn/src/LanguageServer/Protocol/LspServices/ExportLspServiceFactoryAttribute.cs @@ -15,11 +15,7 @@ namespace Microsoft.CodeAnalysis.LanguageServer; /// when the LSP server instance shuts down. /// [AttributeUsage(AttributeTargets.Class, AllowMultiple = false), MetadataAttribute] -internal class ExportLspServiceFactoryAttribute : AbstractExportLspServiceAttribute -{ - public ExportLspServiceFactoryAttribute( - Type serviceType, string contractName, WellKnownLspServerKinds serverKind = WellKnownLspServerKinds.Any) - : base(serviceType, contractName, contractType: typeof(ILspServiceFactory), isStateless: false, serverKind) - { - } -} +internal class ExportLspServiceFactoryAttribute( + Type serviceType, string contractName, WellKnownLspServerKinds serverKind = WellKnownLspServerKinds.Any) + : AbstractExportLspServiceAttribute( + serviceType, contractName, contractType: typeof(ILspServiceFactory), isStateless: false, serverKind); diff --git a/src/roslyn/src/LanguageServer/Protocol/LspServices/ExportStatelessLspServiceAttribute.cs b/src/roslyn/src/LanguageServer/Protocol/LspServices/ExportStatelessLspServiceAttribute.cs index 9f88893fca8..78c0908f003 100644 --- a/src/roslyn/src/LanguageServer/Protocol/LspServices/ExportStatelessLspServiceAttribute.cs +++ b/src/roslyn/src/LanguageServer/Protocol/LspServices/ExportStatelessLspServiceAttribute.cs @@ -15,11 +15,7 @@ namespace Microsoft.CodeAnalysis.LanguageServer; /// MEF will dispose of these services when the container is disposed of. /// [AttributeUsage(AttributeTargets.Class | AttributeTargets.Interface, AllowMultiple = false), MetadataAttribute] -internal class ExportStatelessLspServiceAttribute : AbstractExportLspServiceAttribute -{ - public ExportStatelessLspServiceAttribute( - Type serviceType, string contractName, WellKnownLspServerKinds serverKind = WellKnownLspServerKinds.Any) - : base(serviceType, contractName, contractType: typeof(ILspService), isStateless: true, serverKind) - { - } -} +internal class ExportStatelessLspServiceAttribute( + Type serviceType, string contractName, WellKnownLspServerKinds serverKind = WellKnownLspServerKinds.Any) + : AbstractExportLspServiceAttribute( + serviceType, contractName, contractType: typeof(ILspService), isStateless: true, serverKind); diff --git a/src/roslyn/src/LanguageServer/Protocol/LspServices/RoslynLspServiceProvider.cs b/src/roslyn/src/LanguageServer/Protocol/LspServices/RoslynLspServiceProvider.cs index 4319937d232..4e1efb592c7 100644 --- a/src/roslyn/src/LanguageServer/Protocol/LspServices/RoslynLspServiceProvider.cs +++ b/src/roslyn/src/LanguageServer/Protocol/LspServices/RoslynLspServiceProvider.cs @@ -10,14 +10,9 @@ namespace Microsoft.CodeAnalysis.LanguageServer; [Export(typeof(CSharpVisualBasicLspServiceProvider)), Shared] -internal sealed class CSharpVisualBasicLspServiceProvider : AbstractLspServiceProvider -{ - [ImportingConstructor] - [Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] - public CSharpVisualBasicLspServiceProvider( - [ImportMany(ProtocolConstants.RoslynLspLanguagesContract)] IEnumerable> lspServices, - [ImportMany(ProtocolConstants.RoslynLspLanguagesContract)] IEnumerable> lspServiceFactories) - : base(lspServices, lspServiceFactories) - { - } -} +[method: ImportingConstructor] +[method: Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] +internal sealed class CSharpVisualBasicLspServiceProvider( + [ImportMany(ProtocolConstants.RoslynLspLanguagesContract)] IEnumerable> lspServices, + [ImportMany(ProtocolConstants.RoslynLspLanguagesContract)] IEnumerable> lspServiceFactories) + : AbstractLspServiceProvider(lspServices, lspServiceFactories); diff --git a/src/roslyn/src/LanguageServer/Protocol/RoslynLanguageServer.cs b/src/roslyn/src/LanguageServer/Protocol/RoslynLanguageServer.cs index 134cbc66ba3..ca575808b15 100644 --- a/src/roslyn/src/LanguageServer/Protocol/RoslynLanguageServer.cs +++ b/src/roslyn/src/LanguageServer/Protocol/RoslynLanguageServer.cs @@ -167,7 +167,7 @@ public override bool TryGetLanguageForRequest(string methodName, object? seriali { if (serializedParameters == null) { - Logger.LogInformation("No request parameters given, using default language handler"); + Logger.LogDebug("No request parameters given, using default language handler"); language = LanguageServerConstants.DefaultLanguageName; return true; } @@ -212,7 +212,7 @@ public override bool TryGetLanguageForRequest(string methodName, object? seriali if (uri == null) { // This request is not for a textDocument and is not a resolve request. - Logger.LogInformation("Request did not contain a textDocument, using default language handler"); + Logger.LogDebug("Request did not contain a textDocument, using default language handler"); language = LanguageServerConstants.DefaultLanguageName; return true; } diff --git a/src/roslyn/src/LanguageServer/Protocol/Workspaces/LspWorkspaceManager.cs b/src/roslyn/src/LanguageServer/Protocol/Workspaces/LspWorkspaceManager.cs index 2201573441f..281ad35c95c 100644 --- a/src/roslyn/src/LanguageServer/Protocol/Workspaces/LspWorkspaceManager.cs +++ b/src/roslyn/src/LanguageServer/Protocol/Workspaces/LspWorkspaceManager.cs @@ -247,7 +247,7 @@ public void UpdateTrackedDocument(DocumentUri uri, SourceText newSourceText) var workspaceKind = document.Project.Solution.WorkspaceKind; _requestTelemetryLogger.UpdateFindDocumentTelemetryData(success: true, workspaceKind); _requestTelemetryLogger.UpdateUsedForkedSolutionCounter(isForked); - _logger.LogInformation($"{document.FilePath} found in workspace {workspaceKind}"); + _logger.LogDebug($"{document.FilePath} found in workspace {workspaceKind}"); // As we found the document in a non-misc workspace, also attempt to remove it from the misc workspace // if it happens to be in there as well. @@ -264,7 +264,7 @@ public void UpdateTrackedDocument(DocumentUri uri, SourceText newSourceText) // We didn't find the document in any workspace, record a telemetry notification that we did not find it. // Depending on the host, this can be entirely normal (e.g. opening a loose file) var searchedWorkspaceKinds = string.Join(";", lspSolutions.SelectAsArray(lspSolution => lspSolution.Solution.Workspace.Kind)); - _logger.LogInformation($"Could not find '{textDocumentIdentifier.DocumentUri}'. Searched {searchedWorkspaceKinds}"); + _logger.LogDebug($"Could not find '{textDocumentIdentifier.DocumentUri}'. Searched {searchedWorkspaceKinds}"); _requestTelemetryLogger.UpdateFindDocumentTelemetryData(success: false, workspaceKind: null); // Add the document to our loose files workspace (if we have one) if it is open. diff --git a/src/roslyn/src/LanguageServer/Protocol/Workspaces/LspWorkspaceManagerFactory.cs b/src/roslyn/src/LanguageServer/Protocol/Workspaces/LspWorkspaceManagerFactory.cs index d805ca8504a..795818c8a42 100644 --- a/src/roslyn/src/LanguageServer/Protocol/Workspaces/LspWorkspaceManagerFactory.cs +++ b/src/roslyn/src/LanguageServer/Protocol/Workspaces/LspWorkspaceManagerFactory.cs @@ -11,23 +11,16 @@ namespace Microsoft.CodeAnalysis.LanguageServer; [ExportCSharpVisualBasicLspServiceFactory(typeof(LspWorkspaceManager)), Shared] -internal class LspWorkspaceManagerFactory : ILspServiceFactory +[method: ImportingConstructor] +[method: Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] +internal class LspWorkspaceManagerFactory(LspWorkspaceRegistrationService lspWorkspaceRegistrationService) : ILspServiceFactory { - private readonly LspWorkspaceRegistrationService _workspaceRegistrationService; - - [ImportingConstructor] - [Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] - public LspWorkspaceManagerFactory(LspWorkspaceRegistrationService lspWorkspaceRegistrationService) - { - _workspaceRegistrationService = lspWorkspaceRegistrationService; - } - public ILspService CreateILspService(LspServices lspServices, WellKnownLspServerKinds serverKind) { var logger = lspServices.GetRequiredService(); var miscFilesWorkspace = lspServices.GetService(); var languageInfoProvider = lspServices.GetRequiredService(); var telemetryLogger = lspServices.GetRequiredService(); - return new LspWorkspaceManager(logger, miscFilesWorkspace, _workspaceRegistrationService, languageInfoProvider, telemetryLogger); + return new LspWorkspaceManager(logger, miscFilesWorkspace, lspWorkspaceRegistrationService, languageInfoProvider, telemetryLogger); } } diff --git a/src/roslyn/src/Test/PdbUtilities/EditAndContinue/EditAndContinueTest.GenerationVerifier.cs b/src/roslyn/src/Test/PdbUtilities/EditAndContinue/EditAndContinueTest.GenerationVerifier.cs index 17cf4dbc1d5..63be4ad35ba 100644 --- a/src/roslyn/src/Test/PdbUtilities/EditAndContinue/EditAndContinueTest.GenerationVerifier.cs +++ b/src/roslyn/src/Test/PdbUtilities/EditAndContinue/EditAndContinueTest.GenerationVerifier.cs @@ -181,11 +181,22 @@ internal void VerifyPdb(string qualifiedMemberName, string expectedPdb, PdbValid internal void VerifyCustomDebugInformation(string qualifiedMemberName, string expectedPdb) => VerifyPdb(qualifiedMemberName, expectedPdb, PdbValidationOptions.ExcludeDocuments | PdbValidationOptions.ExcludeSequencePoints | PdbValidationOptions.ExcludeScopes); - internal void VerifyIL(string expectedIL) + internal void VerifyEncFieldRvaData(string expected) => Verify(() => { Debug.Assert(generationInfo.CompilationDifference != null); - generationInfo.CompilationDifference.VerifyIL(expectedIL); + + var actual = ILValidation.DumpEncDeltaFieldData(generationInfo.CompilationDifference.ILDelta, readers); + AssertEx.AssertEqualToleratingWhitespaceDifferences(expected, actual, escapeQuotes: false); + }); + + internal void VerifyIL(string expected) + => Verify(() => + { + Debug.Assert(generationInfo.CompilationDifference != null); + + var actual = ILValidation.DumpEncDeltaMethodBodies(generationInfo.CompilationDifference.ILDelta, readers); + AssertEx.AssertEqualToleratingWhitespaceDifferences(expected, actual, escapeQuotes: false); }); internal void VerifyIL(string qualifiedMemberName, string expectedIL) diff --git a/src/roslyn/src/Test/PdbUtilities/EditAndContinue/EditAndContinueTest.cs b/src/roslyn/src/Test/PdbUtilities/EditAndContinue/EditAndContinueTest.cs index d9f5de65aa9..6734d072eb3 100644 --- a/src/roslyn/src/Test/PdbUtilities/EditAndContinue/EditAndContinueTest.cs +++ b/src/roslyn/src/Test/PdbUtilities/EditAndContinue/EditAndContinueTest.cs @@ -10,6 +10,7 @@ using System.Reflection.Metadata; using System.Runtime.InteropServices; using System.Text; +using Microsoft.CodeAnalysis.CodeGen; using Microsoft.CodeAnalysis.Emit; using Microsoft.CodeAnalysis.Test.Utilities; using Roslyn.Test.Utilities; @@ -70,16 +71,16 @@ internal TSelf AddBaseline(string source, Action? validator return This; } - internal TSelf AddGeneration(string source, SemanticEditDescription[] edits, Action validator) - => AddGeneration(source, _ => edits, validator); + internal TSelf AddGeneration(string source, SemanticEditDescription[] edits, Action validator, EmitDifferenceOptions? options = null) + => AddGeneration(source, _ => edits, validator, options); - internal TSelf AddGeneration(string source, Func edits, Action validator) - => AddGeneration(source, edits, validator, expectedErrors: []); + internal TSelf AddGeneration(string source, Func edits, Action validator, EmitDifferenceOptions? options = null) + => AddGeneration(source, edits, validator, expectedErrors: [], options); - internal TSelf AddGeneration(string source, SemanticEditDescription[] edits, DiagnosticDescription[] expectedErrors) - => AddGeneration(source, _ => edits, validator: static _ => { }, expectedErrors); + internal TSelf AddGeneration(string source, SemanticEditDescription[] edits, DiagnosticDescription[] expectedErrors, EmitDifferenceOptions? options = null) + => AddGeneration(source, _ => edits, validator: static _ => { }, expectedErrors, options); - private TSelf AddGeneration(string source, Func edits, Action validator, DiagnosticDescription[] expectedErrors) + private TSelf AddGeneration(string source, Func edits, Action validator, DiagnosticDescription[] expectedErrors, EmitDifferenceOptions? options = null) { _hasVerified = false; @@ -97,7 +98,7 @@ private TSelf AddGeneration(string source, Func d.Severity == DiagnosticSeverity.Error).Verify(expectedErrors); if (expectedErrors is not []) diff --git a/src/roslyn/src/Tools/ExternalAccess/Xaml/External/XamlCommandAttribute.cs b/src/roslyn/src/Tools/ExternalAccess/Xaml/External/XamlCommandAttribute.cs index 039cefb7339..1a6160a6246 100644 --- a/src/roslyn/src/Tools/ExternalAccess/Xaml/External/XamlCommandAttribute.cs +++ b/src/roslyn/src/Tools/ExternalAccess/Xaml/External/XamlCommandAttribute.cs @@ -10,9 +10,4 @@ namespace Microsoft.CodeAnalysis.ExternalAccess.Xaml; [MetadataAttribute] [AttributeUsage(AttributeTargets.Class, AllowMultiple = true)] -internal sealed class XamlCommandAttribute : CommandAttribute -{ - public XamlCommandAttribute(string command) : base(command) - { - } -} +internal sealed class XamlCommandAttribute(string command) : CommandAttribute(command); diff --git a/src/roslyn/src/Tools/SemanticSearch/ReferenceAssemblies/ApiSet/Microsoft.CodeAnalysis.VisualBasic.txt b/src/roslyn/src/Tools/SemanticSearch/ReferenceAssemblies/ApiSet/Microsoft.CodeAnalysis.VisualBasic.txt new file mode 100644 index 00000000000..cdb4edfb34f --- /dev/null +++ b/src/roslyn/src/Tools/SemanticSearch/ReferenceAssemblies/ApiSet/Microsoft.CodeAnalysis.VisualBasic.txt @@ -0,0 +1,9 @@ ++T:* +-T:Microsoft.CodeAnalysis.VisualBasic.VisualBasicCommandLine* +-M:Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.#ctor* +-M:Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.CommonWithCryptoKeyContainer* +-M:Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.CommonWithCryptoKeyFile* +-M:Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.CommonWithCryptoPublicKey* +-M:Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithCryptoKeyContainer* +-M:Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithCryptoKeyFile* +-M:Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithCryptoPublicKey* \ No newline at end of file diff --git a/src/roslyn/src/Tools/SemanticSearch/ReferenceAssemblies/Apis/Microsoft.CodeAnalysis.VisualBasic.txt b/src/roslyn/src/Tools/SemanticSearch/ReferenceAssemblies/Apis/Microsoft.CodeAnalysis.VisualBasic.txt new file mode 100644 index 00000000000..d2222ff6957 --- /dev/null +++ b/src/roslyn/src/Tools/SemanticSearch/ReferenceAssemblies/Apis/Microsoft.CodeAnalysis.VisualBasic.txt @@ -0,0 +1,6154 @@ +# Generated, do not update manually +Microsoft.CodeAnalysis.VisualBasic.AggregateClauseSymbolInfo +Microsoft.CodeAnalysis.VisualBasic.AggregateClauseSymbolInfo.get_Select1 +Microsoft.CodeAnalysis.VisualBasic.AggregateClauseSymbolInfo.get_Select2 +Microsoft.CodeAnalysis.VisualBasic.AwaitExpressionInfo +Microsoft.CodeAnalysis.VisualBasic.AwaitExpressionInfo.get_GetAwaiterMethod +Microsoft.CodeAnalysis.VisualBasic.AwaitExpressionInfo.get_GetResultMethod +Microsoft.CodeAnalysis.VisualBasic.AwaitExpressionInfo.get_IsCompletedProperty +Microsoft.CodeAnalysis.VisualBasic.CollectionRangeVariableSymbolInfo +Microsoft.CodeAnalysis.VisualBasic.CollectionRangeVariableSymbolInfo.get_AsClauseConversion +Microsoft.CodeAnalysis.VisualBasic.CollectionRangeVariableSymbolInfo.get_SelectMany +Microsoft.CodeAnalysis.VisualBasic.CollectionRangeVariableSymbolInfo.get_ToQueryableCollectionConversion +Microsoft.CodeAnalysis.VisualBasic.Conversion +Microsoft.CodeAnalysis.VisualBasic.Conversion.Equals(Microsoft.CodeAnalysis.VisualBasic.Conversion) +Microsoft.CodeAnalysis.VisualBasic.Conversion.Equals(System.Object) +Microsoft.CodeAnalysis.VisualBasic.Conversion.GetHashCode +Microsoft.CodeAnalysis.VisualBasic.Conversion.ToCommonConversion +Microsoft.CodeAnalysis.VisualBasic.Conversion.ToString +Microsoft.CodeAnalysis.VisualBasic.Conversion.get_Exists +Microsoft.CodeAnalysis.VisualBasic.Conversion.get_IsAnonymousDelegate +Microsoft.CodeAnalysis.VisualBasic.Conversion.get_IsArray +Microsoft.CodeAnalysis.VisualBasic.Conversion.get_IsBoolean +Microsoft.CodeAnalysis.VisualBasic.Conversion.get_IsDefault +Microsoft.CodeAnalysis.VisualBasic.Conversion.get_IsIdentity +Microsoft.CodeAnalysis.VisualBasic.Conversion.get_IsLambda +Microsoft.CodeAnalysis.VisualBasic.Conversion.get_IsNarrowing +Microsoft.CodeAnalysis.VisualBasic.Conversion.get_IsNullableValueType +Microsoft.CodeAnalysis.VisualBasic.Conversion.get_IsNumeric +Microsoft.CodeAnalysis.VisualBasic.Conversion.get_IsReference +Microsoft.CodeAnalysis.VisualBasic.Conversion.get_IsString +Microsoft.CodeAnalysis.VisualBasic.Conversion.get_IsTypeParameter +Microsoft.CodeAnalysis.VisualBasic.Conversion.get_IsUserDefined +Microsoft.CodeAnalysis.VisualBasic.Conversion.get_IsValueType +Microsoft.CodeAnalysis.VisualBasic.Conversion.get_IsWidening +Microsoft.CodeAnalysis.VisualBasic.Conversion.get_MethodSymbol +Microsoft.CodeAnalysis.VisualBasic.Conversion.op_Equality(Microsoft.CodeAnalysis.VisualBasic.Conversion,Microsoft.CodeAnalysis.VisualBasic.Conversion) +Microsoft.CodeAnalysis.VisualBasic.Conversion.op_Inequality(Microsoft.CodeAnalysis.VisualBasic.Conversion,Microsoft.CodeAnalysis.VisualBasic.Conversion) +Microsoft.CodeAnalysis.VisualBasic.ForEachStatementInfo +Microsoft.CodeAnalysis.VisualBasic.ForEachStatementInfo.get_CurrentConversion +Microsoft.CodeAnalysis.VisualBasic.ForEachStatementInfo.get_CurrentProperty +Microsoft.CodeAnalysis.VisualBasic.ForEachStatementInfo.get_DisposeMethod +Microsoft.CodeAnalysis.VisualBasic.ForEachStatementInfo.get_ElementConversion +Microsoft.CodeAnalysis.VisualBasic.ForEachStatementInfo.get_ElementType +Microsoft.CodeAnalysis.VisualBasic.ForEachStatementInfo.get_GetEnumeratorMethod +Microsoft.CodeAnalysis.VisualBasic.ForEachStatementInfo.get_MoveNextMethod +Microsoft.CodeAnalysis.VisualBasic.GeneratedExtensionSyntaxFacts +Microsoft.CodeAnalysis.VisualBasic.GeneratedExtensionSyntaxFacts.GetText(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.GlobalImport +Microsoft.CodeAnalysis.VisualBasic.GlobalImport.Equals(Microsoft.CodeAnalysis.VisualBasic.GlobalImport) +Microsoft.CodeAnalysis.VisualBasic.GlobalImport.Equals(System.Object) +Microsoft.CodeAnalysis.VisualBasic.GlobalImport.GetHashCode +Microsoft.CodeAnalysis.VisualBasic.GlobalImport.Parse(System.Collections.Generic.IEnumerable{System.String}) +Microsoft.CodeAnalysis.VisualBasic.GlobalImport.Parse(System.Collections.Generic.IEnumerable{System.String},System.Collections.Immutable.ImmutableArray{Microsoft.CodeAnalysis.Diagnostic}@) +Microsoft.CodeAnalysis.VisualBasic.GlobalImport.Parse(System.String) +Microsoft.CodeAnalysis.VisualBasic.GlobalImport.Parse(System.String,System.Collections.Immutable.ImmutableArray{Microsoft.CodeAnalysis.Diagnostic}@) +Microsoft.CodeAnalysis.VisualBasic.GlobalImport.Parse(System.String[]) +Microsoft.CodeAnalysis.VisualBasic.GlobalImport.get_Clause +Microsoft.CodeAnalysis.VisualBasic.GlobalImport.get_Name +Microsoft.CodeAnalysis.VisualBasic.GlobalImport.op_Equality(Microsoft.CodeAnalysis.VisualBasic.GlobalImport,Microsoft.CodeAnalysis.VisualBasic.GlobalImport) +Microsoft.CodeAnalysis.VisualBasic.GlobalImport.op_Inequality(Microsoft.CodeAnalysis.VisualBasic.GlobalImport,Microsoft.CodeAnalysis.VisualBasic.GlobalImport) +Microsoft.CodeAnalysis.VisualBasic.HandledEvent +Microsoft.CodeAnalysis.VisualBasic.HandledEvent.get_EventContainer +Microsoft.CodeAnalysis.VisualBasic.HandledEvent.get_EventSymbol +Microsoft.CodeAnalysis.VisualBasic.HandledEvent.get_HandlesKind +Microsoft.CodeAnalysis.VisualBasic.HandledEvent.get_WithEventsSourceProperty +Microsoft.CodeAnalysis.VisualBasic.HandledEventKind +Microsoft.CodeAnalysis.VisualBasic.HandledEventKind.Me +Microsoft.CodeAnalysis.VisualBasic.HandledEventKind.MyBase +Microsoft.CodeAnalysis.VisualBasic.HandledEventKind.MyClass +Microsoft.CodeAnalysis.VisualBasic.HandledEventKind.WithEvents +Microsoft.CodeAnalysis.VisualBasic.HandledEventKind.value__ +Microsoft.CodeAnalysis.VisualBasic.LanguageVersion +Microsoft.CodeAnalysis.VisualBasic.LanguageVersion.Default +Microsoft.CodeAnalysis.VisualBasic.LanguageVersion.Latest +Microsoft.CodeAnalysis.VisualBasic.LanguageVersion.VisualBasic10 +Microsoft.CodeAnalysis.VisualBasic.LanguageVersion.VisualBasic11 +Microsoft.CodeAnalysis.VisualBasic.LanguageVersion.VisualBasic12 +Microsoft.CodeAnalysis.VisualBasic.LanguageVersion.VisualBasic14 +Microsoft.CodeAnalysis.VisualBasic.LanguageVersion.VisualBasic15 +Microsoft.CodeAnalysis.VisualBasic.LanguageVersion.VisualBasic15_3 +Microsoft.CodeAnalysis.VisualBasic.LanguageVersion.VisualBasic15_5 +Microsoft.CodeAnalysis.VisualBasic.LanguageVersion.VisualBasic16 +Microsoft.CodeAnalysis.VisualBasic.LanguageVersion.VisualBasic16_9 +Microsoft.CodeAnalysis.VisualBasic.LanguageVersion.VisualBasic17_13 +Microsoft.CodeAnalysis.VisualBasic.LanguageVersion.VisualBasic9 +Microsoft.CodeAnalysis.VisualBasic.LanguageVersion.value__ +Microsoft.CodeAnalysis.VisualBasic.LanguageVersionFacts +Microsoft.CodeAnalysis.VisualBasic.LanguageVersionFacts.MapSpecifiedToEffectiveVersion(Microsoft.CodeAnalysis.VisualBasic.LanguageVersion) +Microsoft.CodeAnalysis.VisualBasic.LanguageVersionFacts.ToDisplayString(Microsoft.CodeAnalysis.VisualBasic.LanguageVersion) +Microsoft.CodeAnalysis.VisualBasic.LanguageVersionFacts.TryParse(System.String,Microsoft.CodeAnalysis.VisualBasic.LanguageVersion@) +Microsoft.CodeAnalysis.VisualBasic.LocalizableErrorArgument +Microsoft.CodeAnalysis.VisualBasic.LocalizableErrorArgument.ToString +Microsoft.CodeAnalysis.VisualBasic.LocalizableErrorArgument.ToString_IFormattable(System.String,System.IFormatProvider) +Microsoft.CodeAnalysis.VisualBasic.OptionStrict +Microsoft.CodeAnalysis.VisualBasic.OptionStrict.Custom +Microsoft.CodeAnalysis.VisualBasic.OptionStrict.Off +Microsoft.CodeAnalysis.VisualBasic.OptionStrict.On +Microsoft.CodeAnalysis.VisualBasic.OptionStrict.value__ +Microsoft.CodeAnalysis.VisualBasic.PredefinedPreprocessorSymbols +Microsoft.CodeAnalysis.VisualBasic.PredefinedPreprocessorSymbols.AddPredefinedPreprocessorSymbols(Microsoft.CodeAnalysis.OutputKind,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.Object}}) +Microsoft.CodeAnalysis.VisualBasic.PredefinedPreprocessorSymbols.AddPredefinedPreprocessorSymbols(Microsoft.CodeAnalysis.OutputKind,System.Collections.Generic.KeyValuePair{System.String,System.Object}[]) +Microsoft.CodeAnalysis.VisualBasic.PredefinedPreprocessorSymbols.AddPredefinedPreprocessorSymbols(Microsoft.CodeAnalysis.OutputKind,System.Collections.Immutable.ImmutableArray{System.Collections.Generic.KeyValuePair{System.String,System.Object}}) +Microsoft.CodeAnalysis.VisualBasic.SymbolDisplay +Microsoft.CodeAnalysis.VisualBasic.SymbolDisplay.FormatPrimitive(System.Object,System.Boolean,System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.SymbolDisplay.ToDisplayParts(Microsoft.CodeAnalysis.ISymbol,Microsoft.CodeAnalysis.SymbolDisplayFormat) +Microsoft.CodeAnalysis.VisualBasic.SymbolDisplay.ToDisplayString(Microsoft.CodeAnalysis.ISymbol,Microsoft.CodeAnalysis.SymbolDisplayFormat) +Microsoft.CodeAnalysis.VisualBasic.SymbolDisplay.ToMinimalDisplayParts(Microsoft.CodeAnalysis.ISymbol,Microsoft.CodeAnalysis.SemanticModel,System.Int32,Microsoft.CodeAnalysis.SymbolDisplayFormat) +Microsoft.CodeAnalysis.VisualBasic.SymbolDisplay.ToMinimalDisplayString(Microsoft.CodeAnalysis.ISymbol,Microsoft.CodeAnalysis.SemanticModel,System.Int32,Microsoft.CodeAnalysis.SymbolDisplayFormat) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax.AddStatements(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax.WithAccessorStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax.WithBegin(Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax.WithBlockStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBaseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax.WithEnd(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax.WithEndAccessorStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax.WithEndBlockStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax.WithStatements(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax.get_AccessorStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax.get_Begin +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax.get_BlockStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax.get_End +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax.get_EndAccessorStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax.get_EndBlockStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax.get_Statements +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax.AddAttributeLists(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax.AddModifiers(Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax.AddParameterListParameters(Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax.WithAccessorKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax.WithAttributeLists(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax.WithDeclarationKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax.WithKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax.WithModifiers(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax.WithParameterList(Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax.get_AccessorKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax.get_AttributeLists +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax.get_DeclarationKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax.get_Keyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax.get_Modifiers +Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax.get_ParameterList +Microsoft.CodeAnalysis.VisualBasic.Syntax.AddRemoveHandlerStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.AddRemoveHandlerStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AddRemoveHandlerStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AddRemoveHandlerStatementSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AddRemoveHandlerStatementSyntax.WithAddHandlerOrRemoveHandlerKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AddRemoveHandlerStatementSyntax.WithCommaToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AddRemoveHandlerStatementSyntax.WithDelegateExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AddRemoveHandlerStatementSyntax.WithEventExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AddRemoveHandlerStatementSyntax.get_AddHandlerOrRemoveHandlerKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.AddRemoveHandlerStatementSyntax.get_CommaToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.AddRemoveHandlerStatementSyntax.get_DelegateExpression +Microsoft.CodeAnalysis.VisualBasic.Syntax.AddRemoveHandlerStatementSyntax.get_EventExpression +Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregateClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregateClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregateClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregateClauseSyntax.AddAdditionalQueryOperators(Microsoft.CodeAnalysis.VisualBasic.Syntax.QueryClauseSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregateClauseSyntax.AddAggregationVariables(Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregateClauseSyntax.AddVariables(Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregateClauseSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.QueryClauseSyntax},Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregateClauseSyntax.WithAdditionalQueryOperators(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.QueryClauseSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregateClauseSyntax.WithAggregateKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregateClauseSyntax.WithAggregationVariables(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregateClauseSyntax.WithIntoKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregateClauseSyntax.WithVariables(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregateClauseSyntax.get_AdditionalQueryOperators +Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregateClauseSyntax.get_AggregateKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregateClauseSyntax.get_AggregationVariables +Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregateClauseSyntax.get_IntoKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregateClauseSyntax.get_Variables +Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableNameEqualsSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax.WithAggregation(Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax.WithNameEquals(Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableNameEqualsSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax.get_Aggregation +Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax.get_NameEquals +Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.AnonymousObjectCreationExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.AnonymousObjectCreationExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AnonymousObjectCreationExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AnonymousObjectCreationExpressionSyntax.AddAttributeLists(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AnonymousObjectCreationExpressionSyntax.AddInitializerInitializers(Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldInitializerSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AnonymousObjectCreationExpressionSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectMemberInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AnonymousObjectCreationExpressionSyntax.WithAttributeLists(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AnonymousObjectCreationExpressionSyntax.WithInitializer(Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectMemberInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AnonymousObjectCreationExpressionSyntax.WithNewKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AnonymousObjectCreationExpressionSyntax.get_AttributeLists +Microsoft.CodeAnalysis.VisualBasic.Syntax.AnonymousObjectCreationExpressionSyntax.get_Initializer +Microsoft.CodeAnalysis.VisualBasic.Syntax.AnonymousObjectCreationExpressionSyntax.get_NewKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax.AddArguments(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentSyntax},Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax.WithArguments(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax.WithCloseParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax.WithOpenParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax.get_Arguments +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax.get_CloseParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax.get_OpenParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentSyntax.GetExpression +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentSyntax.get_IsNamed +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentSyntax.get_IsOmitted +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayCreationExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayCreationExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayCreationExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayCreationExpressionSyntax.AddArrayBoundsArguments(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayCreationExpressionSyntax.AddAttributeLists(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayCreationExpressionSyntax.AddInitializerInitializers(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayCreationExpressionSyntax.AddRankSpecifiers(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayRankSpecifierSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayCreationExpressionSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayRankSpecifierSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayCreationExpressionSyntax.WithArrayBounds(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayCreationExpressionSyntax.WithAttributeLists(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayCreationExpressionSyntax.WithInitializer(Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayCreationExpressionSyntax.WithNewKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayCreationExpressionSyntax.WithRankSpecifiers(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayRankSpecifierSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayCreationExpressionSyntax.WithType(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayCreationExpressionSyntax.get_ArrayBounds +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayCreationExpressionSyntax.get_AttributeLists +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayCreationExpressionSyntax.get_Initializer +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayCreationExpressionSyntax.get_NewKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayCreationExpressionSyntax.get_RankSpecifiers +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayCreationExpressionSyntax.get_Type +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayRankSpecifierSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayRankSpecifierSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayRankSpecifierSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayRankSpecifierSyntax.AddCommaTokens(Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayRankSpecifierSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayRankSpecifierSyntax.WithCloseParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayRankSpecifierSyntax.WithCommaTokens(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayRankSpecifierSyntax.WithOpenParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayRankSpecifierSyntax.get_CloseParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayRankSpecifierSyntax.get_CommaTokens +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayRankSpecifierSyntax.get_OpenParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayRankSpecifierSyntax.get_Rank +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayTypeSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayTypeSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayTypeSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayTypeSyntax.AddRankSpecifiers(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayRankSpecifierSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayTypeSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayRankSpecifierSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayTypeSyntax.WithElementType(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayTypeSyntax.WithRankSpecifiers(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayRankSpecifierSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayTypeSyntax.get_ElementType +Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayTypeSyntax.get_RankSpecifiers +Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax.WithAsKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax.get_AsKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.AsNewClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.AsNewClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AsNewClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AsNewClauseSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.NewExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AsNewClauseSyntax.WithAsKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AsNewClauseSyntax.WithNewExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.NewExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AsNewClauseSyntax.get_AsKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.AsNewClauseSyntax.get_NewExpression +Microsoft.CodeAnalysis.VisualBasic.Syntax.AssignmentStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.AssignmentStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AssignmentStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AssignmentStatementSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AssignmentStatementSyntax.WithLeft(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AssignmentStatementSyntax.WithOperatorToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AssignmentStatementSyntax.WithRight(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AssignmentStatementSyntax.get_Left +Microsoft.CodeAnalysis.VisualBasic.Syntax.AssignmentStatementSyntax.get_OperatorToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.AssignmentStatementSyntax.get_Right +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax.AddAttributes(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax},Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax.WithAttributes(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax.WithGreaterThanToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax.WithLessThanToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax.get_Attributes +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax.get_GreaterThanToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax.get_LessThanToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax.AddArgumentListArguments(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeTargetSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax.WithArgumentList(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax.WithName(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax.WithTarget(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeTargetSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax.get_ArgumentList +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax.get_Name +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax.get_Target +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeTargetSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeTargetSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeTargetSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeTargetSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeTargetSyntax.WithAttributeModifier(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeTargetSyntax.WithColonToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeTargetSyntax.get_AttributeModifier +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeTargetSyntax.get_ColonToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributesStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributesStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributesStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributesStatementSyntax.AddAttributeLists(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributesStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributesStatementSyntax.WithAttributeLists(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributesStatementSyntax.get_AttributeLists +Microsoft.CodeAnalysis.VisualBasic.Syntax.AwaitExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.AwaitExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AwaitExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AwaitExpressionSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AwaitExpressionSyntax.WithAwaitKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AwaitExpressionSyntax.WithExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.AwaitExpressionSyntax.get_AwaitKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.AwaitExpressionSyntax.get_Expression +Microsoft.CodeAnalysis.VisualBasic.Syntax.BadDirectiveTriviaSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.BadDirectiveTriviaSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.BadDirectiveTriviaSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.BadDirectiveTriviaSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.BadDirectiveTriviaSyntax.WithHashToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.BadDirectiveTriviaSyntax.get_HashToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.BaseXmlAttributeSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryConditionalExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryConditionalExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryConditionalExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryConditionalExpressionSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryConditionalExpressionSyntax.WithCloseParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryConditionalExpressionSyntax.WithCommaToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryConditionalExpressionSyntax.WithFirstExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryConditionalExpressionSyntax.WithIfKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryConditionalExpressionSyntax.WithOpenParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryConditionalExpressionSyntax.WithSecondExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryConditionalExpressionSyntax.get_CloseParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryConditionalExpressionSyntax.get_CommaToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryConditionalExpressionSyntax.get_FirstExpression +Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryConditionalExpressionSyntax.get_IfKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryConditionalExpressionSyntax.get_OpenParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryConditionalExpressionSyntax.get_SecondExpression +Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryExpressionSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryExpressionSyntax.WithLeft(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryExpressionSyntax.WithOperatorToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryExpressionSyntax.WithRight(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryExpressionSyntax.get_Left +Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryExpressionSyntax.get_OperatorToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryExpressionSyntax.get_Right +Microsoft.CodeAnalysis.VisualBasic.Syntax.CTypeExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.CTypeExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CTypeExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CTypeExpressionSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CTypeExpressionSyntax.WithCloseParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CTypeExpressionSyntax.WithCommaToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CTypeExpressionSyntax.WithExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CTypeExpressionSyntax.WithKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CTypeExpressionSyntax.WithOpenParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CTypeExpressionSyntax.WithType(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CTypeExpressionSyntax.get_CloseParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.CTypeExpressionSyntax.get_CommaToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.CTypeExpressionSyntax.get_Expression +Microsoft.CodeAnalysis.VisualBasic.Syntax.CTypeExpressionSyntax.get_Keyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.CTypeExpressionSyntax.get_OpenParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.CTypeExpressionSyntax.get_Type +Microsoft.CodeAnalysis.VisualBasic.Syntax.CallStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.CallStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CallStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CallStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CallStatementSyntax.WithCallKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CallStatementSyntax.WithInvocation(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CallStatementSyntax.get_CallKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.CallStatementSyntax.get_Invocation +Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseBlockSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseBlockSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseBlockSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseBlockSyntax.AddBeginCases(Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseClauseSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseBlockSyntax.AddCaseStatementCases(Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseClauseSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseBlockSyntax.AddStatements(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseBlockSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseBlockSyntax.WithBegin(Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseBlockSyntax.WithCaseStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseBlockSyntax.WithStatements(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseBlockSyntax.get_Begin +Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseBlockSyntax.get_CaseStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseBlockSyntax.get_Statements +Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseStatementSyntax.AddCases(Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseClauseSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseStatementSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseClauseSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseStatementSyntax.WithCaseKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseStatementSyntax.WithCases(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseClauseSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseStatementSyntax.get_CaseKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseStatementSyntax.get_Cases +Microsoft.CodeAnalysis.VisualBasic.Syntax.CastExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.CastExpressionSyntax.WithCloseParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CastExpressionSyntax.WithCommaToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CastExpressionSyntax.WithExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CastExpressionSyntax.WithKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CastExpressionSyntax.WithOpenParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CastExpressionSyntax.WithType(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CastExpressionSyntax.get_CloseParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.CastExpressionSyntax.get_CommaToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.CastExpressionSyntax.get_Expression +Microsoft.CodeAnalysis.VisualBasic.Syntax.CastExpressionSyntax.get_Keyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.CastExpressionSyntax.get_OpenParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.CastExpressionSyntax.get_Type +Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchBlockSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchBlockSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchBlockSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchBlockSyntax.AddStatements(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchBlockSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchBlockSyntax.WithCatchStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchBlockSyntax.WithStatements(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchBlockSyntax.get_CatchStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchBlockSyntax.get_Statements +Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchFilterClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchFilterClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchFilterClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchFilterClauseSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchFilterClauseSyntax.WithFilter(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchFilterClauseSyntax.WithWhenKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchFilterClauseSyntax.get_Filter +Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchFilterClauseSyntax.get_WhenKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchFilterClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchStatementSyntax.WithAsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchStatementSyntax.WithCatchKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchStatementSyntax.WithIdentifierName(Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchStatementSyntax.WithWhenClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchFilterClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchStatementSyntax.get_AsClause +Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchStatementSyntax.get_CatchKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchStatementSyntax.get_IdentifierName +Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchStatementSyntax.get_WhenClause +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassBlockSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassBlockSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassBlockSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassBlockSyntax.AddImplements(Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassBlockSyntax.AddInherits(Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassBlockSyntax.AddMembers(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassBlockSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassBlockSyntax.WithBegin(Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassBlockSyntax.WithBlockStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassBlockSyntax.WithClassStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassBlockSyntax.WithEnd(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassBlockSyntax.WithEndBlockStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassBlockSyntax.WithEndClassStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassBlockSyntax.WithImplements(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassBlockSyntax.WithInherits(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassBlockSyntax.WithMembers(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassBlockSyntax.get_Begin +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassBlockSyntax.get_BlockStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassBlockSyntax.get_ClassStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassBlockSyntax.get_End +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassBlockSyntax.get_EndBlockStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassBlockSyntax.get_EndClassStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassBlockSyntax.get_Implements +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassBlockSyntax.get_Inherits +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassBlockSyntax.get_Members +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassStatementSyntax.AddAttributeLists(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassStatementSyntax.AddModifiers(Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassStatementSyntax.AddTypeParameterListParameters(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassStatementSyntax.WithAttributeLists(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassStatementSyntax.WithClassKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassStatementSyntax.WithDeclarationKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassStatementSyntax.WithIdentifier(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassStatementSyntax.WithKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassStatementSyntax.WithModifiers(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassStatementSyntax.WithTypeParameterList(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassStatementSyntax.get_AttributeLists +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassStatementSyntax.get_ClassKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassStatementSyntax.get_DeclarationKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassStatementSyntax.get_Identifier +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassStatementSyntax.get_Keyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassStatementSyntax.get_Modifiers +Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassStatementSyntax.get_TypeParameterList +Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionInitializerSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionInitializerSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionInitializerSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionInitializerSyntax.AddInitializers(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionInitializerSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax},Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionInitializerSyntax.WithCloseBraceToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionInitializerSyntax.WithInitializers(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionInitializerSyntax.WithOpenBraceToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionInitializerSyntax.get_CloseBraceToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionInitializerSyntax.get_Initializers +Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionInitializerSyntax.get_OpenBraceToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax.WithAsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax.WithExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax.WithIdentifier(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax.WithInKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax.get_AsClause +Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax.get_Expression +Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax.get_Identifier +Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax.get_InKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.CompilationUnitSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.CompilationUnitSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CompilationUnitSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CompilationUnitSyntax.AddAttributes(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributesStatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CompilationUnitSyntax.AddImports(Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CompilationUnitSyntax.AddMembers(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CompilationUnitSyntax.AddOptions(Microsoft.CodeAnalysis.VisualBasic.Syntax.OptionStatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CompilationUnitSyntax.GetReferenceDirectives +Microsoft.CodeAnalysis.VisualBasic.Syntax.CompilationUnitSyntax.Update(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.OptionStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributesStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CompilationUnitSyntax.WithAttributes(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributesStatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CompilationUnitSyntax.WithEndOfFileToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CompilationUnitSyntax.WithImports(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CompilationUnitSyntax.WithMembers(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CompilationUnitSyntax.WithOptions(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.OptionStatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CompilationUnitSyntax.get_Attributes +Microsoft.CodeAnalysis.VisualBasic.Syntax.CompilationUnitSyntax.get_EndOfFileToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.CompilationUnitSyntax.get_Imports +Microsoft.CodeAnalysis.VisualBasic.Syntax.CompilationUnitSyntax.get_Members +Microsoft.CodeAnalysis.VisualBasic.Syntax.CompilationUnitSyntax.get_Options +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConditionalAccessExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConditionalAccessExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConditionalAccessExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConditionalAccessExpressionSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConditionalAccessExpressionSyntax.WithExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConditionalAccessExpressionSyntax.WithQuestionMarkToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConditionalAccessExpressionSyntax.WithWhenNotNull(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConditionalAccessExpressionSyntax.get_Expression +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConditionalAccessExpressionSyntax.get_QuestionMarkToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConditionalAccessExpressionSyntax.get_WhenNotNull +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstDirectiveTriviaSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstDirectiveTriviaSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstDirectiveTriviaSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstDirectiveTriviaSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstDirectiveTriviaSyntax.WithConstKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstDirectiveTriviaSyntax.WithEqualsToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstDirectiveTriviaSyntax.WithHashToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstDirectiveTriviaSyntax.WithName(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstDirectiveTriviaSyntax.WithValue(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstDirectiveTriviaSyntax.get_ConstKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstDirectiveTriviaSyntax.get_EqualsToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstDirectiveTriviaSyntax.get_HashToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstDirectiveTriviaSyntax.get_Name +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstDirectiveTriviaSyntax.get_Value +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstraintSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstructorBlockSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstructorBlockSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstructorBlockSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstructorBlockSyntax.AddStatements(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstructorBlockSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstructorBlockSyntax.WithBegin(Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstructorBlockSyntax.WithBlockStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBaseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstructorBlockSyntax.WithEnd(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstructorBlockSyntax.WithEndBlockStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstructorBlockSyntax.WithEndSubStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstructorBlockSyntax.WithStatements(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstructorBlockSyntax.WithSubNewStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstructorBlockSyntax.get_Begin +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstructorBlockSyntax.get_BlockStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstructorBlockSyntax.get_End +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstructorBlockSyntax.get_EndBlockStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstructorBlockSyntax.get_EndSubStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstructorBlockSyntax.get_Statements +Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstructorBlockSyntax.get_SubNewStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.ContinueStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ContinueStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ContinueStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ContinueStatementSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ContinueStatementSyntax.WithBlockKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ContinueStatementSyntax.WithContinueKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ContinueStatementSyntax.get_BlockKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ContinueStatementSyntax.get_ContinueKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefOperatorReferenceSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefOperatorReferenceSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefOperatorReferenceSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefOperatorReferenceSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefOperatorReferenceSyntax.WithKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefOperatorReferenceSyntax.WithOperatorKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefOperatorReferenceSyntax.WithOperatorToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefOperatorReferenceSyntax.get_Keyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefOperatorReferenceSyntax.get_OperatorKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefOperatorReferenceSyntax.get_OperatorToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax.AddSignatureArgumentTypes(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignaturePartSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignatureSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax.WithAsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax.WithName(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax.WithSignature(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignatureSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax.get_AsClause +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax.get_Name +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax.get_Signature +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignaturePartSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignaturePartSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignaturePartSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignaturePartSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignaturePartSyntax.WithModifier(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignaturePartSyntax.WithType(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignaturePartSyntax.get_Modifier +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignaturePartSyntax.get_Type +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignatureSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignatureSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignatureSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignatureSyntax.AddArgumentTypes(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignaturePartSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignatureSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignaturePartSyntax},Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignatureSyntax.WithArgumentTypes(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignaturePartSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignatureSyntax.WithCloseParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignatureSyntax.WithOpenParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignatureSyntax.get_ArgumentTypes +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignatureSyntax.get_CloseParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignatureSyntax.get_OpenParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclarationStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.AddAttributeLists(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.AddModifiers(Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.AddParameterListParameters(Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.WithAliasKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.WithAliasName(Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.WithAsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.WithAttributeLists(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.WithCharsetKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.WithDeclarationKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.WithDeclareKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.WithIdentifier(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.WithKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.WithLibKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.WithLibraryName(Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.WithModifiers(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.WithParameterList(Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.WithSubOrFunctionKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.get_AliasKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.get_AliasName +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.get_AsClause +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.get_AttributeLists +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.get_CharsetKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.get_DeclarationKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.get_DeclareKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.get_Identifier +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.get_Keyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.get_LibKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.get_LibraryName +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.get_Modifiers +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.get_ParameterList +Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax.get_SubOrFunctionKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax.AddAttributeLists(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax.AddModifiers(Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax.AddParameterListParameters(Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax.AddTypeParameterListParameters(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax.WithAsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax.WithAttributeLists(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax.WithDeclarationKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax.WithDelegateKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax.WithIdentifier(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax.WithKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax.WithModifiers(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax.WithParameterList(Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax.WithSubOrFunctionKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax.WithTypeParameterList(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax.get_AsClause +Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax.get_AttributeLists +Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax.get_DeclarationKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax.get_DelegateKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax.get_Identifier +Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax.get_Keyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax.get_Modifiers +Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax.get_ParameterList +Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax.get_SubOrFunctionKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax.get_TypeParameterList +Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectCastExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectCastExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectCastExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectCastExpressionSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectCastExpressionSyntax.WithCloseParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectCastExpressionSyntax.WithCommaToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectCastExpressionSyntax.WithExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectCastExpressionSyntax.WithKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectCastExpressionSyntax.WithOpenParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectCastExpressionSyntax.WithType(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectCastExpressionSyntax.get_CloseParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectCastExpressionSyntax.get_CommaToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectCastExpressionSyntax.get_Expression +Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectCastExpressionSyntax.get_Keyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectCastExpressionSyntax.get_OpenParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectCastExpressionSyntax.get_Type +Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectiveTriviaSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectiveTriviaSyntax.GetNextDirective(System.Func{Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectiveTriviaSyntax,System.Boolean}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectiveTriviaSyntax.GetPreviousDirective(System.Func{Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectiveTriviaSyntax,System.Boolean}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectiveTriviaSyntax.GetRelatedDirectives +Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectiveTriviaSyntax.WithHashToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectiveTriviaSyntax.get_HashToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.DisableWarningDirectiveTriviaSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.DisableWarningDirectiveTriviaSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DisableWarningDirectiveTriviaSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DisableWarningDirectiveTriviaSyntax.AddErrorCodes(Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DisableWarningDirectiveTriviaSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DisableWarningDirectiveTriviaSyntax.WithDisableKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DisableWarningDirectiveTriviaSyntax.WithErrorCodes(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DisableWarningDirectiveTriviaSyntax.WithHashToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DisableWarningDirectiveTriviaSyntax.WithWarningKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DisableWarningDirectiveTriviaSyntax.get_DisableKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.DisableWarningDirectiveTriviaSyntax.get_ErrorCodes +Microsoft.CodeAnalysis.VisualBasic.Syntax.DisableWarningDirectiveTriviaSyntax.get_HashToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.DisableWarningDirectiveTriviaSyntax.get_WarningKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.DistinctClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.DistinctClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DistinctClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DistinctClauseSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DistinctClauseSyntax.WithDistinctKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DistinctClauseSyntax.get_DistinctKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.DoLoopBlockSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.DoLoopBlockSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DoLoopBlockSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DoLoopBlockSyntax.AddStatements(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DoLoopBlockSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.DoStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.LoopStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DoLoopBlockSyntax.WithDoStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.DoStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DoLoopBlockSyntax.WithLoopStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.LoopStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DoLoopBlockSyntax.WithStatements(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DoLoopBlockSyntax.get_DoStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.DoLoopBlockSyntax.get_LoopStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.DoLoopBlockSyntax.get_Statements +Microsoft.CodeAnalysis.VisualBasic.Syntax.DoStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.DoStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DoStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DoStatementSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DoStatementSyntax.WithDoKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DoStatementSyntax.WithWhileOrUntilClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DoStatementSyntax.get_DoKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.DoStatementSyntax.get_WhileOrUntilClause +Microsoft.CodeAnalysis.VisualBasic.Syntax.DocumentationCommentTriviaSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.DocumentationCommentTriviaSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DocumentationCommentTriviaSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DocumentationCommentTriviaSyntax.AddContent(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DocumentationCommentTriviaSyntax.Update(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DocumentationCommentTriviaSyntax.WithContent(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.DocumentationCommentTriviaSyntax.get_Content +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseBlockSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseBlockSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseBlockSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseBlockSyntax.AddStatements(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseBlockSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseBlockSyntax.WithElseStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseBlockSyntax.WithStatements(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseBlockSyntax.get_ElseStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseBlockSyntax.get_Statements +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseCaseClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseCaseClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseCaseClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseCaseClauseSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseCaseClauseSyntax.WithElseKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseCaseClauseSyntax.get_ElseKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseDirectiveTriviaSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseDirectiveTriviaSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseDirectiveTriviaSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseDirectiveTriviaSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseDirectiveTriviaSyntax.WithElseKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseDirectiveTriviaSyntax.WithHashToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseDirectiveTriviaSyntax.get_ElseKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseDirectiveTriviaSyntax.get_HashToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfBlockSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfBlockSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfBlockSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfBlockSyntax.AddStatements(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfBlockSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfBlockSyntax.WithElseIfStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfBlockSyntax.WithStatements(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfBlockSyntax.get_ElseIfStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfBlockSyntax.get_Statements +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfStatementSyntax.WithCondition(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfStatementSyntax.WithElseIfKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfStatementSyntax.WithThenKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfStatementSyntax.get_Condition +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfStatementSyntax.get_ElseIfKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfStatementSyntax.get_ThenKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseStatementSyntax.WithElseKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseStatementSyntax.get_ElseKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.EmptyStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.EmptyStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EmptyStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EmptyStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EmptyStatementSyntax.WithEmpty(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EmptyStatementSyntax.get_Empty +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnableWarningDirectiveTriviaSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnableWarningDirectiveTriviaSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnableWarningDirectiveTriviaSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnableWarningDirectiveTriviaSyntax.AddErrorCodes(Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnableWarningDirectiveTriviaSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnableWarningDirectiveTriviaSyntax.WithEnableKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnableWarningDirectiveTriviaSyntax.WithErrorCodes(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnableWarningDirectiveTriviaSyntax.WithHashToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnableWarningDirectiveTriviaSyntax.WithWarningKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnableWarningDirectiveTriviaSyntax.get_EnableKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnableWarningDirectiveTriviaSyntax.get_ErrorCodes +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnableWarningDirectiveTriviaSyntax.get_HashToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnableWarningDirectiveTriviaSyntax.get_WarningKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax.WithBlockKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax.WithEndKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax.get_BlockKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax.get_EndKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndExternalSourceDirectiveTriviaSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndExternalSourceDirectiveTriviaSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndExternalSourceDirectiveTriviaSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndExternalSourceDirectiveTriviaSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndExternalSourceDirectiveTriviaSyntax.WithEndKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndExternalSourceDirectiveTriviaSyntax.WithExternalSourceKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndExternalSourceDirectiveTriviaSyntax.WithHashToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndExternalSourceDirectiveTriviaSyntax.get_EndKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndExternalSourceDirectiveTriviaSyntax.get_ExternalSourceKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndExternalSourceDirectiveTriviaSyntax.get_HashToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndIfDirectiveTriviaSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndIfDirectiveTriviaSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndIfDirectiveTriviaSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndIfDirectiveTriviaSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndIfDirectiveTriviaSyntax.WithEndKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndIfDirectiveTriviaSyntax.WithHashToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndIfDirectiveTriviaSyntax.WithIfKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndIfDirectiveTriviaSyntax.get_EndKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndIfDirectiveTriviaSyntax.get_HashToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndIfDirectiveTriviaSyntax.get_IfKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndRegionDirectiveTriviaSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndRegionDirectiveTriviaSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndRegionDirectiveTriviaSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndRegionDirectiveTriviaSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndRegionDirectiveTriviaSyntax.WithEndKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndRegionDirectiveTriviaSyntax.WithHashToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndRegionDirectiveTriviaSyntax.WithRegionKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndRegionDirectiveTriviaSyntax.get_EndKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndRegionDirectiveTriviaSyntax.get_HashToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.EndRegionDirectiveTriviaSyntax.get_RegionKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumBlockSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumBlockSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumBlockSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumBlockSyntax.AddMembers(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumBlockSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumBlockSyntax.WithEndEnumStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumBlockSyntax.WithEnumStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumBlockSyntax.WithMembers(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumBlockSyntax.get_EndEnumStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumBlockSyntax.get_EnumStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumBlockSyntax.get_Members +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumMemberDeclarationSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumMemberDeclarationSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumMemberDeclarationSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumMemberDeclarationSyntax.AddAttributeLists(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumMemberDeclarationSyntax.Update(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumMemberDeclarationSyntax.WithAttributeLists(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumMemberDeclarationSyntax.WithIdentifier(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumMemberDeclarationSyntax.WithInitializer(Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumMemberDeclarationSyntax.get_AttributeLists +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumMemberDeclarationSyntax.get_Identifier +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumMemberDeclarationSyntax.get_Initializer +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumStatementSyntax.AddAttributeLists(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumStatementSyntax.AddModifiers(Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumStatementSyntax.WithAttributeLists(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumStatementSyntax.WithEnumKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumStatementSyntax.WithIdentifier(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumStatementSyntax.WithModifiers(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumStatementSyntax.WithUnderlyingType(Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumStatementSyntax.get_AttributeLists +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumStatementSyntax.get_EnumKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumStatementSyntax.get_Identifier +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumStatementSyntax.get_Modifiers +Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumStatementSyntax.get_UnderlyingType +Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax.WithEqualsToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax.WithValue(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax.get_EqualsToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax.get_Value +Microsoft.CodeAnalysis.VisualBasic.Syntax.EraseStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.EraseStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EraseStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EraseStatementSyntax.AddExpressions(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EraseStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EraseStatementSyntax.WithEraseKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EraseStatementSyntax.WithExpressions(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EraseStatementSyntax.get_EraseKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.EraseStatementSyntax.get_Expressions +Microsoft.CodeAnalysis.VisualBasic.Syntax.ErrorStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ErrorStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ErrorStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ErrorStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ErrorStatementSyntax.WithErrorKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ErrorStatementSyntax.WithErrorNumber(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ErrorStatementSyntax.get_ErrorKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ErrorStatementSyntax.get_ErrorNumber +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventBlockSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventBlockSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventBlockSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventBlockSyntax.AddAccessors(Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventBlockSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventBlockSyntax.WithAccessors(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventBlockSyntax.WithEndEventStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventBlockSyntax.WithEventStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventBlockSyntax.get_Accessors +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventBlockSyntax.get_EndEventStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventBlockSyntax.get_EventStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventContainerSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax.AddAttributeLists(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax.AddImplementsClauseInterfaceMembers(Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax.AddModifiers(Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax.AddParameterListParameters(Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax.WithAsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax.WithAttributeLists(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax.WithCustomKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax.WithDeclarationKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax.WithEventKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax.WithIdentifier(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax.WithImplementsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax.WithKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax.WithModifiers(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax.WithParameterList(Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax.get_AsClause +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax.get_AttributeLists +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax.get_CustomKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax.get_DeclarationKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax.get_EventKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax.get_Identifier +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax.get_ImplementsClause +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax.get_Keyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax.get_Modifiers +Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax.get_ParameterList +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExecutableStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExitStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExitStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExitStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExitStatementSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExitStatementSyntax.WithBlockKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExitStatementSyntax.WithExitKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExitStatementSyntax.get_BlockKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExitStatementSyntax.get_ExitKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableNameEqualsSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax.WithExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax.WithNameEquals(Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableNameEqualsSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax.get_Expression +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax.get_NameEquals +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionStatementSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionStatementSyntax.WithExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionStatementSyntax.get_Expression +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax.WithChecksum(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax.WithCloseParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax.WithExternalChecksumKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax.WithExternalSource(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax.WithFirstCommaToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax.WithGuid(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax.WithHashToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax.WithOpenParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax.WithSecondCommaToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax.get_Checksum +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax.get_CloseParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax.get_ExternalChecksumKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax.get_ExternalSource +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax.get_FirstCommaToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax.get_Guid +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax.get_HashToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax.get_OpenParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax.get_SecondCommaToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalSourceDirectiveTriviaSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalSourceDirectiveTriviaSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalSourceDirectiveTriviaSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalSourceDirectiveTriviaSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalSourceDirectiveTriviaSyntax.WithCloseParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalSourceDirectiveTriviaSyntax.WithCommaToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalSourceDirectiveTriviaSyntax.WithExternalSource(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalSourceDirectiveTriviaSyntax.WithExternalSourceKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalSourceDirectiveTriviaSyntax.WithHashToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalSourceDirectiveTriviaSyntax.WithLineStart(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalSourceDirectiveTriviaSyntax.WithOpenParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalSourceDirectiveTriviaSyntax.get_CloseParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalSourceDirectiveTriviaSyntax.get_CommaToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalSourceDirectiveTriviaSyntax.get_ExternalSource +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalSourceDirectiveTriviaSyntax.get_ExternalSourceKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalSourceDirectiveTriviaSyntax.get_HashToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalSourceDirectiveTriviaSyntax.get_LineStart +Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalSourceDirectiveTriviaSyntax.get_OpenParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldDeclarationSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldDeclarationSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldDeclarationSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldDeclarationSyntax.AddAttributeLists(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldDeclarationSyntax.AddDeclarators(Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableDeclaratorSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldDeclarationSyntax.AddModifiers(Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldDeclarationSyntax.Update(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableDeclaratorSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldDeclarationSyntax.WithAttributeLists(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldDeclarationSyntax.WithDeclarators(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableDeclaratorSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldDeclarationSyntax.WithModifiers(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldDeclarationSyntax.get_AttributeLists +Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldDeclarationSyntax.get_Declarators +Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldDeclarationSyntax.get_Modifiers +Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldInitializerSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldInitializerSyntax.WithKeyKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldInitializerSyntax.get_KeyKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.FinallyBlockSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.FinallyBlockSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FinallyBlockSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FinallyBlockSyntax.AddStatements(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FinallyBlockSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.FinallyStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FinallyBlockSyntax.WithFinallyStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.FinallyStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FinallyBlockSyntax.WithStatements(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FinallyBlockSyntax.get_FinallyStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.FinallyBlockSyntax.get_Statements +Microsoft.CodeAnalysis.VisualBasic.Syntax.FinallyStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.FinallyStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FinallyStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FinallyStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FinallyStatementSyntax.WithFinallyKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FinallyStatementSyntax.get_FinallyKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForBlockSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForBlockSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForBlockSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForBlockSyntax.AddNextStatementControlVariables(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForBlockSyntax.AddStatements(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForBlockSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.NextStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForBlockSyntax.WithForStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForBlockSyntax.WithNextStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.NextStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForBlockSyntax.WithStatements(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForBlockSyntax.get_ForOrForEachStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForBlockSyntax.get_ForStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForBlockSyntax.get_NextStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForBlockSyntax.get_Statements +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachBlockSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachBlockSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachBlockSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachBlockSyntax.AddNextStatementControlVariables(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachBlockSyntax.AddStatements(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachBlockSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.NextStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachBlockSyntax.WithForEachStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachBlockSyntax.WithNextStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.NextStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachBlockSyntax.WithStatements(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachBlockSyntax.get_ForEachStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachBlockSyntax.get_ForOrForEachStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachBlockSyntax.get_NextStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachBlockSyntax.get_Statements +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachStatementSyntax.WithControlVariable(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachStatementSyntax.WithEachKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachStatementSyntax.WithExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachStatementSyntax.WithForKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachStatementSyntax.WithInKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachStatementSyntax.get_ControlVariable +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachStatementSyntax.get_EachKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachStatementSyntax.get_Expression +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachStatementSyntax.get_ForKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachStatementSyntax.get_InKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForOrForEachBlockSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForOrForEachBlockSyntax.AddNextStatementControlVariables(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForOrForEachBlockSyntax.AddStatements(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForOrForEachBlockSyntax.WithNextStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.NextStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForOrForEachBlockSyntax.WithStatements(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForOrForEachBlockSyntax.get_ForOrForEachStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForOrForEachBlockSyntax.get_NextStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForOrForEachBlockSyntax.get_Statements +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForOrForEachStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForOrForEachStatementSyntax.WithControlVariable(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForOrForEachStatementSyntax.WithForKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForOrForEachStatementSyntax.get_ControlVariable +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForOrForEachStatementSyntax.get_ForKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStepClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStatementSyntax.WithControlVariable(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStatementSyntax.WithEqualsToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStatementSyntax.WithForKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStatementSyntax.WithFromValue(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStatementSyntax.WithStepClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStepClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStatementSyntax.WithToKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStatementSyntax.WithToValue(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStatementSyntax.get_ControlVariable +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStatementSyntax.get_EqualsToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStatementSyntax.get_ForKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStatementSyntax.get_FromValue +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStatementSyntax.get_StepClause +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStatementSyntax.get_ToKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStatementSyntax.get_ToValue +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStepClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStepClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStepClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStepClauseSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStepClauseSyntax.WithStepKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStepClauseSyntax.WithStepValue(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStepClauseSyntax.get_StepKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStepClauseSyntax.get_StepValue +Microsoft.CodeAnalysis.VisualBasic.Syntax.FromClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.FromClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FromClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FromClauseSyntax.AddVariables(Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FromClauseSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FromClauseSyntax.WithFromKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FromClauseSyntax.WithVariables(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FromClauseSyntax.get_FromKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.FromClauseSyntax.get_Variables +Microsoft.CodeAnalysis.VisualBasic.Syntax.FunctionAggregationSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.FunctionAggregationSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FunctionAggregationSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FunctionAggregationSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FunctionAggregationSyntax.WithArgument(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FunctionAggregationSyntax.WithCloseParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FunctionAggregationSyntax.WithFunctionName(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FunctionAggregationSyntax.WithOpenParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.FunctionAggregationSyntax.get_Argument +Microsoft.CodeAnalysis.VisualBasic.Syntax.FunctionAggregationSyntax.get_CloseParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.FunctionAggregationSyntax.get_FunctionName +Microsoft.CodeAnalysis.VisualBasic.Syntax.FunctionAggregationSyntax.get_OpenParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax.AddTypeArgumentListArguments(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax.WithIdentifier(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax.WithTypeArgumentList(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax.get_Identifier +Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax.get_TypeArgumentList +Microsoft.CodeAnalysis.VisualBasic.Syntax.GetTypeExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.GetTypeExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GetTypeExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GetTypeExpressionSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GetTypeExpressionSyntax.WithCloseParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GetTypeExpressionSyntax.WithGetTypeKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GetTypeExpressionSyntax.WithOpenParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GetTypeExpressionSyntax.WithType(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GetTypeExpressionSyntax.get_CloseParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.GetTypeExpressionSyntax.get_GetTypeKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.GetTypeExpressionSyntax.get_OpenParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.GetTypeExpressionSyntax.get_Type +Microsoft.CodeAnalysis.VisualBasic.Syntax.GetXmlNamespaceExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.GetXmlNamespaceExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GetXmlNamespaceExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GetXmlNamespaceExpressionSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlPrefixNameSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GetXmlNamespaceExpressionSyntax.WithCloseParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GetXmlNamespaceExpressionSyntax.WithGetXmlNamespaceKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GetXmlNamespaceExpressionSyntax.WithName(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlPrefixNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GetXmlNamespaceExpressionSyntax.WithOpenParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GetXmlNamespaceExpressionSyntax.get_CloseParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.GetXmlNamespaceExpressionSyntax.get_GetXmlNamespaceKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.GetXmlNamespaceExpressionSyntax.get_Name +Microsoft.CodeAnalysis.VisualBasic.Syntax.GetXmlNamespaceExpressionSyntax.get_OpenParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.GlobalNameSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.GlobalNameSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GlobalNameSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GlobalNameSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GlobalNameSyntax.WithGlobalKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GlobalNameSyntax.get_GlobalKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.GoToStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.GoToStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GoToStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GoToStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GoToStatementSyntax.WithGoToKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GoToStatementSyntax.WithLabel(Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GoToStatementSyntax.get_GoToKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.GoToStatementSyntax.get_Label +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupAggregationSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupAggregationSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupAggregationSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupAggregationSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupAggregationSyntax.WithGroupKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupAggregationSyntax.get_GroupKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax.AddAggregationVariables(Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax.AddItems(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax.AddKeys(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax},Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax},Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax.WithAggregationVariables(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax.WithByKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax.WithGroupKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax.WithIntoKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax.WithItems(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax.WithKeys(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax.get_AggregationVariables +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax.get_ByKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax.get_GroupKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax.get_IntoKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax.get_Items +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax.get_Keys +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax.AddAdditionalJoins(Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax.AddAggregationVariables(Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax.AddJoinConditions(Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax.AddJoinedVariables(Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax},Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax},Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax.WithAdditionalJoins(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax.WithAggregationVariables(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax.WithGroupKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax.WithIntoKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax.WithJoinConditions(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax.WithJoinKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax.WithJoinedVariables(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax.WithOnKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax.get_AdditionalJoins +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax.get_AggregationVariables +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax.get_GroupKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax.get_IntoKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax.get_JoinConditions +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax.get_JoinKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax.get_JoinedVariables +Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax.get_OnKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseItemSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseItemSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseItemSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseItemSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.EventContainerSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseItemSyntax.WithDotToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseItemSyntax.WithEventContainer(Microsoft.CodeAnalysis.VisualBasic.Syntax.EventContainerSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseItemSyntax.WithEventMember(Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseItemSyntax.get_DotToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseItemSyntax.get_EventContainer +Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseItemSyntax.get_EventMember +Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseSyntax.AddEvents(Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseItemSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseItemSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseSyntax.WithEvents(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseItemSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseSyntax.WithHandlesKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseSyntax.get_Events +Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseSyntax.get_HandlesKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax.WithIdentifier(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax.get_Identifier +Microsoft.CodeAnalysis.VisualBasic.Syntax.IfDirectiveTriviaSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.IfDirectiveTriviaSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.IfDirectiveTriviaSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.IfDirectiveTriviaSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.IfDirectiveTriviaSyntax.WithCondition(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.IfDirectiveTriviaSyntax.WithElseKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.IfDirectiveTriviaSyntax.WithHashToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.IfDirectiveTriviaSyntax.WithIfOrElseIfKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.IfDirectiveTriviaSyntax.WithThenKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.IfDirectiveTriviaSyntax.get_Condition +Microsoft.CodeAnalysis.VisualBasic.Syntax.IfDirectiveTriviaSyntax.get_ElseKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.IfDirectiveTriviaSyntax.get_HashToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.IfDirectiveTriviaSyntax.get_IfOrElseIfKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.IfDirectiveTriviaSyntax.get_ThenKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.IfStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.IfStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.IfStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.IfStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.IfStatementSyntax.WithCondition(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.IfStatementSyntax.WithIfKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.IfStatementSyntax.WithThenKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.IfStatementSyntax.get_Condition +Microsoft.CodeAnalysis.VisualBasic.Syntax.IfStatementSyntax.get_IfKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.IfStatementSyntax.get_ThenKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsClauseSyntax.AddInterfaceMembers(Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsClauseSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsClauseSyntax.WithImplementsKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsClauseSyntax.WithInterfaceMembers(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsClauseSyntax.get_ImplementsKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsClauseSyntax.get_InterfaceMembers +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax.AddTypes(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax.WithImplementsKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax.WithTypes(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax.get_ImplementsKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax.get_Types +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportAliasClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportAliasClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportAliasClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportAliasClauseSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportAliasClauseSyntax.WithEqualsToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportAliasClauseSyntax.WithIdentifier(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportAliasClauseSyntax.get_EqualsToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportAliasClauseSyntax.get_Identifier +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax.AddImportsClauses(Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax.WithImportsClauses(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax.WithImportsKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax.get_ImportsClauses +Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax.get_ImportsKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.IncompleteMemberSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.IncompleteMemberSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.IncompleteMemberSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.IncompleteMemberSyntax.AddAttributeLists(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.IncompleteMemberSyntax.AddModifiers(Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.IncompleteMemberSyntax.Update(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.IncompleteMemberSyntax.WithAttributeLists(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.IncompleteMemberSyntax.WithMissingIdentifier(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.IncompleteMemberSyntax.WithModifiers(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.Syntax.IncompleteMemberSyntax.get_AttributeLists +Microsoft.CodeAnalysis.VisualBasic.Syntax.IncompleteMemberSyntax.get_MissingIdentifier +Microsoft.CodeAnalysis.VisualBasic.Syntax.IncompleteMemberSyntax.get_Modifiers +Microsoft.CodeAnalysis.VisualBasic.Syntax.InferredFieldInitializerSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.InferredFieldInitializerSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InferredFieldInitializerSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InferredFieldInitializerSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InferredFieldInitializerSyntax.WithExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InferredFieldInitializerSyntax.WithKeyKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InferredFieldInitializerSyntax.get_Expression +Microsoft.CodeAnalysis.VisualBasic.Syntax.InferredFieldInitializerSyntax.get_KeyKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsOrImplementsStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax.AddTypes(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax.WithInheritsKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax.WithTypes(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax.get_InheritsKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax.get_Types +Microsoft.CodeAnalysis.VisualBasic.Syntax.InstanceExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.InstanceExpressionSyntax.WithKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InstanceExpressionSyntax.get_Keyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceBlockSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceBlockSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceBlockSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceBlockSyntax.AddImplements(Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceBlockSyntax.AddInherits(Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceBlockSyntax.AddMembers(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceBlockSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceBlockSyntax.WithBegin(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceBlockSyntax.WithBlockStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceBlockSyntax.WithEnd(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceBlockSyntax.WithEndBlockStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceBlockSyntax.WithEndInterfaceStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceBlockSyntax.WithImplements(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceBlockSyntax.WithInherits(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceBlockSyntax.WithInterfaceStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceBlockSyntax.WithMembers(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceBlockSyntax.get_Begin +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceBlockSyntax.get_BlockStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceBlockSyntax.get_End +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceBlockSyntax.get_EndBlockStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceBlockSyntax.get_EndInterfaceStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceBlockSyntax.get_Implements +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceBlockSyntax.get_Inherits +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceBlockSyntax.get_InterfaceStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceBlockSyntax.get_Members +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceStatementSyntax.AddAttributeLists(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceStatementSyntax.AddModifiers(Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceStatementSyntax.AddTypeParameterListParameters(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceStatementSyntax.WithAttributeLists(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceStatementSyntax.WithDeclarationKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceStatementSyntax.WithIdentifier(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceStatementSyntax.WithInterfaceKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceStatementSyntax.WithKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceStatementSyntax.WithModifiers(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceStatementSyntax.WithTypeParameterList(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceStatementSyntax.get_AttributeLists +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceStatementSyntax.get_DeclarationKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceStatementSyntax.get_Identifier +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceStatementSyntax.get_InterfaceKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceStatementSyntax.get_Keyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceStatementSyntax.get_Modifiers +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceStatementSyntax.get_TypeParameterList +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolatedStringContentSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolatedStringExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolatedStringExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolatedStringExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolatedStringExpressionSyntax.AddContents(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolatedStringContentSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolatedStringExpressionSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolatedStringContentSyntax},Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolatedStringExpressionSyntax.WithContents(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolatedStringContentSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolatedStringExpressionSyntax.WithDollarSignDoubleQuoteToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolatedStringExpressionSyntax.WithDoubleQuoteToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolatedStringExpressionSyntax.get_Contents +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolatedStringExpressionSyntax.get_DollarSignDoubleQuoteToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolatedStringExpressionSyntax.get_DoubleQuoteToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolatedStringTextSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolatedStringTextSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolatedStringTextSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolatedStringTextSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolatedStringTextSyntax.WithTextToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolatedStringTextSyntax.get_TextToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationAlignmentClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationAlignmentClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationAlignmentClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationAlignmentClauseSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationAlignmentClauseSyntax.WithCommaToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationAlignmentClauseSyntax.WithValue(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationAlignmentClauseSyntax.get_CommaToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationAlignmentClauseSyntax.get_Value +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationFormatClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationFormatClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationFormatClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationFormatClauseSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationFormatClauseSyntax.WithColonToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationFormatClauseSyntax.WithFormatStringToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationFormatClauseSyntax.get_ColonToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationFormatClauseSyntax.get_FormatStringToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationAlignmentClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationSyntax.WithAlignmentClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationAlignmentClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationSyntax.WithCloseBraceToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationSyntax.WithExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationSyntax.WithFormatClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationFormatClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationSyntax.WithOpenBraceToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationSyntax.get_AlignmentClause +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationSyntax.get_CloseBraceToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationSyntax.get_Expression +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationSyntax.get_FormatClause +Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationSyntax.get_OpenBraceToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.InvocationExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.InvocationExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InvocationExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InvocationExpressionSyntax.AddArgumentListArguments(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InvocationExpressionSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InvocationExpressionSyntax.WithArgumentList(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InvocationExpressionSyntax.WithExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.InvocationExpressionSyntax.get_ArgumentList +Microsoft.CodeAnalysis.VisualBasic.Syntax.InvocationExpressionSyntax.get_Expression +Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax.AddAdditionalJoins(Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax.AddJoinConditions(Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax.AddJoinedVariables(Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax.WithAdditionalJoins(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax.WithJoinConditions(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax.WithJoinKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax.WithJoinedVariables(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax.WithOnKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax.get_AdditionalJoins +Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax.get_JoinConditions +Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax.get_JoinKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax.get_JoinedVariables +Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax.get_OnKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax.WithEqualsKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax.WithLeft(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax.WithRight(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax.get_EqualsKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax.get_Left +Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax.get_Right +Microsoft.CodeAnalysis.VisualBasic.Syntax.KeywordEventContainerSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.KeywordEventContainerSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.KeywordEventContainerSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.KeywordEventContainerSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.KeywordEventContainerSyntax.WithKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.KeywordEventContainerSyntax.get_Keyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelStatementSyntax.WithColonToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelStatementSyntax.WithLabelToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelStatementSyntax.get_ColonToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelStatementSyntax.get_LabelToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax.WithLabelToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax.get_LabelToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaExpressionSyntax.WithSubOrFunctionHeader(Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaExpressionSyntax.get_Begin +Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaExpressionSyntax.get_SubOrFunctionHeader +Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax.AddAttributeLists(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax.AddModifiers(Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax.AddParameterListParameters(Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax.WithAsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax.WithAttributeLists(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax.WithDeclarationKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax.WithKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax.WithModifiers(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax.WithParameterList(Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax.WithSubOrFunctionKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax.get_AsClause +Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax.get_AttributeLists +Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax.get_DeclarationKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax.get_Keyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax.get_Modifiers +Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax.get_ParameterList +Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax.get_SubOrFunctionKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.LetClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.LetClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LetClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LetClauseSyntax.AddVariables(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LetClauseSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LetClauseSyntax.WithLetKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LetClauseSyntax.WithVariables(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LetClauseSyntax.get_LetKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.LetClauseSyntax.get_Variables +Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralBase +Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralBase.Binary +Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralBase.Decimal +Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralBase.Hexadecimal +Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralBase.Octal +Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralBase.value__ +Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax.WithToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax.get_Token +Microsoft.CodeAnalysis.VisualBasic.Syntax.LocalDeclarationStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.LocalDeclarationStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LocalDeclarationStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LocalDeclarationStatementSyntax.AddDeclarators(Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableDeclaratorSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LocalDeclarationStatementSyntax.AddModifiers(Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LocalDeclarationStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableDeclaratorSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LocalDeclarationStatementSyntax.WithDeclarators(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableDeclaratorSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LocalDeclarationStatementSyntax.WithModifiers(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LocalDeclarationStatementSyntax.get_Declarators +Microsoft.CodeAnalysis.VisualBasic.Syntax.LocalDeclarationStatementSyntax.get_Modifiers +Microsoft.CodeAnalysis.VisualBasic.Syntax.LoopStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.LoopStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LoopStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LoopStatementSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LoopStatementSyntax.WithLoopKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LoopStatementSyntax.WithWhileOrUntilClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.LoopStatementSyntax.get_LoopKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.LoopStatementSyntax.get_WhileOrUntilClause +Microsoft.CodeAnalysis.VisualBasic.Syntax.MeExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.MeExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MeExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MeExpressionSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MeExpressionSyntax.WithKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MeExpressionSyntax.get_Keyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.MemberAccessExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.MemberAccessExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MemberAccessExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MemberAccessExpressionSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MemberAccessExpressionSyntax.WithExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MemberAccessExpressionSyntax.WithName(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MemberAccessExpressionSyntax.WithOperatorToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MemberAccessExpressionSyntax.get_Expression +Microsoft.CodeAnalysis.VisualBasic.Syntax.MemberAccessExpressionSyntax.get_Name +Microsoft.CodeAnalysis.VisualBasic.Syntax.MemberAccessExpressionSyntax.get_OperatorToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBaseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBaseSyntax.AddAttributeLists(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBaseSyntax.AddModifiers(Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBaseSyntax.AddParameterListParameters(Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBaseSyntax.WithAttributeLists(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBaseSyntax.WithDeclarationKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBaseSyntax.WithKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBaseSyntax.WithModifiers(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBaseSyntax.WithParameterList(Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBaseSyntax.get_AttributeLists +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBaseSyntax.get_DeclarationKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBaseSyntax.get_Keyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBaseSyntax.get_Modifiers +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBaseSyntax.get_ParameterList +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockBaseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockBaseSyntax.AddStatements(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockBaseSyntax.WithBegin(Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBaseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockBaseSyntax.WithBlockStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBaseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockBaseSyntax.WithEnd(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockBaseSyntax.WithEndBlockStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockBaseSyntax.WithStatements(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockBaseSyntax.get_Begin +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockBaseSyntax.get_BlockStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockBaseSyntax.get_End +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockBaseSyntax.get_EndBlockStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockBaseSyntax.get_Statements +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockSyntax.AddStatements(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockSyntax.WithBegin(Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockSyntax.WithBlockStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBaseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockSyntax.WithEnd(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockSyntax.WithEndBlockStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockSyntax.WithEndSubOrFunctionStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockSyntax.WithStatements(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockSyntax.WithSubOrFunctionStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockSyntax.get_Begin +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockSyntax.get_BlockStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockSyntax.get_End +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockSyntax.get_EndBlockStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockSyntax.get_EndSubOrFunctionStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockSyntax.get_Statements +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockSyntax.get_SubOrFunctionStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.AddAttributeLists(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.AddHandlesClauseEvents(Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseItemSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.AddImplementsClauseInterfaceMembers(Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.AddModifiers(Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.AddParameterListParameters(Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.AddTypeParameterListParameters(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.WithAsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.WithAttributeLists(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.WithDeclarationKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.WithHandlesClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.WithIdentifier(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.WithImplementsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.WithKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.WithModifiers(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.WithParameterList(Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.WithSubOrFunctionKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.WithTypeParameterList(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.get_AsClause +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.get_AttributeLists +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.get_DeclarationKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.get_HandlesClause +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.get_Identifier +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.get_ImplementsClause +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.get_Keyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.get_Modifiers +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.get_ParameterList +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.get_SubOrFunctionKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax.get_TypeParameterList +Microsoft.CodeAnalysis.VisualBasic.Syntax.MidExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.MidExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MidExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MidExpressionSyntax.AddArgumentListArguments(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MidExpressionSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MidExpressionSyntax.WithArgumentList(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MidExpressionSyntax.WithMid(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MidExpressionSyntax.get_ArgumentList +Microsoft.CodeAnalysis.VisualBasic.Syntax.MidExpressionSyntax.get_Mid +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax.AddArrayBoundsArguments(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax.AddArrayRankSpecifiers(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayRankSpecifierSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayRankSpecifierSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax.WithArrayBounds(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax.WithArrayRankSpecifiers(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayRankSpecifierSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax.WithIdentifier(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax.WithNullable(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax.get_ArrayBounds +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax.get_ArrayRankSpecifiers +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax.get_Identifier +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax.get_Nullable +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleBlockSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleBlockSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleBlockSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleBlockSyntax.AddImplements(Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleBlockSyntax.AddInherits(Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleBlockSyntax.AddMembers(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleBlockSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleBlockSyntax.WithBegin(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleBlockSyntax.WithBlockStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleBlockSyntax.WithEnd(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleBlockSyntax.WithEndBlockStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleBlockSyntax.WithEndModuleStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleBlockSyntax.WithImplements(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleBlockSyntax.WithInherits(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleBlockSyntax.WithMembers(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleBlockSyntax.WithModuleStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleBlockSyntax.get_Begin +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleBlockSyntax.get_BlockStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleBlockSyntax.get_End +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleBlockSyntax.get_EndBlockStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleBlockSyntax.get_EndModuleStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleBlockSyntax.get_Implements +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleBlockSyntax.get_Inherits +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleBlockSyntax.get_Members +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleBlockSyntax.get_ModuleStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleStatementSyntax.AddAttributeLists(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleStatementSyntax.AddModifiers(Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleStatementSyntax.AddTypeParameterListParameters(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleStatementSyntax.WithAttributeLists(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleStatementSyntax.WithDeclarationKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleStatementSyntax.WithIdentifier(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleStatementSyntax.WithKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleStatementSyntax.WithModifiers(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleStatementSyntax.WithModuleKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleStatementSyntax.WithTypeParameterList(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleStatementSyntax.get_AttributeLists +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleStatementSyntax.get_DeclarationKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleStatementSyntax.get_Identifier +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleStatementSyntax.get_Keyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleStatementSyntax.get_Modifiers +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleStatementSyntax.get_ModuleKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleStatementSyntax.get_TypeParameterList +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineIfBlockSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineIfBlockSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineIfBlockSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineIfBlockSyntax.AddElseBlockStatements(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineIfBlockSyntax.AddElseIfBlocks(Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfBlockSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineIfBlockSyntax.AddStatements(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineIfBlockSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.IfStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfBlockSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseBlockSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineIfBlockSyntax.WithElseBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineIfBlockSyntax.WithElseIfBlocks(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfBlockSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineIfBlockSyntax.WithEndIfStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineIfBlockSyntax.WithIfStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.IfStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineIfBlockSyntax.WithStatements(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineIfBlockSyntax.get_ElseBlock +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineIfBlockSyntax.get_ElseIfBlocks +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineIfBlockSyntax.get_EndIfStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineIfBlockSyntax.get_IfStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineIfBlockSyntax.get_Statements +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineLambdaExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineLambdaExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineLambdaExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineLambdaExpressionSyntax.AddStatements(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineLambdaExpressionSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineLambdaExpressionSyntax.WithBegin(Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineLambdaExpressionSyntax.WithEnd(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineLambdaExpressionSyntax.WithEndSubOrFunctionStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineLambdaExpressionSyntax.WithStatements(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineLambdaExpressionSyntax.WithSubOrFunctionHeader(Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineLambdaExpressionSyntax.get_Begin +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineLambdaExpressionSyntax.get_End +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineLambdaExpressionSyntax.get_EndSubOrFunctionStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineLambdaExpressionSyntax.get_Statements +Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineLambdaExpressionSyntax.get_SubOrFunctionHeader +Microsoft.CodeAnalysis.VisualBasic.Syntax.MyBaseExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.MyBaseExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MyBaseExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MyBaseExpressionSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MyBaseExpressionSyntax.WithKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MyBaseExpressionSyntax.get_Keyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.MyClassExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.MyClassExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MyClassExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MyClassExpressionSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MyClassExpressionSyntax.WithKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.MyClassExpressionSyntax.get_Keyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.NameColonEqualsSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.NameColonEqualsSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NameColonEqualsSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NameColonEqualsSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NameColonEqualsSyntax.WithColonEqualsToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NameColonEqualsSyntax.WithName(Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NameColonEqualsSyntax.get_ColonEqualsToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.NameColonEqualsSyntax.get_Name +Microsoft.CodeAnalysis.VisualBasic.Syntax.NameOfExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.NameOfExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NameOfExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NameOfExpressionSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NameOfExpressionSyntax.WithArgument(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NameOfExpressionSyntax.WithCloseParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NameOfExpressionSyntax.WithNameOfKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NameOfExpressionSyntax.WithOpenParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NameOfExpressionSyntax.get_Argument +Microsoft.CodeAnalysis.VisualBasic.Syntax.NameOfExpressionSyntax.get_CloseParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.NameOfExpressionSyntax.get_NameOfKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.NameOfExpressionSyntax.get_OpenParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.NameSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.NameSyntax.get_Arity +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamedFieldInitializerSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamedFieldInitializerSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamedFieldInitializerSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamedFieldInitializerSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamedFieldInitializerSyntax.WithDotToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamedFieldInitializerSyntax.WithEqualsToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamedFieldInitializerSyntax.WithExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamedFieldInitializerSyntax.WithKeyKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamedFieldInitializerSyntax.WithName(Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamedFieldInitializerSyntax.get_DotToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamedFieldInitializerSyntax.get_EqualsToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamedFieldInitializerSyntax.get_Expression +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamedFieldInitializerSyntax.get_KeyKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamedFieldInitializerSyntax.get_Name +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamedTupleElementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamedTupleElementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamedTupleElementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamedTupleElementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamedTupleElementSyntax.WithAsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamedTupleElementSyntax.WithIdentifier(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamedTupleElementSyntax.get_AsClause +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamedTupleElementSyntax.get_Identifier +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceBlockSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceBlockSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceBlockSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceBlockSyntax.AddMembers(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceBlockSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceBlockSyntax.WithEndNamespaceStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceBlockSyntax.WithMembers(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceBlockSyntax.WithNamespaceStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceBlockSyntax.get_EndNamespaceStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceBlockSyntax.get_Members +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceBlockSyntax.get_NamespaceStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.NameSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceStatementSyntax.WithName(Microsoft.CodeAnalysis.VisualBasic.Syntax.NameSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceStatementSyntax.WithNamespaceKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceStatementSyntax.get_Name +Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceStatementSyntax.get_NamespaceKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.NewExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.NewExpressionSyntax.AddAttributeLists(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NewExpressionSyntax.WithAttributeLists(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NewExpressionSyntax.WithNewKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NewExpressionSyntax.get_AttributeLists +Microsoft.CodeAnalysis.VisualBasic.Syntax.NewExpressionSyntax.get_NewKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.NextStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.NextStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NextStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NextStatementSyntax.AddControlVariables(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NextStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NextStatementSyntax.WithControlVariables(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NextStatementSyntax.WithNextKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NextStatementSyntax.get_ControlVariables +Microsoft.CodeAnalysis.VisualBasic.Syntax.NextStatementSyntax.get_NextKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.NullableTypeSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.NullableTypeSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NullableTypeSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NullableTypeSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NullableTypeSyntax.WithElementType(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NullableTypeSyntax.WithQuestionMarkToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.NullableTypeSyntax.get_ElementType +Microsoft.CodeAnalysis.VisualBasic.Syntax.NullableTypeSyntax.get_QuestionMarkToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCollectionInitializerSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCollectionInitializerSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCollectionInitializerSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCollectionInitializerSyntax.AddInitializerInitializers(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCollectionInitializerSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCollectionInitializerSyntax.WithFromKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCollectionInitializerSyntax.WithInitializer(Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCollectionInitializerSyntax.get_FromKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCollectionInitializerSyntax.get_Initializer +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCreationExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCreationExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCreationExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCreationExpressionSyntax.AddArgumentListArguments(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCreationExpressionSyntax.AddAttributeLists(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCreationExpressionSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCreationInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCreationExpressionSyntax.WithArgumentList(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCreationExpressionSyntax.WithAttributeLists(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCreationExpressionSyntax.WithInitializer(Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCreationInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCreationExpressionSyntax.WithNewKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCreationExpressionSyntax.WithType(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCreationExpressionSyntax.get_ArgumentList +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCreationExpressionSyntax.get_AttributeLists +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCreationExpressionSyntax.get_Initializer +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCreationExpressionSyntax.get_NewKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCreationExpressionSyntax.get_Type +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCreationInitializerSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectMemberInitializerSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectMemberInitializerSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectMemberInitializerSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectMemberInitializerSyntax.AddInitializers(Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldInitializerSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectMemberInitializerSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldInitializerSyntax},Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectMemberInitializerSyntax.WithCloseBraceToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectMemberInitializerSyntax.WithInitializers(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldInitializerSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectMemberInitializerSyntax.WithOpenBraceToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectMemberInitializerSyntax.WithWithKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectMemberInitializerSyntax.get_CloseBraceToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectMemberInitializerSyntax.get_Initializers +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectMemberInitializerSyntax.get_OpenBraceToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectMemberInitializerSyntax.get_WithKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.OmittedArgumentSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.OmittedArgumentSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OmittedArgumentSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OmittedArgumentSyntax.GetExpression +Microsoft.CodeAnalysis.VisualBasic.Syntax.OmittedArgumentSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OmittedArgumentSyntax.WithEmpty(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OmittedArgumentSyntax.get_Empty +Microsoft.CodeAnalysis.VisualBasic.Syntax.OmittedArgumentSyntax.get_IsNamed +Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorGoToStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorGoToStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorGoToStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorGoToStatementSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorGoToStatementSyntax.WithErrorKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorGoToStatementSyntax.WithGoToKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorGoToStatementSyntax.WithLabel(Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorGoToStatementSyntax.WithMinus(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorGoToStatementSyntax.WithOnKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorGoToStatementSyntax.get_ErrorKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorGoToStatementSyntax.get_GoToKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorGoToStatementSyntax.get_Label +Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorGoToStatementSyntax.get_Minus +Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorGoToStatementSyntax.get_OnKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorResumeNextStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorResumeNextStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorResumeNextStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorResumeNextStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorResumeNextStatementSyntax.WithErrorKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorResumeNextStatementSyntax.WithNextKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorResumeNextStatementSyntax.WithOnKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorResumeNextStatementSyntax.WithResumeKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorResumeNextStatementSyntax.get_ErrorKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorResumeNextStatementSyntax.get_NextKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorResumeNextStatementSyntax.get_OnKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorResumeNextStatementSyntax.get_ResumeKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorBlockSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorBlockSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorBlockSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorBlockSyntax.AddStatements(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorBlockSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorBlockSyntax.WithBegin(Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorBlockSyntax.WithBlockStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBaseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorBlockSyntax.WithEnd(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorBlockSyntax.WithEndBlockStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorBlockSyntax.WithEndOperatorStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorBlockSyntax.WithOperatorStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorBlockSyntax.WithStatements(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorBlockSyntax.get_Begin +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorBlockSyntax.get_BlockStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorBlockSyntax.get_End +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorBlockSyntax.get_EndBlockStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorBlockSyntax.get_EndOperatorStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorBlockSyntax.get_OperatorStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorBlockSyntax.get_Statements +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax.AddAttributeLists(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax.AddModifiers(Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax.AddParameterListParameters(Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax.WithAsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax.WithAttributeLists(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax.WithDeclarationKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax.WithKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax.WithModifiers(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax.WithOperatorKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax.WithOperatorToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax.WithParameterList(Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax.get_AsClause +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax.get_AttributeLists +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax.get_DeclarationKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax.get_Keyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax.get_Modifiers +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax.get_OperatorKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax.get_OperatorToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax.get_ParameterList +Microsoft.CodeAnalysis.VisualBasic.Syntax.OptionStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.OptionStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OptionStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OptionStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OptionStatementSyntax.WithNameKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OptionStatementSyntax.WithOptionKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OptionStatementSyntax.WithValueKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OptionStatementSyntax.get_NameKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.OptionStatementSyntax.get_OptionKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.OptionStatementSyntax.get_ValueKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderByClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderByClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderByClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderByClauseSyntax.AddOrderings(Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderingSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderByClauseSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderingSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderByClauseSyntax.WithByKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderByClauseSyntax.WithOrderKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderByClauseSyntax.WithOrderings(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderingSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderByClauseSyntax.get_ByKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderByClauseSyntax.get_OrderKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderByClauseSyntax.get_Orderings +Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderingSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderingSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderingSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderingSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderingSyntax.WithAscendingOrDescendingKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderingSyntax.WithExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderingSyntax.get_AscendingOrDescendingKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderingSyntax.get_Expression +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax.AddParameters(Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax},Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax.WithCloseParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax.WithOpenParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax.WithParameters(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax.get_CloseParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax.get_OpenParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax.get_Parameters +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax.AddAttributeLists(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax.AddModifiers(Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax.Update(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax.WithAsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax.WithAttributeLists(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax.WithDefault(Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax.WithIdentifier(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax.WithModifiers(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax.get_AsClause +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax.get_AttributeLists +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax.get_Default +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax.get_Identifier +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax.get_Modifiers +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParenthesizedExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParenthesizedExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParenthesizedExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParenthesizedExpressionSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParenthesizedExpressionSyntax.WithCloseParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParenthesizedExpressionSyntax.WithExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParenthesizedExpressionSyntax.WithOpenParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParenthesizedExpressionSyntax.get_CloseParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParenthesizedExpressionSyntax.get_Expression +Microsoft.CodeAnalysis.VisualBasic.Syntax.ParenthesizedExpressionSyntax.get_OpenParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.PartitionClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.PartitionClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PartitionClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PartitionClauseSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PartitionClauseSyntax.WithCount(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PartitionClauseSyntax.WithSkipOrTakeKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PartitionClauseSyntax.get_Count +Microsoft.CodeAnalysis.VisualBasic.Syntax.PartitionClauseSyntax.get_SkipOrTakeKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.PartitionWhileClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.PartitionWhileClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PartitionWhileClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PartitionWhileClauseSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PartitionWhileClauseSyntax.WithCondition(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PartitionWhileClauseSyntax.WithSkipOrTakeKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PartitionWhileClauseSyntax.WithWhileKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PartitionWhileClauseSyntax.get_Condition +Microsoft.CodeAnalysis.VisualBasic.Syntax.PartitionWhileClauseSyntax.get_SkipOrTakeKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.PartitionWhileClauseSyntax.get_WhileKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.PredefinedCastExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.PredefinedCastExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PredefinedCastExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PredefinedCastExpressionSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PredefinedCastExpressionSyntax.WithCloseParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PredefinedCastExpressionSyntax.WithExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PredefinedCastExpressionSyntax.WithKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PredefinedCastExpressionSyntax.WithOpenParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PredefinedCastExpressionSyntax.get_CloseParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.PredefinedCastExpressionSyntax.get_Expression +Microsoft.CodeAnalysis.VisualBasic.Syntax.PredefinedCastExpressionSyntax.get_Keyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.PredefinedCastExpressionSyntax.get_OpenParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.PredefinedTypeSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.PredefinedTypeSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PredefinedTypeSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PredefinedTypeSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PredefinedTypeSyntax.WithKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PredefinedTypeSyntax.get_Keyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.PrintStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.PrintStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PrintStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PrintStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PrintStatementSyntax.WithExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PrintStatementSyntax.WithQuestionToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PrintStatementSyntax.get_Expression +Microsoft.CodeAnalysis.VisualBasic.Syntax.PrintStatementSyntax.get_QuestionToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyBlockSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyBlockSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyBlockSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyBlockSyntax.AddAccessors(Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyBlockSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyBlockSyntax.WithAccessors(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyBlockSyntax.WithEndPropertyStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyBlockSyntax.WithPropertyStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyBlockSyntax.get_Accessors +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyBlockSyntax.get_EndPropertyStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyBlockSyntax.get_PropertyStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax.AddAttributeLists(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax.AddImplementsClauseInterfaceMembers(Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax.AddModifiers(Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax.AddParameterListParameters(Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax.WithAsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax.WithAttributeLists(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax.WithDeclarationKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax.WithIdentifier(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax.WithImplementsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax.WithInitializer(Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax.WithKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax.WithModifiers(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax.WithParameterList(Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax.WithPropertyKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax.get_AsClause +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax.get_AttributeLists +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax.get_DeclarationKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax.get_Identifier +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax.get_ImplementsClause +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax.get_Initializer +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax.get_Keyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax.get_Modifiers +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax.get_ParameterList +Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax.get_PropertyKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedCrefOperatorReferenceSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedCrefOperatorReferenceSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedCrefOperatorReferenceSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedCrefOperatorReferenceSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.NameSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefOperatorReferenceSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedCrefOperatorReferenceSyntax.WithDotToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedCrefOperatorReferenceSyntax.WithLeft(Microsoft.CodeAnalysis.VisualBasic.Syntax.NameSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedCrefOperatorReferenceSyntax.WithRight(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefOperatorReferenceSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedCrefOperatorReferenceSyntax.get_DotToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedCrefOperatorReferenceSyntax.get_Left +Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedCrefOperatorReferenceSyntax.get_Right +Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.NameSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax.WithDotToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax.WithLeft(Microsoft.CodeAnalysis.VisualBasic.Syntax.NameSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax.WithRight(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax.get_DotToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax.get_Left +Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax.get_Right +Microsoft.CodeAnalysis.VisualBasic.Syntax.QueryClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.QueryExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.QueryExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.QueryExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.QueryExpressionSyntax.AddClauses(Microsoft.CodeAnalysis.VisualBasic.Syntax.QueryClauseSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.QueryExpressionSyntax.Update(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.QueryClauseSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.QueryExpressionSyntax.WithClauses(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.QueryClauseSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.QueryExpressionSyntax.get_Clauses +Microsoft.CodeAnalysis.VisualBasic.Syntax.RaiseEventStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.RaiseEventStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RaiseEventStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RaiseEventStatementSyntax.AddArgumentListArguments(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RaiseEventStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RaiseEventStatementSyntax.WithArgumentList(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RaiseEventStatementSyntax.WithName(Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RaiseEventStatementSyntax.WithRaiseEventKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RaiseEventStatementSyntax.get_ArgumentList +Microsoft.CodeAnalysis.VisualBasic.Syntax.RaiseEventStatementSyntax.get_Name +Microsoft.CodeAnalysis.VisualBasic.Syntax.RaiseEventStatementSyntax.get_RaiseEventKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.RangeArgumentSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.RangeArgumentSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RangeArgumentSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RangeArgumentSyntax.GetExpression +Microsoft.CodeAnalysis.VisualBasic.Syntax.RangeArgumentSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RangeArgumentSyntax.WithLowerBound(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RangeArgumentSyntax.WithToKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RangeArgumentSyntax.WithUpperBound(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RangeArgumentSyntax.get_IsNamed +Microsoft.CodeAnalysis.VisualBasic.Syntax.RangeArgumentSyntax.get_LowerBound +Microsoft.CodeAnalysis.VisualBasic.Syntax.RangeArgumentSyntax.get_ToKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.RangeArgumentSyntax.get_UpperBound +Microsoft.CodeAnalysis.VisualBasic.Syntax.RangeCaseClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.RangeCaseClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RangeCaseClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RangeCaseClauseSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RangeCaseClauseSyntax.WithLowerBound(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RangeCaseClauseSyntax.WithToKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RangeCaseClauseSyntax.WithUpperBound(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RangeCaseClauseSyntax.get_LowerBound +Microsoft.CodeAnalysis.VisualBasic.Syntax.RangeCaseClauseSyntax.get_ToKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.RangeCaseClauseSyntax.get_UpperBound +Microsoft.CodeAnalysis.VisualBasic.Syntax.ReDimStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ReDimStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ReDimStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ReDimStatementSyntax.AddClauses(Microsoft.CodeAnalysis.VisualBasic.Syntax.RedimClauseSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ReDimStatementSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.RedimClauseSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ReDimStatementSyntax.WithClauses(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.RedimClauseSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ReDimStatementSyntax.WithPreserveKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ReDimStatementSyntax.WithReDimKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ReDimStatementSyntax.get_Clauses +Microsoft.CodeAnalysis.VisualBasic.Syntax.ReDimStatementSyntax.get_PreserveKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ReDimStatementSyntax.get_ReDimKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.RedimClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.RedimClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RedimClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RedimClauseSyntax.AddArrayBoundsArguments(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RedimClauseSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RedimClauseSyntax.WithArrayBounds(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RedimClauseSyntax.WithExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RedimClauseSyntax.get_ArrayBounds +Microsoft.CodeAnalysis.VisualBasic.Syntax.RedimClauseSyntax.get_Expression +Microsoft.CodeAnalysis.VisualBasic.Syntax.ReferenceDirectiveTriviaSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ReferenceDirectiveTriviaSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ReferenceDirectiveTriviaSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ReferenceDirectiveTriviaSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ReferenceDirectiveTriviaSyntax.WithFile(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ReferenceDirectiveTriviaSyntax.WithHashToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ReferenceDirectiveTriviaSyntax.WithReferenceKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ReferenceDirectiveTriviaSyntax.get_File +Microsoft.CodeAnalysis.VisualBasic.Syntax.ReferenceDirectiveTriviaSyntax.get_HashToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.ReferenceDirectiveTriviaSyntax.get_ReferenceKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.RegionDirectiveTriviaSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.RegionDirectiveTriviaSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RegionDirectiveTriviaSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RegionDirectiveTriviaSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RegionDirectiveTriviaSyntax.WithHashToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RegionDirectiveTriviaSyntax.WithName(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RegionDirectiveTriviaSyntax.WithRegionKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RegionDirectiveTriviaSyntax.get_HashToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.RegionDirectiveTriviaSyntax.get_Name +Microsoft.CodeAnalysis.VisualBasic.Syntax.RegionDirectiveTriviaSyntax.get_RegionKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.RelationalCaseClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.RelationalCaseClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RelationalCaseClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RelationalCaseClauseSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RelationalCaseClauseSyntax.WithIsKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RelationalCaseClauseSyntax.WithOperatorToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RelationalCaseClauseSyntax.WithValue(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.RelationalCaseClauseSyntax.get_IsKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.RelationalCaseClauseSyntax.get_OperatorToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.RelationalCaseClauseSyntax.get_Value +Microsoft.CodeAnalysis.VisualBasic.Syntax.ResumeStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ResumeStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ResumeStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ResumeStatementSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ResumeStatementSyntax.WithLabel(Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ResumeStatementSyntax.WithResumeKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ResumeStatementSyntax.get_Label +Microsoft.CodeAnalysis.VisualBasic.Syntax.ResumeStatementSyntax.get_ResumeKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.ReturnStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ReturnStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ReturnStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ReturnStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ReturnStatementSyntax.WithExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ReturnStatementSyntax.WithReturnKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ReturnStatementSyntax.get_Expression +Microsoft.CodeAnalysis.VisualBasic.Syntax.ReturnStatementSyntax.get_ReturnKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectBlockSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectBlockSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectBlockSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectBlockSyntax.AddCaseBlocks(Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseBlockSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectBlockSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseBlockSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectBlockSyntax.WithCaseBlocks(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseBlockSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectBlockSyntax.WithEndSelectStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectBlockSyntax.WithSelectStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectBlockSyntax.get_CaseBlocks +Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectBlockSyntax.get_EndSelectStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectBlockSyntax.get_SelectStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectClauseSyntax.AddVariables(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectClauseSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectClauseSyntax.WithSelectKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectClauseSyntax.WithVariables(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectClauseSyntax.get_SelectKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectClauseSyntax.get_Variables +Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectStatementSyntax.WithCaseKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectStatementSyntax.WithExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectStatementSyntax.WithSelectKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectStatementSyntax.get_CaseKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectStatementSyntax.get_Expression +Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectStatementSyntax.get_SelectKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleArgumentSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleArgumentSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleArgumentSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleArgumentSyntax.GetExpression +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleArgumentSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.NameColonEqualsSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleArgumentSyntax.WithExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleArgumentSyntax.WithNameColonEquals(Microsoft.CodeAnalysis.VisualBasic.Syntax.NameColonEqualsSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleArgumentSyntax.get_Expression +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleArgumentSyntax.get_IsNamed +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleArgumentSyntax.get_NameColonEquals +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax.AddAttributeLists(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax.WithAsKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax.WithAttributeLists(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax.WithType(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax.get_AsKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax.get_AttributeLists +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax.get_Type +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleCaseClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleCaseClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleCaseClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleCaseClauseSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleCaseClauseSyntax.WithValue(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleCaseClauseSyntax.get_Value +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleImportsClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleImportsClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleImportsClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleImportsClauseSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportAliasClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.NameSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleImportsClauseSyntax.WithAlias(Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportAliasClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleImportsClauseSyntax.WithName(Microsoft.CodeAnalysis.VisualBasic.Syntax.NameSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleImportsClauseSyntax.get_Alias +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleImportsClauseSyntax.get_Name +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleJoinClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleJoinClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleJoinClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleJoinClauseSyntax.AddAdditionalJoins(Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleJoinClauseSyntax.AddJoinConditions(Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleJoinClauseSyntax.AddJoinedVariables(Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleJoinClauseSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax},Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleJoinClauseSyntax.WithAdditionalJoins(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleJoinClauseSyntax.WithJoinConditions(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleJoinClauseSyntax.WithJoinKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleJoinClauseSyntax.WithJoinedVariables(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleJoinClauseSyntax.WithOnKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleJoinClauseSyntax.get_AdditionalJoins +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleJoinClauseSyntax.get_JoinConditions +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleJoinClauseSyntax.get_JoinKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleJoinClauseSyntax.get_JoinedVariables +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleJoinClauseSyntax.get_OnKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleNameSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleNameSyntax.WithIdentifier(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleNameSyntax.get_Identifier +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineElseClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineElseClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineElseClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineElseClauseSyntax.AddStatements(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineElseClauseSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineElseClauseSyntax.WithElseKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineElseClauseSyntax.WithStatements(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineElseClauseSyntax.get_ElseKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineElseClauseSyntax.get_Statements +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineIfStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineIfStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineIfStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineIfStatementSyntax.AddElseClauseStatements(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineIfStatementSyntax.AddStatements(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineIfStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineElseClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineIfStatementSyntax.WithCondition(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineIfStatementSyntax.WithElseClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineElseClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineIfStatementSyntax.WithIfKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineIfStatementSyntax.WithStatements(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineIfStatementSyntax.WithThenKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineIfStatementSyntax.get_Condition +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineIfStatementSyntax.get_ElseClause +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineIfStatementSyntax.get_IfKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineIfStatementSyntax.get_Statements +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineIfStatementSyntax.get_ThenKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineLambdaExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineLambdaExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineLambdaExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineLambdaExpressionSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineLambdaExpressionSyntax.WithBegin(Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineLambdaExpressionSyntax.WithBody(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineLambdaExpressionSyntax.WithSubOrFunctionHeader(Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineLambdaExpressionSyntax.get_Begin +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineLambdaExpressionSyntax.get_Body +Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineLambdaExpressionSyntax.get_SubOrFunctionHeader +Microsoft.CodeAnalysis.VisualBasic.Syntax.SkippedTokensTriviaSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.SkippedTokensTriviaSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SkippedTokensTriviaSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SkippedTokensTriviaSyntax.AddTokens(Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SkippedTokensTriviaSyntax.Update(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SkippedTokensTriviaSyntax.WithTokens(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SkippedTokensTriviaSyntax.get_Tokens +Microsoft.CodeAnalysis.VisualBasic.Syntax.SpecialConstraintSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.SpecialConstraintSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SpecialConstraintSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SpecialConstraintSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SpecialConstraintSyntax.WithConstraintKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SpecialConstraintSyntax.get_ConstraintKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.StopOrEndStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.StopOrEndStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StopOrEndStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StopOrEndStatementSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StopOrEndStatementSyntax.WithStopOrEndKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StopOrEndStatementSyntax.get_StopOrEndKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureBlockSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureBlockSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureBlockSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureBlockSyntax.AddImplements(Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureBlockSyntax.AddInherits(Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureBlockSyntax.AddMembers(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureBlockSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureBlockSyntax.WithBegin(Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureBlockSyntax.WithBlockStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureBlockSyntax.WithEnd(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureBlockSyntax.WithEndBlockStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureBlockSyntax.WithEndStructureStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureBlockSyntax.WithImplements(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureBlockSyntax.WithInherits(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureBlockSyntax.WithMembers(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureBlockSyntax.WithStructureStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureBlockSyntax.get_Begin +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureBlockSyntax.get_BlockStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureBlockSyntax.get_End +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureBlockSyntax.get_EndBlockStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureBlockSyntax.get_EndStructureStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureBlockSyntax.get_Implements +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureBlockSyntax.get_Inherits +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureBlockSyntax.get_Members +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureBlockSyntax.get_StructureStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureStatementSyntax.AddAttributeLists(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureStatementSyntax.AddModifiers(Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureStatementSyntax.AddTypeParameterListParameters(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureStatementSyntax.WithAttributeLists(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureStatementSyntax.WithDeclarationKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureStatementSyntax.WithIdentifier(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureStatementSyntax.WithKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureStatementSyntax.WithModifiers(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureStatementSyntax.WithStructureKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureStatementSyntax.WithTypeParameterList(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureStatementSyntax.get_AttributeLists +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureStatementSyntax.get_DeclarationKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureStatementSyntax.get_Identifier +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureStatementSyntax.get_Keyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureStatementSyntax.get_Modifiers +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureStatementSyntax.get_StructureKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureStatementSyntax.get_TypeParameterList +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructuredTriviaSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.StructuredTriviaSyntax.get_ParentTrivia +Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax.AddAttributeLists(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax.AddModifiers(Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax.AddParameterListParameters(Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax.WithAttributeLists(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax.WithDeclarationKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax.WithKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax.WithModifiers(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax.WithNewKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax.WithParameterList(Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax.WithSubKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax.get_AttributeLists +Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax.get_DeclarationKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax.get_Keyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax.get_Modifiers +Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax.get_NewKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax.get_ParameterList +Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax.get_SubKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.SyncLockBlockSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.SyncLockBlockSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SyncLockBlockSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SyncLockBlockSyntax.AddStatements(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SyncLockBlockSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.SyncLockStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SyncLockBlockSyntax.WithEndSyncLockStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SyncLockBlockSyntax.WithStatements(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SyncLockBlockSyntax.WithSyncLockStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.SyncLockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SyncLockBlockSyntax.get_EndSyncLockStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.SyncLockBlockSyntax.get_Statements +Microsoft.CodeAnalysis.VisualBasic.Syntax.SyncLockBlockSyntax.get_SyncLockStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.SyncLockStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.SyncLockStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SyncLockStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SyncLockStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SyncLockStatementSyntax.WithExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SyncLockStatementSyntax.WithSyncLockKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.SyncLockStatementSyntax.get_Expression +Microsoft.CodeAnalysis.VisualBasic.Syntax.SyncLockStatementSyntax.get_SyncLockKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNodeRemover +Microsoft.CodeAnalysis.VisualBasic.Syntax.SyntaxNodeRemover.#ctor +Microsoft.CodeAnalysis.VisualBasic.Syntax.TernaryConditionalExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.TernaryConditionalExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TernaryConditionalExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TernaryConditionalExpressionSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TernaryConditionalExpressionSyntax.WithCloseParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TernaryConditionalExpressionSyntax.WithCondition(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TernaryConditionalExpressionSyntax.WithFirstCommaToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TernaryConditionalExpressionSyntax.WithIfKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TernaryConditionalExpressionSyntax.WithOpenParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TernaryConditionalExpressionSyntax.WithSecondCommaToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TernaryConditionalExpressionSyntax.WithWhenFalse(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TernaryConditionalExpressionSyntax.WithWhenTrue(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TernaryConditionalExpressionSyntax.get_CloseParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.TernaryConditionalExpressionSyntax.get_Condition +Microsoft.CodeAnalysis.VisualBasic.Syntax.TernaryConditionalExpressionSyntax.get_FirstCommaToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.TernaryConditionalExpressionSyntax.get_IfKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.TernaryConditionalExpressionSyntax.get_OpenParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.TernaryConditionalExpressionSyntax.get_SecondCommaToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.TernaryConditionalExpressionSyntax.get_WhenFalse +Microsoft.CodeAnalysis.VisualBasic.Syntax.TernaryConditionalExpressionSyntax.get_WhenTrue +Microsoft.CodeAnalysis.VisualBasic.Syntax.ThrowStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.ThrowStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ThrowStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ThrowStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ThrowStatementSyntax.WithExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ThrowStatementSyntax.WithThrowKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.ThrowStatementSyntax.get_Expression +Microsoft.CodeAnalysis.VisualBasic.Syntax.ThrowStatementSyntax.get_ThrowKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryBlockSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryBlockSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryBlockSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryBlockSyntax.AddCatchBlocks(Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchBlockSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryBlockSyntax.AddFinallyBlockStatements(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryBlockSyntax.AddStatements(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryBlockSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.TryStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchBlockSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.FinallyBlockSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryBlockSyntax.WithCatchBlocks(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchBlockSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryBlockSyntax.WithEndTryStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryBlockSyntax.WithFinallyBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.FinallyBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryBlockSyntax.WithStatements(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryBlockSyntax.WithTryStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.TryStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryBlockSyntax.get_CatchBlocks +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryBlockSyntax.get_EndTryStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryBlockSyntax.get_FinallyBlock +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryBlockSyntax.get_Statements +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryBlockSyntax.get_TryStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryCastExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryCastExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryCastExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryCastExpressionSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryCastExpressionSyntax.WithCloseParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryCastExpressionSyntax.WithCommaToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryCastExpressionSyntax.WithExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryCastExpressionSyntax.WithKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryCastExpressionSyntax.WithOpenParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryCastExpressionSyntax.WithType(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryCastExpressionSyntax.get_CloseParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryCastExpressionSyntax.get_CommaToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryCastExpressionSyntax.get_Expression +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryCastExpressionSyntax.get_Keyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryCastExpressionSyntax.get_OpenParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryCastExpressionSyntax.get_Type +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryStatementSyntax.WithTryKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TryStatementSyntax.get_TryKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleElementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleExpressionSyntax.AddArguments(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleArgumentSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleExpressionSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleArgumentSyntax},Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleExpressionSyntax.WithArguments(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleArgumentSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleExpressionSyntax.WithCloseParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleExpressionSyntax.WithOpenParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleExpressionSyntax.get_Arguments +Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleExpressionSyntax.get_CloseParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleExpressionSyntax.get_OpenParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleTypeSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleTypeSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleTypeSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleTypeSyntax.AddElements(Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleElementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleTypeSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleElementSyntax},Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleTypeSyntax.WithCloseParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleTypeSyntax.WithElements(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleElementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleTypeSyntax.WithOpenParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleTypeSyntax.get_CloseParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleTypeSyntax.get_Elements +Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleTypeSyntax.get_OpenParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax.AddArguments(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax},Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax.WithArguments(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax.WithCloseParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax.WithOfKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax.WithOpenParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax.get_Arguments +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax.get_CloseParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax.get_OfKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax.get_OpenParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeBlockSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeBlockSyntax.AddImplements(Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeBlockSyntax.AddInherits(Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeBlockSyntax.AddMembers(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeBlockSyntax.WithBegin(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeBlockSyntax.WithBlockStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeBlockSyntax.WithEnd(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeBlockSyntax.WithEndBlockStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeBlockSyntax.WithImplements(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeBlockSyntax.WithInherits(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeBlockSyntax.WithMembers(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeBlockSyntax.get_Begin +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeBlockSyntax.get_BlockStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeBlockSyntax.get_End +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeBlockSyntax.get_EndBlockStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeBlockSyntax.get_Implements +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeBlockSyntax.get_Inherits +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeBlockSyntax.get_Members +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeCharacter +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeCharacter.Decimal +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeCharacter.DecimalLiteral +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeCharacter.Double +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeCharacter.DoubleLiteral +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeCharacter.Integer +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeCharacter.IntegerLiteral +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeCharacter.Long +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeCharacter.LongLiteral +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeCharacter.None +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeCharacter.ShortLiteral +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeCharacter.Single +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeCharacter.SingleLiteral +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeCharacter.String +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeCharacter.UIntegerLiteral +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeCharacter.ULongLiteral +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeCharacter.UShortLiteral +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeCharacter.value__ +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeConstraintSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeConstraintSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeConstraintSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeConstraintSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeConstraintSyntax.WithType(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeConstraintSyntax.get_Type +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeOfExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeOfExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeOfExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeOfExpressionSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeOfExpressionSyntax.WithExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeOfExpressionSyntax.WithOperatorToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeOfExpressionSyntax.WithType(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeOfExpressionSyntax.WithTypeOfKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeOfExpressionSyntax.get_Expression +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeOfExpressionSyntax.get_OperatorToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeOfExpressionSyntax.get_Type +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeOfExpressionSyntax.get_TypeOfKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterConstraintClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax.AddParameters(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSyntax},Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax.WithCloseParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax.WithOfKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax.WithOpenParenToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax.WithParameters(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax.get_CloseParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax.get_OfKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax.get_OpenParenToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax.get_Parameters +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterMultipleConstraintClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterMultipleConstraintClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterMultipleConstraintClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterMultipleConstraintClauseSyntax.AddConstraints(Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstraintSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterMultipleConstraintClauseSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstraintSyntax},Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterMultipleConstraintClauseSyntax.WithAsKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterMultipleConstraintClauseSyntax.WithCloseBraceToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterMultipleConstraintClauseSyntax.WithConstraints(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstraintSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterMultipleConstraintClauseSyntax.WithOpenBraceToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterMultipleConstraintClauseSyntax.get_AsKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterMultipleConstraintClauseSyntax.get_CloseBraceToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterMultipleConstraintClauseSyntax.get_Constraints +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterMultipleConstraintClauseSyntax.get_OpenBraceToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSingleConstraintClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSingleConstraintClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSingleConstraintClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSingleConstraintClauseSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstraintSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSingleConstraintClauseSyntax.WithAsKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSingleConstraintClauseSyntax.WithConstraint(Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstraintSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSingleConstraintClauseSyntax.get_AsKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSingleConstraintClauseSyntax.get_Constraint +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterConstraintClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSyntax.WithIdentifier(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSyntax.WithTypeParameterConstraintClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterConstraintClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSyntax.WithVarianceKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSyntax.get_Identifier +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSyntax.get_TypeParameterConstraintClause +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSyntax.get_VarianceKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeStatementSyntax.AddAttributeLists(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeStatementSyntax.AddModifiers(Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeStatementSyntax.AddTypeParameterListParameters(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeStatementSyntax.WithAttributeLists(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeStatementSyntax.WithDeclarationKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeStatementSyntax.WithIdentifier(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeStatementSyntax.WithKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeStatementSyntax.WithModifiers(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeStatementSyntax.WithTypeParameterList(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeStatementSyntax.get_Arity +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeStatementSyntax.get_AttributeLists +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeStatementSyntax.get_DeclarationKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeStatementSyntax.get_Identifier +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeStatementSyntax.get_Keyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeStatementSyntax.get_Modifiers +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeStatementSyntax.get_TypeParameterList +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypedTupleElementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypedTupleElementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypedTupleElementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypedTupleElementSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypedTupleElementSyntax.WithType(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.TypedTupleElementSyntax.get_Type +Microsoft.CodeAnalysis.VisualBasic.Syntax.UnaryExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.UnaryExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.UnaryExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.UnaryExpressionSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.UnaryExpressionSyntax.WithOperand(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.UnaryExpressionSyntax.WithOperatorToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.UnaryExpressionSyntax.get_Operand +Microsoft.CodeAnalysis.VisualBasic.Syntax.UnaryExpressionSyntax.get_OperatorToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingBlockSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingBlockSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingBlockSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingBlockSyntax.AddStatements(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingBlockSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingBlockSyntax.WithEndUsingStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingBlockSyntax.WithStatements(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingBlockSyntax.WithUsingStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingBlockSyntax.get_EndUsingStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingBlockSyntax.get_Statements +Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingBlockSyntax.get_UsingStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingStatementSyntax.AddVariables(Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableDeclaratorSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableDeclaratorSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingStatementSyntax.WithExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingStatementSyntax.WithUsingKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingStatementSyntax.WithVariables(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableDeclaratorSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingStatementSyntax.get_Expression +Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingStatementSyntax.get_UsingKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingStatementSyntax.get_Variables +Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableDeclaratorSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableDeclaratorSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableDeclaratorSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableDeclaratorSyntax.AddNames(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableDeclaratorSyntax.Update(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableDeclaratorSyntax.WithAsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableDeclaratorSyntax.WithInitializer(Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableDeclaratorSyntax.WithNames(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableDeclaratorSyntax.get_AsClause +Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableDeclaratorSyntax.get_Initializer +Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableDeclaratorSyntax.get_Names +Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableNameEqualsSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableNameEqualsSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableNameEqualsSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableNameEqualsSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableNameEqualsSyntax.WithAsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableNameEqualsSyntax.WithEqualsToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableNameEqualsSyntax.WithIdentifier(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableNameEqualsSyntax.get_AsClause +Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableNameEqualsSyntax.get_EqualsToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableNameEqualsSyntax.get_Identifier +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhereClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhereClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhereClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhereClauseSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhereClauseSyntax.WithCondition(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhereClauseSyntax.WithWhereKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhereClauseSyntax.get_Condition +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhereClauseSyntax.get_WhereKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileBlockSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileBlockSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileBlockSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileBlockSyntax.AddStatements(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileBlockSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileBlockSyntax.WithEndWhileStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileBlockSyntax.WithStatements(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileBlockSyntax.WithWhileStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileBlockSyntax.get_EndWhileStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileBlockSyntax.get_Statements +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileBlockSyntax.get_WhileStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax.WithCondition(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax.WithWhileOrUntilKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax.get_Condition +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax.get_WhileOrUntilKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileStatementSyntax.WithCondition(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileStatementSyntax.WithWhileKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileStatementSyntax.get_Condition +Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileStatementSyntax.get_WhileKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithBlockSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithBlockSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithBlockSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithBlockSyntax.AddStatements(Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithBlockSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.WithStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithBlockSyntax.WithEndWithStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithBlockSyntax.WithStatements(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithBlockSyntax.WithWithStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.WithStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithBlockSyntax.get_EndWithStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithBlockSyntax.get_Statements +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithBlockSyntax.get_WithStatement +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithEventsEventContainerSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithEventsEventContainerSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithEventsEventContainerSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithEventsEventContainerSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithEventsEventContainerSyntax.WithIdentifier(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithEventsEventContainerSyntax.get_Identifier +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithEventsPropertyEventContainerSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithEventsPropertyEventContainerSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithEventsPropertyEventContainerSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithEventsPropertyEventContainerSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.WithEventsEventContainerSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithEventsPropertyEventContainerSyntax.WithDotToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithEventsPropertyEventContainerSyntax.WithProperty(Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithEventsPropertyEventContainerSyntax.WithWithEventsContainer(Microsoft.CodeAnalysis.VisualBasic.Syntax.WithEventsEventContainerSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithEventsPropertyEventContainerSyntax.get_DotToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithEventsPropertyEventContainerSyntax.get_Property +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithEventsPropertyEventContainerSyntax.get_WithEventsContainer +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithStatementSyntax.WithExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithStatementSyntax.WithWithKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithStatementSyntax.get_Expression +Microsoft.CodeAnalysis.VisualBasic.Syntax.WithStatementSyntax.get_WithKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlAttributeSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlAttributeSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlAttributeSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlAttributeSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlAttributeSyntax.WithEqualsToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlAttributeSyntax.WithName(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlAttributeSyntax.WithValue(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlAttributeSyntax.get_EqualsToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlAttributeSyntax.get_Name +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlAttributeSyntax.get_Value +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlBracketedNameSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlBracketedNameSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlBracketedNameSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlBracketedNameSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlBracketedNameSyntax.WithGreaterThanToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlBracketedNameSyntax.WithLessThanToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlBracketedNameSyntax.WithName(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlBracketedNameSyntax.get_GreaterThanToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlBracketedNameSyntax.get_LessThanToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlBracketedNameSyntax.get_Name +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCDataSectionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCDataSectionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCDataSectionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCDataSectionSyntax.AddTextTokens(Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCDataSectionSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCDataSectionSyntax.WithBeginCDataToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCDataSectionSyntax.WithEndCDataToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCDataSectionSyntax.WithTextTokens(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCDataSectionSyntax.get_BeginCDataToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCDataSectionSyntax.get_EndCDataToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCDataSectionSyntax.get_TextTokens +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCommentSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCommentSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCommentSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCommentSyntax.AddTextTokens(Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCommentSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCommentSyntax.WithLessThanExclamationMinusMinusToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCommentSyntax.WithMinusMinusGreaterThanToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCommentSyntax.WithTextTokens(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCommentSyntax.get_LessThanExclamationMinusMinusToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCommentSyntax.get_MinusMinusGreaterThanToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCommentSyntax.get_TextTokens +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCrefAttributeSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCrefAttributeSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCrefAttributeSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCrefAttributeSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCrefAttributeSyntax.WithEndQuoteToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCrefAttributeSyntax.WithEqualsToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCrefAttributeSyntax.WithName(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCrefAttributeSyntax.WithReference(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCrefAttributeSyntax.WithStartQuoteToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCrefAttributeSyntax.get_EndQuoteToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCrefAttributeSyntax.get_EqualsToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCrefAttributeSyntax.get_Name +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCrefAttributeSyntax.get_Reference +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCrefAttributeSyntax.get_StartQuoteToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationOptionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationOptionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationOptionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationOptionSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlStringSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationOptionSyntax.WithEquals(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationOptionSyntax.WithName(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationOptionSyntax.WithValue(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlStringSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationOptionSyntax.get_Equals +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationOptionSyntax.get_Name +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationOptionSyntax.get_Value +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationOptionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationOptionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationOptionSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationSyntax.WithEncoding(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationOptionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationSyntax.WithLessThanQuestionToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationSyntax.WithQuestionGreaterThanToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationSyntax.WithStandalone(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationOptionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationSyntax.WithVersion(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationOptionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationSyntax.WithXmlKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationSyntax.get_Encoding +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationSyntax.get_LessThanQuestionToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationSyntax.get_QuestionGreaterThanToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationSyntax.get_Standalone +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationSyntax.get_Version +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationSyntax.get_XmlKeyword +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDocumentSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDocumentSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDocumentSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDocumentSyntax.AddFollowingMisc(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDocumentSyntax.AddPrecedingMisc(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDocumentSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDocumentSyntax.WithDeclaration(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDocumentSyntax.WithFollowingMisc(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDocumentSyntax.WithPrecedingMisc(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDocumentSyntax.WithRoot(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDocumentSyntax.get_Declaration +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDocumentSyntax.get_FollowingMisc +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDocumentSyntax.get_PrecedingMisc +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDocumentSyntax.get_Root +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementEndTagSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementEndTagSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementEndTagSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementEndTagSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementEndTagSyntax.WithGreaterThanToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementEndTagSyntax.WithLessThanSlashToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementEndTagSyntax.WithName(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementEndTagSyntax.get_GreaterThanToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementEndTagSyntax.get_LessThanSlashToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementEndTagSyntax.get_Name +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementStartTagSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementStartTagSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementStartTagSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementStartTagSyntax.AddAttributes(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementStartTagSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax},Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementStartTagSyntax.WithAttributes(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementStartTagSyntax.WithGreaterThanToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementStartTagSyntax.WithLessThanToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementStartTagSyntax.WithName(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementStartTagSyntax.get_Attributes +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementStartTagSyntax.get_GreaterThanToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementStartTagSyntax.get_LessThanToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementStartTagSyntax.get_Name +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementSyntax.AddContent(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementStartTagSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementEndTagSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementSyntax.WithContent(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementSyntax.WithEndTag(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementEndTagSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementSyntax.WithStartTag(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementStartTagSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementSyntax.get_Content +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementSyntax.get_EndTag +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementSyntax.get_StartTag +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmbeddedExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmbeddedExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmbeddedExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmbeddedExpressionSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmbeddedExpressionSyntax.WithExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmbeddedExpressionSyntax.WithLessThanPercentEqualsToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmbeddedExpressionSyntax.WithPercentGreaterThanToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmbeddedExpressionSyntax.get_Expression +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmbeddedExpressionSyntax.get_LessThanPercentEqualsToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmbeddedExpressionSyntax.get_PercentGreaterThanToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax.AddAttributes(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax},Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax.WithAttributes(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax.WithLessThanToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax.WithName(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax.WithSlashGreaterThanToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax.get_Attributes +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax.get_LessThanToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax.get_Name +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax.get_SlashGreaterThanToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlMemberAccessExpressionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlMemberAccessExpressionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlMemberAccessExpressionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlMemberAccessExpressionSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlMemberAccessExpressionSyntax.WithBase(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlMemberAccessExpressionSyntax.WithName(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlMemberAccessExpressionSyntax.WithToken1(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlMemberAccessExpressionSyntax.WithToken2(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlMemberAccessExpressionSyntax.WithToken3(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlMemberAccessExpressionSyntax.get_Base +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlMemberAccessExpressionSyntax.get_Name +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlMemberAccessExpressionSyntax.get_Token1 +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlMemberAccessExpressionSyntax.get_Token2 +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlMemberAccessExpressionSyntax.get_Token3 +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameAttributeSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameAttributeSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameAttributeSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameAttributeSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameAttributeSyntax.WithEndQuoteToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameAttributeSyntax.WithEqualsToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameAttributeSyntax.WithName(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameAttributeSyntax.WithReference(Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameAttributeSyntax.WithStartQuoteToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameAttributeSyntax.get_EndQuoteToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameAttributeSyntax.get_EqualsToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameAttributeSyntax.get_Name +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameAttributeSyntax.get_Reference +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameAttributeSyntax.get_StartQuoteToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameSyntax.Update(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlPrefixSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameSyntax.WithLocalName(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameSyntax.WithPrefix(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlPrefixSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameSyntax.get_LocalName +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameSyntax.get_Prefix +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNamespaceImportsClauseSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNamespaceImportsClauseSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNamespaceImportsClauseSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNamespaceImportsClauseSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlAttributeSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNamespaceImportsClauseSyntax.WithGreaterThanToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNamespaceImportsClauseSyntax.WithLessThanToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNamespaceImportsClauseSyntax.WithXmlNamespace(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlAttributeSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNamespaceImportsClauseSyntax.get_GreaterThanToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNamespaceImportsClauseSyntax.get_LessThanToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNamespaceImportsClauseSyntax.get_XmlNamespace +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlPrefixNameSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlPrefixNameSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlPrefixNameSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlPrefixNameSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlPrefixNameSyntax.WithName(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlPrefixNameSyntax.get_Name +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlPrefixSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlPrefixSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlPrefixSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlPrefixSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlPrefixSyntax.WithColonToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlPrefixSyntax.WithName(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlPrefixSyntax.get_ColonToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlPrefixSyntax.get_Name +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlProcessingInstructionSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlProcessingInstructionSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlProcessingInstructionSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlProcessingInstructionSyntax.AddTextTokens(Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlProcessingInstructionSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlProcessingInstructionSyntax.WithLessThanQuestionToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlProcessingInstructionSyntax.WithName(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlProcessingInstructionSyntax.WithQuestionGreaterThanToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlProcessingInstructionSyntax.WithTextTokens(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlProcessingInstructionSyntax.get_LessThanQuestionToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlProcessingInstructionSyntax.get_Name +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlProcessingInstructionSyntax.get_QuestionGreaterThanToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlProcessingInstructionSyntax.get_TextTokens +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlStringSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlStringSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlStringSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlStringSyntax.AddTextTokens(Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlStringSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlStringSyntax.WithEndQuoteToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlStringSyntax.WithStartQuoteToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlStringSyntax.WithTextTokens(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlStringSyntax.get_EndQuoteToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlStringSyntax.get_StartQuoteToken +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlStringSyntax.get_TextTokens +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlTextSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlTextSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlTextSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlTextSyntax.AddTextTokens(Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlTextSyntax.Update(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlTextSyntax.WithTextTokens(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlTextSyntax.get_TextTokens +Microsoft.CodeAnalysis.VisualBasic.Syntax.YieldStatementSyntax +Microsoft.CodeAnalysis.VisualBasic.Syntax.YieldStatementSyntax.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.Syntax.YieldStatementSyntax.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.Syntax.YieldStatementSyntax.Update(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.YieldStatementSyntax.WithExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.Syntax.YieldStatementSyntax.WithYieldKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.Syntax.YieldStatementSyntax.get_Expression +Microsoft.CodeAnalysis.VisualBasic.Syntax.YieldStatementSyntax.get_YieldKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxExtensions +Microsoft.CodeAnalysis.VisualBasic.SyntaxExtensions.Attributes(Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxExtensions.NormalizeWhitespace(Microsoft.CodeAnalysis.SyntaxToken,System.String,System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.SyntaxExtensions.NormalizeWhitespace(Microsoft.CodeAnalysis.SyntaxToken,System.String,System.String,System.Boolean,System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.SyntaxExtensions.NormalizeWhitespace(Microsoft.CodeAnalysis.SyntaxTriviaList,System.String,System.String,System.Boolean,System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.SyntaxExtensions.NormalizeWhitespace``1(``0,System.Boolean,System.String,System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.SyntaxExtensions.NormalizeWhitespace``1(``0,System.Boolean,System.String,System.String,System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.SyntaxExtensions.ToSyntaxTriviaList(System.Collections.Generic.IEnumerable{Microsoft.CodeAnalysis.SyntaxTrivia}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxExtensions.TryGetInferredMemberName(Microsoft.CodeAnalysis.SyntaxNode) +Microsoft.CodeAnalysis.VisualBasic.SyntaxExtensions.Type(Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxExtensions.Type(Microsoft.CodeAnalysis.VisualBasic.Syntax.NewExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxExtensions.WithIdentifier(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleNameSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.#ctor +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AccessorBlock(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AccessorBlock(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AccessorStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AccessorStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AddAssignmentStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AddAssignmentStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AddExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AddExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AddHandlerAccessorBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AddHandlerAccessorBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AddHandlerAccessorBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AddHandlerAccessorStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AddHandlerAccessorStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AddHandlerAccessorStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AddHandlerStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AddHandlerStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AddRemoveHandlerStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AddRemoveHandlerStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AddressOfExpression(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AddressOfExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AggregateClause(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax},Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AggregateClause(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.QueryClauseSyntax},Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AggregateClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.QueryClauseSyntax},Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AggregationRangeVariable(Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AggregationRangeVariable(Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableNameEqualsSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AndAlsoExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AndAlsoExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AndExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AndExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AnonymousObjectCreationExpression(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectMemberInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AnonymousObjectCreationExpression(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectMemberInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AnonymousObjectCreationExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectMemberInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AreEquivalent(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AreEquivalent(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,System.Func{Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,System.Boolean}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AreEquivalent(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AreEquivalent(Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AreEquivalent(Microsoft.CodeAnalysis.SyntaxTree,Microsoft.CodeAnalysis.SyntaxTree,System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AreEquivalent``1(Microsoft.CodeAnalysis.SeparatedSyntaxList{``0},Microsoft.CodeAnalysis.SeparatedSyntaxList{``0},System.Func{Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,System.Boolean}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AreEquivalent``1(Microsoft.CodeAnalysis.SyntaxList{``0},Microsoft.CodeAnalysis.SyntaxList{``0},System.Func{Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,System.Boolean}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ArgumentList +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ArgumentList(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ArgumentList(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentSyntax},Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ArrayCreationExpression(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ArrayCreationExpression(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayRankSpecifierSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ArrayCreationExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ArrayRankSpecifier +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ArrayRankSpecifier(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ArrayType(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ArrayType(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayRankSpecifierSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AsNewClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.NewExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AsNewClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.NewExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AscendingOrdering(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AscendingOrdering(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AssignmentStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Attribute(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeTargetSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Attribute(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AttributeList +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AttributeList(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AttributeList(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax},Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AttributeTarget(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AttributeTarget(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AttributesStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AttributesStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AwaitExpression(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.AwaitExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.BadDirectiveTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.BadDirectiveTrivia(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.BadToken(Microsoft.CodeAnalysis.SyntaxTriviaList,System.String,Microsoft.CodeAnalysis.SyntaxTriviaList) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.BadToken(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.BinaryConditionalExpression(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.BinaryConditionalExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.BinaryExpression(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.BracketedIdentifier(Microsoft.CodeAnalysis.SyntaxTriviaList,System.String,Microsoft.CodeAnalysis.SyntaxTriviaList) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.BracketedIdentifier(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CTypeExpression(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CTypeExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CallStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CallStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CaseBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CaseBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CaseBlock(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CaseBlock(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CaseElseBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CaseElseBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CaseElseStatement(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseClauseSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CaseElseStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseClauseSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CaseElseStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseClauseSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CaseEqualsClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CaseEqualsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CaseGreaterThanClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CaseGreaterThanClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CaseGreaterThanOrEqualClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CaseGreaterThanOrEqualClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CaseLessThanClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CaseLessThanClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CaseLessThanOrEqualClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CaseLessThanOrEqualClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CaseNotEqualsClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CaseNotEqualsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CaseStatement(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseClauseSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CaseStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseClauseSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CaseStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseClauseSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CaseStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseClauseSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CaseStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseClauseSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CaseStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseClauseSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CatchBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CatchBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CatchFilterClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CatchFilterClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CatchStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CatchStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchFilterClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CatchStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchFilterClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CharacterLiteralExpression(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CharacterLiteralToken(Microsoft.CodeAnalysis.SyntaxTriviaList,System.String,System.Char,Microsoft.CodeAnalysis.SyntaxTriviaList) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CharacterLiteralToken(System.String,System.Char) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ClassBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ClassBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ClassBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ClassConstraint(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ClassStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ClassStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ClassStatement(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ClassStatement(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CollectionInitializer +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CollectionInitializer(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CollectionInitializer(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax},Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CollectionRangeVariable(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CollectionRangeVariable(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CollectionRangeVariable(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ColonTrivia(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CommentTrivia(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CompilationUnit +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CompilationUnit(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.OptionStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributesStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CompilationUnit(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.OptionStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributesStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ConcatenateAssignmentStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ConcatenateAssignmentStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ConcatenateExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ConcatenateExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ConditionalAccessExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ConditionalAccessExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ConditionalAccessExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ConflictMarkerTrivia(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ConstDirectiveTrivia(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ConstDirectiveTrivia(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ConstDirectiveTrivia(System.String,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ConstructorBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ConstructorBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ConstructorBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ContinueDoStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ContinueDoStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ContinueForStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ContinueForStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ContinueStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ContinueStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ContinueWhileStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ContinueWhileStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CrefOperatorReference(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CrefOperatorReference(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CrefReference(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CrefReference(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignatureSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CrefSignature(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignaturePartSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CrefSignature(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignaturePartSyntax},Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CrefSignature(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignaturePartSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CrefSignaturePart +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.CrefSignaturePart(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DateLiteralExpression(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DateLiteralToken(Microsoft.CodeAnalysis.SyntaxTriviaList,System.String,System.DateTime,Microsoft.CodeAnalysis.SyntaxTriviaList) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DateLiteralToken(System.String,System.DateTime) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DecimalLiteralToken(Microsoft.CodeAnalysis.SyntaxTriviaList,System.String,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeCharacter,System.Decimal,Microsoft.CodeAnalysis.SyntaxTriviaList) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DecimalLiteralToken(System.String,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeCharacter,System.Decimal) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DeclareFunctionStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DeclareFunctionStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DeclareFunctionStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DeclareFunctionStatement(System.String,Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DeclareStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DeclareStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DeclareStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DeclareStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,System.String,Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DeclareSubStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DeclareSubStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DeclareSubStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DeclareSubStatement(System.String,Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DelegateFunctionStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DelegateFunctionStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DelegateFunctionStatement(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DelegateFunctionStatement(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DelegateStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DelegateStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DelegateStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DelegateStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DelegateSubStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DelegateSubStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DelegateSubStatement(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DelegateSubStatement(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DescendingOrdering(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DescendingOrdering(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DictionaryAccessExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DictionaryAccessExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DictionaryAccessExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DirectCastExpression(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DirectCastExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DisableWarningDirectiveTrivia(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DisableWarningDirectiveTrivia(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DisableWarningDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DisabledTextTrivia(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DistinctClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DistinctClause(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DivideAssignmentStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DivideAssignmentStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DivideExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DivideExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DoLoopBlock(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.DoStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.LoopStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DoLoopBlock(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.DoStatementSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.LoopStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DoLoopUntilBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.DoStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.LoopStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DoLoopUntilBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.DoStatementSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.LoopStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DoLoopWhileBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.DoStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.LoopStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DoLoopWhileBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.DoStatementSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.LoopStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DoStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DoStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DoStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DoUntilLoopBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.DoStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.LoopStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DoUntilLoopBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.DoStatementSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.LoopStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DoUntilStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DoUntilStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DoUntilStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DoWhileLoopBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.DoStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.LoopStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DoWhileLoopBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.DoStatementSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.LoopStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DoWhileStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DoWhileStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DoWhileStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DocumentationComment(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DocumentationCommentExteriorTrivia(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DocumentationCommentLineBreakToken(Microsoft.CodeAnalysis.SyntaxTriviaList,System.String,System.String,Microsoft.CodeAnalysis.SyntaxTriviaList) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DocumentationCommentLineBreakToken(System.String,System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DocumentationCommentTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.DocumentationCommentTrivia(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ElasticEndOfLine(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ElasticWhitespace(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ElseBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ElseBlock(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ElseBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ElseCaseClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ElseCaseClause(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ElseDirectiveTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ElseDirectiveTrivia(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ElseIfBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ElseIfBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ElseIfDirectiveTrivia(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ElseIfDirectiveTrivia(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ElseIfStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ElseIfStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ElseStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ElseStatement(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EmptyStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EmptyStatement(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EnableWarningDirectiveTrivia(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EnableWarningDirectiveTrivia(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EnableWarningDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndAddHandlerStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndAddHandlerStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndBlockStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndBlockStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndClassStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndClassStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndEnumStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndEnumStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndEventStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndEventStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndExternalSourceDirectiveTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndExternalSourceDirectiveTrivia(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndFunctionStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndFunctionStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndGetStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndGetStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndIfDirectiveTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndIfDirectiveTrivia(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndIfStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndIfStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndInterfaceStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndInterfaceStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndModuleStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndModuleStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndNamespaceStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndNamespaceStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndOfLine(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndOfLine(System.String,System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndOfLineTrivia(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndOperatorStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndOperatorStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndPropertyStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndPropertyStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndRaiseEventStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndRaiseEventStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndRegionDirectiveTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndRegionDirectiveTrivia(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndRemoveHandlerStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndRemoveHandlerStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndSelectStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndSelectStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndSetStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndSetStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndStatement(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndStructureStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndStructureStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndSubStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndSubStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndSyncLockStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndSyncLockStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndTryStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndTryStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndUsingStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndUsingStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndWhileStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndWhileStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndWithStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EndWithStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EnumBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EnumBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EnumBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EnumMemberDeclaration(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EnumMemberDeclaration(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EnumMemberDeclaration(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EnumStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EnumStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EnumStatement(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EnumStatement(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EqualsExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EqualsExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EqualsValue(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EqualsValue(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EraseStatement(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EraseStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EraseStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ErrorStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ErrorStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EventBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EventBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EventStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EventStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EventStatement(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.EventStatement(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExclusiveOrExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExclusiveOrExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExitDoStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExitDoStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExitForStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExitForStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExitFunctionStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExitFunctionStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExitOperatorStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExitOperatorStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExitPropertyStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExitPropertyStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExitSelectStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExitSelectStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExitStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExitStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExitSubStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExitSubStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExitTryStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExitTryStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExitWhileStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExitWhileStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExponentiateAssignmentStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExponentiateAssignmentStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExponentiateExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExponentiateExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExpressionRangeVariable(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExpressionRangeVariable(Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableNameEqualsSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExpressionStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExternalChecksumDirectiveTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExternalChecksumDirectiveTrivia(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExternalSourceDirectiveTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ExternalSourceDirectiveTrivia(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.FalseLiteralExpression(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.FieldDeclaration(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableDeclaratorSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.FieldDeclaration(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableDeclaratorSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.FieldDeclaration(Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableDeclaratorSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.FinallyBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.FinallyBlock(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.FinallyBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.FinallyStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.FinallyStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.FinallyStatement(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.FloatingLiteralToken(Microsoft.CodeAnalysis.SyntaxTriviaList,System.String,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeCharacter,System.Double,Microsoft.CodeAnalysis.SyntaxTriviaList) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.FloatingLiteralToken(System.String,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeCharacter,System.Double) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ForBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ForBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.NextStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ForEachBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ForEachBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.NextStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ForEachStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ForEachStatement(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ForStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStepClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ForStatement(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ForStatement(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStepClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ForStepClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ForStepClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.FromClause(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.FromClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.FromClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.FunctionAggregation(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.FunctionAggregation(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.FunctionAggregation(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.FunctionAggregation(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.FunctionBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.FunctionBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.FunctionBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.FunctionLambdaHeader +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.FunctionLambdaHeader(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.FunctionLambdaHeader(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.FunctionStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.FunctionStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.FunctionStatement(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.FunctionStatement(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.GenericName(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.GenericName(System.String,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.GetAccessorBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.GetAccessorBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.GetAccessorBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.GetAccessorStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.GetAccessorStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.GetAccessorStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.GetStandaloneExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.GetTypeExpression(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.GetTypeExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.GetXmlNamespaceExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.GetXmlNamespaceExpression(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlPrefixNameSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.GlobalName +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.GlobalName(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.GoToStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.GoToStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.GreaterThanExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.GreaterThanExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.GreaterThanOrEqualExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.GreaterThanOrEqualExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.GroupAggregation +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.GroupAggregation(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.GroupByClause(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax},Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.GroupByClause(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax},Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax},Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.GroupByClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax},Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax},Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.GroupJoinClause(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax},Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax},Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.GroupJoinClause(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax},Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax},Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.GroupJoinClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax},Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax},Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.HandlesClause(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseItemSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.HandlesClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseItemSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.HandlesClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseItemSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.HandlesClauseItem(Microsoft.CodeAnalysis.VisualBasic.Syntax.EventContainerSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.HandlesClauseItem(Microsoft.CodeAnalysis.VisualBasic.Syntax.EventContainerSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Identifier(Microsoft.CodeAnalysis.SyntaxTriviaList,System.String,Microsoft.CodeAnalysis.SyntaxTriviaList) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Identifier(Microsoft.CodeAnalysis.SyntaxTriviaList,System.String,System.Boolean,System.String,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeCharacter,Microsoft.CodeAnalysis.SyntaxTriviaList) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Identifier(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Identifier(System.String,System.Boolean,System.String,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeCharacter) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.IdentifierLabel(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.IdentifierLabel(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.IdentifierName(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.IdentifierName(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.IfDirectiveTrivia(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.IfDirectiveTrivia(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.IfDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.IfDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.IfStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.IfStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ImplementsClause(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ImplementsClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ImplementsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ImplementsStatement(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ImplementsStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ImplementsStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ImportAliasClause(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ImportAliasClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ImportAliasClause(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ImportsStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ImportsStatement(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ImportsStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsClauseSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.IncompleteMember +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.IncompleteMember(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.InferredFieldInitializer(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.InferredFieldInitializer(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.InheritsStatement(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.InheritsStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.InheritsStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.IntegerDivideAssignmentStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.IntegerDivideAssignmentStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.IntegerDivideExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.IntegerDivideExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.IntegerLiteralToken(Microsoft.CodeAnalysis.SyntaxTriviaList,System.String,Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralBase,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeCharacter,System.UInt64,Microsoft.CodeAnalysis.SyntaxTriviaList) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.IntegerLiteralToken(System.String,Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralBase,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeCharacter,System.UInt64) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.InterfaceBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.InterfaceBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.InterfaceBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.InterfaceStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.InterfaceStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.InterfaceStatement(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.InterfaceStatement(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.InterpolatedStringExpression(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolatedStringContentSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.InterpolatedStringExpression(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolatedStringContentSyntax},Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.InterpolatedStringExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolatedStringContentSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.InterpolatedStringText +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.InterpolatedStringText(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.InterpolatedStringTextToken(Microsoft.CodeAnalysis.SyntaxTriviaList,System.String,System.String,Microsoft.CodeAnalysis.SyntaxTriviaList) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.InterpolatedStringTextToken(System.String,System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Interpolation(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationAlignmentClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationFormatClauseSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Interpolation(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Interpolation(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationAlignmentClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.InterpolationAlignmentClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.InterpolationAlignmentClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.InterpolationFormatClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.InterpolationFormatClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.InvocationExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.InvocationExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.InvocationExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.IsExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.IsExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.IsNotExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.IsNotExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.JoinCondition(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.JoinCondition(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.KeywordEventContainer(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Label(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Label(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.LabelStatement(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.LabelStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.LabelStatement(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.LambdaHeader(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.LambdaHeader(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.LeftShiftAssignmentStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.LeftShiftAssignmentStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.LeftShiftExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.LeftShiftExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.LessThanExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.LessThanExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.LessThanOrEqualExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.LessThanOrEqualExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.LetClause(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.LetClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.LetClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.LikeExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.LikeExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.LineContinuationTrivia(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.List``1 +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.List``1(System.Collections.Generic.IEnumerable{``0}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Literal(Microsoft.CodeAnalysis.SyntaxTriviaList,System.String,System.Char,Microsoft.CodeAnalysis.SyntaxTriviaList) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Literal(Microsoft.CodeAnalysis.SyntaxTriviaList,System.String,System.Decimal,Microsoft.CodeAnalysis.SyntaxTriviaList) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Literal(Microsoft.CodeAnalysis.SyntaxTriviaList,System.String,System.Double,Microsoft.CodeAnalysis.SyntaxTriviaList) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Literal(Microsoft.CodeAnalysis.SyntaxTriviaList,System.String,System.Int32,Microsoft.CodeAnalysis.SyntaxTriviaList) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Literal(Microsoft.CodeAnalysis.SyntaxTriviaList,System.String,System.Int64,Microsoft.CodeAnalysis.SyntaxTriviaList) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Literal(Microsoft.CodeAnalysis.SyntaxTriviaList,System.String,System.Single,Microsoft.CodeAnalysis.SyntaxTriviaList) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Literal(Microsoft.CodeAnalysis.SyntaxTriviaList,System.String,System.String,Microsoft.CodeAnalysis.SyntaxTriviaList) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Literal(Microsoft.CodeAnalysis.SyntaxTriviaList,System.String,System.UInt32,Microsoft.CodeAnalysis.SyntaxTriviaList) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Literal(Microsoft.CodeAnalysis.SyntaxTriviaList,System.String,System.UInt64,Microsoft.CodeAnalysis.SyntaxTriviaList) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Literal(System.Char) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Literal(System.Decimal) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Literal(System.Double) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Literal(System.Int32) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Literal(System.Int64) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Literal(System.Single) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Literal(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Literal(System.String,System.Char) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Literal(System.String,System.Decimal) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Literal(System.String,System.Double) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Literal(System.String,System.Int32) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Literal(System.String,System.Int64) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Literal(System.String,System.Single) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Literal(System.String,System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Literal(System.String,System.UInt32) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Literal(System.String,System.UInt64) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Literal(System.UInt32) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Literal(System.UInt64) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.LiteralExpression(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.LocalDeclarationStatement(Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableDeclaratorSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.LoopStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.LoopStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.LoopStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.LoopUntilStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.LoopUntilStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.LoopUntilStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.LoopWhileStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.LoopWhileStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.LoopWhileStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.MeExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.MeExpression(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.MemberAccessExpression(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.MemberAccessExpression(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.MethodBlock(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.MethodBlock(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.MethodStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.MethodStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.MethodStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.MidAssignmentStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.MidAssignmentStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.MidExpression(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.MidExpression(System.String,Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ModifiedIdentifier(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ModifiedIdentifier(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayRankSpecifierSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ModifiedIdentifier(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ModifiedIdentifier(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ModuleBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ModuleBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ModuleBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ModuleStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ModuleStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ModuleStatement(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ModuleStatement(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ModuloExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ModuloExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.MultiLineFunctionLambdaExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.MultiLineFunctionLambdaExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.MultiLineIfBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.IfStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.MultiLineIfBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.IfStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfBlockSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.MultiLineIfBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.IfStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfBlockSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseBlockSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.MultiLineLambdaExpression(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.MultiLineLambdaExpression(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.MultiLineSubLambdaExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.MultiLineSubLambdaExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.MultiplyAssignmentStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.MultiplyAssignmentStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.MultiplyExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.MultiplyExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.MyBaseExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.MyBaseExpression(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.MyClassExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.MyClassExpression(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NameColonEquals(Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NameColonEquals(Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NameOfExpression(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NameOfExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NamedFieldInitializer(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NamedFieldInitializer(Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NamedTupleElement(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NamedTupleElement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NamedTupleElement(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NamespaceBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NamespaceBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NamespaceBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NamespaceStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.NameSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NamespaceStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.NameSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NewConstraint(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NextLabel +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NextLabel(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NextStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NextStatement(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NextStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NodeOrTokenList +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NodeOrTokenList(Microsoft.CodeAnalysis.SyntaxNodeOrToken[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NodeOrTokenList(System.Collections.Generic.IEnumerable{Microsoft.CodeAnalysis.SyntaxNodeOrToken}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NotEqualsExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NotEqualsExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NotExpression(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NotExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NothingLiteralExpression(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NullableType(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NullableType(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NumericLabel +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NumericLabel(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.NumericLiteralExpression(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ObjectCollectionInitializer(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ObjectCollectionInitializer(Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ObjectCreationExpression(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCreationInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ObjectCreationExpression(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCreationInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ObjectCreationExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ObjectMemberInitializer(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldInitializerSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ObjectMemberInitializer(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldInitializerSyntax},Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ObjectMemberInitializer(Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldInitializerSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.OmittedArgument +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.OmittedArgument(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.OnErrorGoToLabelStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.OnErrorGoToLabelStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.OnErrorGoToMinusOneStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.OnErrorGoToMinusOneStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.OnErrorGoToStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.OnErrorGoToStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.OnErrorGoToZeroStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.OnErrorGoToZeroStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.OnErrorResumeNextStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.OnErrorResumeNextStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.OperatorBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.OperatorBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.OperatorBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.OperatorStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.OperatorStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.OperatorStatement(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.OptionStatement(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.OptionStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.OptionStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.OrElseExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.OrElseExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.OrExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.OrExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.OrderByClause(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderingSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.OrderByClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderingSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.OrderByClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderingSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Ordering(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Ordering(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Parameter(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Parameter(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ParameterList +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ParameterList(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ParameterList(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax},Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ParenthesizedExpression(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ParenthesizedExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ParseArgumentList(System.String,System.Int32,System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ParseCompilationUnit(System.String,System.Int32,Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ParseExecutableStatement(System.String,System.Int32,System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ParseExpression(System.String,System.Int32,System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ParseLeadingTrivia(System.String,System.Int32) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ParseName(System.String,System.Int32,System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ParseParameterList(System.String,System.Int32,System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ParseSyntaxTree(Microsoft.CodeAnalysis.Text.SourceText,Microsoft.CodeAnalysis.ParseOptions,System.String,System.Collections.Immutable.ImmutableDictionary{System.String,Microsoft.CodeAnalysis.ReportDiagnostic},System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ParseSyntaxTree(Microsoft.CodeAnalysis.Text.SourceText,Microsoft.CodeAnalysis.ParseOptions,System.String,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ParseSyntaxTree(System.String,Microsoft.CodeAnalysis.ParseOptions,System.String,System.Text.Encoding,System.Collections.Immutable.ImmutableDictionary{System.String,Microsoft.CodeAnalysis.ReportDiagnostic},System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ParseSyntaxTree(System.String,Microsoft.CodeAnalysis.ParseOptions,System.String,System.Text.Encoding,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ParseToken(System.String,System.Int32,System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ParseTokens(System.String,System.Int32,System.Int32,Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ParseTrailingTrivia(System.String,System.Int32) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ParseTypeName(System.String,System.Int32,Microsoft.CodeAnalysis.ParseOptions,System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ParseTypeName(System.String,System.Int32,System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.PartitionClause(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.PartitionWhileClause(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.PartitionWhileClause(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.PredefinedCastExpression(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.PredefinedCastExpression(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.PredefinedType(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.PrintStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.PrintStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.PropertyBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.PropertyBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.PropertyStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.PropertyStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.PropertyStatement(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.PropertyStatement(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.QualifiedCrefOperatorReference(Microsoft.CodeAnalysis.VisualBasic.Syntax.NameSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefOperatorReferenceSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.QualifiedCrefOperatorReference(Microsoft.CodeAnalysis.VisualBasic.Syntax.NameSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefOperatorReferenceSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.QualifiedName(Microsoft.CodeAnalysis.VisualBasic.Syntax.NameSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.QualifiedName(Microsoft.CodeAnalysis.VisualBasic.Syntax.NameSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.QueryExpression(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.QueryClauseSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.QueryExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.QueryClauseSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.RaiseEventAccessorBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.RaiseEventAccessorBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.RaiseEventAccessorBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.RaiseEventAccessorStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.RaiseEventAccessorStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.RaiseEventAccessorStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.RaiseEventStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.RaiseEventStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.RaiseEventStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.RangeArgument(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.RangeArgument(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.RangeCaseClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.RangeCaseClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ReDimPreserveStatement(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.RedimClauseSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ReDimPreserveStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.RedimClauseSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ReDimPreserveStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.RedimClauseSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ReDimStatement(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.RedimClauseSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ReDimStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.RedimClauseSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ReDimStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.RedimClauseSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ReDimStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.RedimClauseSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ReDimStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.RedimClauseSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ReDimStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.RedimClauseSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.RedimClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ReferenceDirectiveTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ReferenceDirectiveTrivia(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.RegionDirectiveTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.RegionDirectiveTrivia(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.RelationalCaseClause(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.RelationalCaseClause(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.RemoveHandlerAccessorBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.RemoveHandlerAccessorBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.RemoveHandlerAccessorBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.RemoveHandlerAccessorStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.RemoveHandlerAccessorStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.RemoveHandlerAccessorStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.RemoveHandlerStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.RemoveHandlerStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ResumeLabelStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ResumeLabelStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ResumeLabelStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ResumeNextStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ResumeNextStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ResumeNextStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ResumeStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ResumeStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ResumeStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ResumeStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ResumeStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ResumeStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ReturnStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ReturnStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ReturnStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.RightShiftAssignmentStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.RightShiftAssignmentStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.RightShiftExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.RightShiftExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SelectBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SelectBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseBlockSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SelectBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseBlockSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SelectClause(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SelectClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SelectClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SelectStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SelectStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SeparatedList``1 +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SeparatedList``1(Microsoft.CodeAnalysis.SyntaxNodeOrTokenList) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SeparatedList``1(System.Collections.Generic.IEnumerable{Microsoft.CodeAnalysis.SyntaxNodeOrToken}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SeparatedList``1(System.Collections.Generic.IEnumerable{``0}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SeparatedList``1(System.Collections.Generic.IEnumerable{``0},System.Collections.Generic.IEnumerable{Microsoft.CodeAnalysis.SyntaxToken}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SetAccessorBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SetAccessorBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SetAccessorBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SetAccessorStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SetAccessorStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SetAccessorStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SimpleArgument(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SimpleArgument(Microsoft.CodeAnalysis.VisualBasic.Syntax.NameColonEqualsSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SimpleAsClause(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SimpleAsClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SimpleAsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SimpleAssignmentStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SimpleAssignmentStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SimpleCaseClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SimpleDoLoopBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.DoStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.LoopStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SimpleDoLoopBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.DoStatementSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.LoopStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SimpleDoStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SimpleDoStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SimpleDoStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SimpleImportsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportAliasClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.NameSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SimpleImportsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.NameSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SimpleJoinClause(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax},Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SimpleJoinClause(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax},Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SimpleJoinClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax},Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SimpleLoopStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SimpleLoopStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SimpleLoopStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SimpleMemberAccessExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SimpleMemberAccessExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SimpleMemberAccessExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SingleLineElseClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SingleLineElseClause(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SingleLineElseClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SingleLineFunctionLambdaExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SingleLineIfStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineElseClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SingleLineIfStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SingleLineIfStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineElseClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SingleLineLambdaExpression(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SingleLineSubLambdaExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SingletonList``1(``0) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SingletonSeparatedList``1(``0) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SkipClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SkipClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SkipWhileClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SkipWhileClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SkippedTokensTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SkippedTokensTrivia(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SpecialConstraint(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.StopOrEndStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.StopStatement(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.StringLiteralExpression(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.StringLiteralToken(Microsoft.CodeAnalysis.SyntaxTriviaList,System.String,System.String,Microsoft.CodeAnalysis.SyntaxTriviaList) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.StringLiteralToken(System.String,System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.StructureBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.StructureBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.StructureBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.StructureConstraint(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.StructureStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.StructureStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.StructureStatement(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.StructureStatement(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SubBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SubBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SubBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SubLambdaHeader +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SubLambdaHeader(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SubLambdaHeader(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SubNewStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SubNewStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SubNewStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SubStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SubStatement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SubStatement(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SubStatement(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SubtractAssignmentStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SubtractAssignmentStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SubtractExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SubtractExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SyncLockBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.SyncLockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SyncLockBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.SyncLockStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SyncLockBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.SyncLockStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SyncLockStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SyncLockStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SyntaxTree(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.ParseOptions,System.String,System.Text.Encoding) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.SyntaxTrivia(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TakeClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TakeClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TakeWhileClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TakeWhileClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TernaryConditionalExpression(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TernaryConditionalExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ThrowStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ThrowStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.ThrowStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Token(Microsoft.CodeAnalysis.SyntaxTriviaList,Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxTriviaList,System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Token(Microsoft.CodeAnalysis.SyntaxTriviaList,Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Token(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxTriviaList,System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Token(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TokenList +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TokenList(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TokenList(Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TokenList(System.Collections.Generic.IEnumerable{Microsoft.CodeAnalysis.SyntaxToken}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Trivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.StructuredTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TriviaList +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TriviaList(Microsoft.CodeAnalysis.SyntaxTrivia) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TriviaList(Microsoft.CodeAnalysis.SyntaxTrivia[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TriviaList(System.Collections.Generic.IEnumerable{Microsoft.CodeAnalysis.SyntaxTrivia}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TrueLiteralExpression(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TryBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TryBlock(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchBlockSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.FinallyBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TryBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.TryStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchBlockSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.FinallyBlockSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TryCastExpression(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TryCastExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TryStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TryStatement(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TupleExpression(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleArgumentSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TupleExpression(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleArgumentSyntax},Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TupleExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleArgumentSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TupleType(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleElementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TupleType(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleElementSyntax},Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TupleType(Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleElementSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TypeArgumentList(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TypeArgumentList(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax},Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TypeArgumentList(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TypeBlock(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax},Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TypeConstraint(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TypeOfExpression(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TypeOfExpression(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TypeOfIsExpression(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TypeOfIsExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TypeOfIsNotExpression(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TypeOfIsNotExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TypeParameter(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TypeParameter(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterConstraintClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TypeParameter(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TypeParameterList(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TypeParameterList(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSyntax},Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TypeParameterList(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TypeParameterMultipleConstraintClause(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstraintSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TypeParameterMultipleConstraintClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstraintSyntax},Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TypeParameterMultipleConstraintClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstraintSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TypeParameterSingleConstraintClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstraintSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TypeParameterSingleConstraintClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstraintSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TypeStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax},Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.TypedTupleElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.UnaryExpression(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.UnaryMinusExpression(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.UnaryMinusExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.UnaryPlusExpression(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.UnaryPlusExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.UntilClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.UntilClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.UsingBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.UsingBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.UsingBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.UsingStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.UsingStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableDeclaratorSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.UsingStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableDeclaratorSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.VariableDeclarator(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.VariableDeclarator(Microsoft.CodeAnalysis.SeparatedSyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.AsClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.VariableDeclarator(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.VariableNameEquals(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.VariableNameEquals(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.VariableNameEquals(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.WhereClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.WhereClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.WhileBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.WhileBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.WhileBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.WhileClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.WhileClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.WhileOrUntilClause(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.WhileStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.WhileStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Whitespace(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.Whitespace(System.String,System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.WhitespaceTrivia(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.WithBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.WithStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.WithBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.WithStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.WithBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.WithStatementSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.WithEventsEventContainer(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.WithEventsEventContainer(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.WithEventsPropertyEventContainer(Microsoft.CodeAnalysis.VisualBasic.Syntax.WithEventsEventContainerSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.WithEventsPropertyEventContainer(Microsoft.CodeAnalysis.VisualBasic.Syntax.WithEventsEventContainerSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.WithStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.WithStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlAttribute(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlAttribute(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlAttributeAccessExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlAttributeAccessExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlAttributeAccessExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlBracketedName(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlBracketedName(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlCDataSection +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlCDataSection(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlComment +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlComment(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlCrefAttribute(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlCrefAttribute(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax,Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlCrefAttribute(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlCrefAttribute(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlDeclaration(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationOptionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationOptionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationOptionSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlDeclaration(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationOptionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlDeclaration(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationOptionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationOptionSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationOptionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlDeclarationOption(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlStringSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlDeclarationOption(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlStringSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlDescendantAccessExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlDescendantAccessExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlDescendantAccessExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlDocument(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlDocument(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementStartTagSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax},Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementEndTagSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementStartTagSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementEndTagSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlElement(System.String,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlElementAccessExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlElementAccessExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlElementAccessExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlElementEndTag +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlElementEndTag(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlElementEndTag(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlElementStartTag(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax},Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlElementStartTag(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlElementStartTag(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlEmbeddedExpression(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlEmbeddedExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlEmptyElement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax},Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlEmptyElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlEmptyElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlEmptyElement(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlEntityLiteralToken(Microsoft.CodeAnalysis.SyntaxTriviaList,System.String,System.String,Microsoft.CodeAnalysis.SyntaxTriviaList) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlEntityLiteralToken(System.String,System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlExampleElement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlExampleElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlExceptionElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlExceptionElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlMemberAccessExpression(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlMemberAccessExpression(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlMemberAccessExpression(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlMultiLineElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlMultiLineElement(System.String,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlName +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlName(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlPrefixSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlNameAttribute(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlNameAttribute(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameSyntax,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlNameAttribute(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlNameToken(Microsoft.CodeAnalysis.SyntaxTriviaList,System.String,Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,Microsoft.CodeAnalysis.SyntaxTriviaList) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlNameToken(System.String,Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlNamespaceImportsClause(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlAttributeSyntax,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlNamespaceImportsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlAttributeSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlNewLine(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlNullKeywordElement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlParaElement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlParaElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlParamElement(System.String,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlParamElement(System.String,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlParamRefElement(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlPermissionElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlPermissionElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlPlaceholderElement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlPlaceholderElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlPrefix +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlPrefix(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlPrefixName +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlPrefixName(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlPreliminaryElement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlProcessingInstruction +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlProcessingInstruction(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlRemarksElement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlRemarksElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlReturnsElement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlReturnsElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlSeeAlsoElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlSeeAlsoElement(System.Uri,Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlSeeElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlString(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlString(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlSummaryElement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlSummaryElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlText +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlText(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlText(Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlText(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlTextLiteral(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlTextLiteral(System.String,System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlTextLiteralToken(Microsoft.CodeAnalysis.SyntaxTriviaList,System.String,System.String,Microsoft.CodeAnalysis.SyntaxTriviaList) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlTextLiteralToken(System.String,System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlTextNewLine(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlTextNewLine(System.String,System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlTextNewLine(System.String,System.String,Microsoft.CodeAnalysis.SyntaxTriviaList,Microsoft.CodeAnalysis.SyntaxTriviaList) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlTextToken(Microsoft.CodeAnalysis.SyntaxTriviaList,Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,System.String,System.String,Microsoft.CodeAnalysis.SyntaxTriviaList) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlTextToken(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind,System.String,System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlThreadSafetyElement +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlThreadSafetyElement(System.Boolean,System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlValueElement(Microsoft.CodeAnalysis.SyntaxList{Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax}) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.XmlValueElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax[]) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.YieldStatement(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.YieldStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.get_CarriageReturn +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.get_CarriageReturnLineFeed +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.get_ElasticCarriageReturn +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.get_ElasticCarriageReturnLineFeed +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.get_ElasticLineFeed +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.get_ElasticMarker +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.get_ElasticSpace +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.get_ElasticTab +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.get_LineFeed +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.get_Space +Microsoft.CodeAnalysis.VisualBasic.SyntaxFactory.get_Tab +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.#ctor +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.AllowsLeadingImplicitLineContinuation(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.AllowsTrailingImplicitLineContinuation(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.GetAccessorStatementKind(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.GetBaseTypeStatementKind(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.GetBinaryExpression(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.GetBlockName(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.GetContextualKeywordKind(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.GetContextualKeywordKinds +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.GetInstanceExpression(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.GetKeywordKind(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.GetKeywordKinds +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.GetLiteralExpression(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.GetOperatorKind(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.GetPreprocessorKeywordKind(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.GetPreprocessorKeywordKinds +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.GetPunctuationKinds +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.GetReservedKeywordKinds +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.GetText(Microsoft.CodeAnalysis.Accessibility) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.GetText(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.GetTypeStatementKind(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.GetUnaryExpression(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsAccessibilityModifier(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsAccessorBlock(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsAccessorStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsAccessorStatementAccessorKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsAccessorStatementKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsAddRemoveHandlerStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsAddRemoveHandlerStatementAddHandlerOrRemoveHandlerKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsAddressOfOperand(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsAnyToken(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsAssignmentStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsAssignmentStatementOperatorToken(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsAttributeName(Microsoft.CodeAnalysis.SyntaxNode) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsAttributeTargetAttributeModifier(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsBinaryExpression(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsBinaryExpressionOperatorToken(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsCaseBlock(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsCaseStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsColon(System.Char) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsContextualKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsContinueStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsContinueStatementBlockKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsCrefOperatorReferenceOperatorToken(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsCrefSignaturePartModifier(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsDeclareStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsDeclareStatementCharsetKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsDeclareStatementKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsDeclareStatementSubOrFunctionKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsDelegateStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsDelegateStatementKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsDelegateStatementSubOrFunctionKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsDoLoopBlock(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsDoStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsEndBlockStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsEndBlockStatementBlockKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsExitStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsExitStatementBlockKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsHash(System.Char) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsIdentifierPartCharacter(System.Char) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsIdentifierStartCharacter(System.Char) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsIfDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsIfDirectiveTriviaIfOrElseIfKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsInNamespaceOrTypeContext(Microsoft.CodeAnalysis.SyntaxNode) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsInTypeOnlyContext(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsInstanceExpression(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsInvocationOrAddressOfOperand(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsInvoked(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsKeywordEventContainerKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsKeywordKind(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsLabel(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsLabelLabelToken(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsLabelStatementLabelToken(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsLambdaHeader(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsLambdaHeaderKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsLambdaHeaderSubOrFunctionKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsLanguagePunctuation(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsLiteralExpression(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsLiteralExpressionToken(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsLoopStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsMemberAccessExpression(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsMemberAccessExpressionOperatorToken(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsMethodBlock(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsMethodStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsMethodStatementKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsMethodStatementSubOrFunctionKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsMultiLineLambdaExpression(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsName(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsNamedArgumentName(Microsoft.CodeAnalysis.SyntaxNode) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsNamespaceMemberDeclaration(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsNewLine(System.Char) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsOnErrorGoToStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsOperator(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsOperatorStatementOperatorToken(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsOptionStatementNameKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsOptionStatementValueKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsOrdering(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsOrderingAscendingOrDescendingKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsPartitionClause(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsPartitionClauseSkipOrTakeKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsPartitionWhileClause(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsPartitionWhileClauseSkipOrTakeKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsPredefinedCastExpressionKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsPredefinedType(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsPreprocessorDirective(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsPreprocessorKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsPreprocessorPunctuation(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsPunctuation(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsPunctuationOrKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsReDimStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsRelationalCaseClause(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsRelationalCaseClauseOperatorToken(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsRelationalOperator(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsReservedKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsReservedTupleElementName(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsResumeStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsSingleLineLambdaExpression(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsSpecialConstraint(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsSpecialConstraintConstraintKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsStopOrEndStatement(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsStopOrEndStatementStopOrEndKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsTrivia(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsTypeOfExpression(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsTypeOfExpressionOperatorToken(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsTypeParameterVarianceKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsUnaryExpression(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsUnaryExpressionOperatorToken(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsUnderscore(System.Char) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsValidIdentifier(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsWhileOrUntilClause(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsWhileOrUntilClauseWhileOrUntilKeyword(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsWhitespace(System.Char) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsXmlCrefAttributeEndQuoteToken(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsXmlCrefAttributeStartQuoteToken(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsXmlMemberAccessExpression(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsXmlMemberAccessExpressionToken2(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsXmlNameAttributeEndQuoteToken(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsXmlNameAttributeStartQuoteToken(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsXmlStringEndQuoteToken(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsXmlStringStartQuoteToken(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsXmlTextToken(Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.IsXmlWhitespace(System.Char) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.MakeHalfWidthIdentifier(System.String) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.VarianceKindFromToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.SyntaxFacts.get_EqualityComparer +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AddAssignmentStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AddExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AddHandlerAccessorBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AddHandlerAccessorStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AddHandlerKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AddHandlerStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AddressOfExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AddressOfKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AggregateClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AggregateKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AggregationRangeVariable +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AliasKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AllKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AmpersandEqualsToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AmpersandToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AndAlsoExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AndAlsoKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AndExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AndKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AnonymousObjectCreationExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AnsiKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ArgumentList +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ArrayCreationExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ArrayRankSpecifier +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ArrayType +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AsKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AsNewClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AscendingKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AscendingOrdering +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AssemblyKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AsteriskEqualsToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AsteriskToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AsyncKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AtToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.Attribute +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AttributeList +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AttributeTarget +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AttributesStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AutoKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AwaitExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.AwaitKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.BackslashEqualsToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.BackslashToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.BadDirectiveTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.BadToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.BeginCDataToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.BinaryConditionalExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.BinaryKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.BooleanKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ByKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ByRefKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ByValKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ByteKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CBoolKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CByteKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CCharKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CDateKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CDblKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CDecKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CIntKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CLngKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CObjKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CSByteKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CShortKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CSngKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CStrKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CTypeExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CTypeKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CUIntKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CULngKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CUShortKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CallKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CallStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CaretEqualsToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CaretToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CaseBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CaseElseBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CaseElseStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CaseEqualsClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CaseGreaterThanClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CaseGreaterThanOrEqualClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CaseKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CaseLessThanClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CaseLessThanOrEqualClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CaseNotEqualsClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CaseStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CatchBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CatchFilterClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CatchKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CatchStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CharKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CharacterLiteralExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CharacterLiteralToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ClassBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ClassConstraint +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ClassKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ClassStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CloseBraceToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CloseParenToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CollectionInitializer +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CollectionRangeVariable +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ColonEqualsToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ColonToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ColonTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CommaToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CommentTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CompareKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CompilationUnit +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ConcatenateAssignmentStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ConcatenateExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ConditionalAccessExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ConflictMarkerTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ConstDirectiveTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ConstKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ConstructorBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ContinueDoStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ContinueForStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ContinueKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ContinueWhileStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CrefOperatorReference +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CrefReference +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CrefSignature +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CrefSignaturePart +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.CustomKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DateKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DateLiteralExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DateLiteralToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DecimalKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DecimalLiteralToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DeclareFunctionStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DeclareKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DeclareSubStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DefaultKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DelegateFunctionStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DelegateKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DelegateSubStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DescendingKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DescendingOrdering +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DictionaryAccessExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DimKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DirectCastExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DirectCastKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DisableKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DisableWarningDirectiveTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DisabledTextTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DistinctClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DistinctKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DivideAssignmentStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DivideExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DoKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DoLoopUntilBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DoLoopWhileBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DoUntilLoopBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DoUntilStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DoWhileLoopBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DoWhileStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DocumentationCommentExteriorTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DocumentationCommentLineBreakToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DocumentationCommentTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DollarSignDoubleQuoteToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DotToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DoubleKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.DoubleQuoteToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EachKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ElseBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ElseCaseClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ElseDirectiveTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ElseIfBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ElseIfDirectiveTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ElseIfKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ElseIfStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ElseKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ElseStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EmptyStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EmptyToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EnableKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EnableWarningDirectiveTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndAddHandlerStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndCDataToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndClassStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndEnumStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndEventStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndExternalSourceDirectiveTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndFunctionStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndGetStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndIfDirectiveTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndIfKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndIfStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndInterfaceStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndModuleStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndNamespaceStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndOfFileToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndOfInterpolatedStringToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndOfLineTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndOfXmlToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndOperatorStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndPropertyStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndRaiseEventStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndRegionDirectiveTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndRemoveHandlerStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndSelectStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndSetStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndStructureStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndSubStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndSyncLockStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndTryStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndUsingStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndWhileStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EndWithStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EnumBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EnumKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EnumMemberDeclaration +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EnumStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EqualsExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EqualsKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EqualsToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EqualsValue +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EraseKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EraseStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ErrorKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ErrorStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EventBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EventKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.EventStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ExclamationToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ExclusiveOrExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ExitDoStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ExitForStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ExitFunctionStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ExitKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ExitOperatorStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ExitPropertyStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ExitSelectStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ExitSubStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ExitTryStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ExitWhileStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ExplicitKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ExponentiateAssignmentStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ExponentiateExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ExpressionRangeVariable +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ExpressionStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ExternalChecksumDirectiveTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ExternalChecksumKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ExternalSourceDirectiveTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ExternalSourceKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.FalseKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.FalseLiteralExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.FieldDeclaration +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.FinallyBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.FinallyKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.FinallyStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.FloatingLiteralToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ForBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ForEachBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ForEachStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ForKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ForStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ForStepClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.FriendKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.FromClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.FromKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.FunctionAggregation +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.FunctionBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.FunctionKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.FunctionLambdaHeader +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.FunctionStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.GenericName +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.GetAccessorBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.GetAccessorStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.GetKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.GetTypeExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.GetTypeKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.GetXmlNamespaceExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.GetXmlNamespaceKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.GlobalKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.GlobalName +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.GoToKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.GoToStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.GosubKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.GreaterThanEqualsToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.GreaterThanExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.GreaterThanGreaterThanEqualsToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.GreaterThanGreaterThanToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.GreaterThanOrEqualExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.GreaterThanToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.GroupAggregation +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.GroupByClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.GroupJoinClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.GroupKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.HandlesClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.HandlesClauseItem +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.HandlesKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.HashToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.IdentifierLabel +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.IdentifierName +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.IdentifierToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.IfDirectiveTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.IfKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.IfStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ImplementsClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ImplementsKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ImplementsStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ImportAliasClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ImportsKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ImportsStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.InKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.IncompleteMember +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.InferKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.InferredFieldInitializer +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.InheritsKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.InheritsStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.IntegerDivideAssignmentStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.IntegerDivideExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.IntegerKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.IntegerLiteralToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.InterfaceBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.InterfaceKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.InterfaceStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.InterpolatedStringExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.InterpolatedStringText +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.InterpolatedStringTextToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.Interpolation +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.InterpolationAlignmentClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.InterpolationFormatClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.IntoKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.InvocationExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.IsExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.IsFalseKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.IsKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.IsNotExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.IsNotKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.IsTrueKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.IteratorKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.JoinCondition +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.JoinKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.KeyKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.KeywordEventContainer +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LabelStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LeftShiftAssignmentStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LeftShiftExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LessThanEqualsToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LessThanExclamationMinusMinusToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LessThanExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LessThanGreaterThanToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LessThanLessThanEqualsToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LessThanLessThanToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LessThanOrEqualExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LessThanPercentEqualsToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LessThanQuestionToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LessThanSlashToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LessThanToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LetClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LetKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LibKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LikeExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LikeKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LineContinuationTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.List +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LocalDeclarationStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LongKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LoopKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LoopUntilStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.LoopWhileStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.MeExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.MeKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.MidAssignmentStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.MidExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.MidKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.MinusEqualsToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.MinusMinusGreaterThanToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.MinusToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ModKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ModifiedIdentifier +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ModuleBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ModuleKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ModuleStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ModuloExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.MultiLineFunctionLambdaExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.MultiLineIfBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.MultiLineSubLambdaExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.MultiplyAssignmentStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.MultiplyExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.MustInheritKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.MustOverrideKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.MyBaseExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.MyBaseKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.MyClassExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.MyClassKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NameColonEquals +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NameOfExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NameOfKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NamedFieldInitializer +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NamedTupleElement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NamespaceBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NamespaceKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NamespaceStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NarrowingKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NewConstraint +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NewKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NextKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NextLabel +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NextStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.None +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NotEqualsExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NotExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NotInheritableKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NotKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NotOverridableKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NothingKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NothingLiteralExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NullableType +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NumericLabel +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.NumericLiteralExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ObjectCollectionInitializer +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ObjectCreationExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ObjectKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ObjectMemberInitializer +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OfKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OffKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OmittedArgument +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OnErrorGoToLabelStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OnErrorGoToMinusOneStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OnErrorGoToZeroStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OnErrorResumeNextStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OnKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OpenBraceToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OpenParenToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OperatorBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OperatorKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OperatorStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OptionKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OptionStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OptionalKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OrElseExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OrElseKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OrExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OrKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OrderByClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OrderKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OutKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OverloadsKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OverridableKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.OverridesKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ParamArrayKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.Parameter +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ParameterList +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ParenthesizedExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.PartialKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.PercentGreaterThanToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.PlusEqualsToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.PlusToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.PredefinedCastExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.PredefinedType +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.PreserveKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.PrintStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.PrivateKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.PropertyBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.PropertyKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.PropertyStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ProtectedKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.PublicKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.QualifiedCrefOperatorReference +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.QualifiedName +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.QueryExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.QuestionGreaterThanToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.QuestionToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.REMKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.RaiseEventAccessorBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.RaiseEventAccessorStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.RaiseEventKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.RaiseEventStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.RangeArgument +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.RangeCaseClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ReDimKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ReDimPreserveStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ReDimStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ReadOnlyKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.RedimClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ReferenceDirectiveTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ReferenceKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.RegionDirectiveTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.RegionKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.RemoveHandlerAccessorBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.RemoveHandlerAccessorStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.RemoveHandlerKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.RemoveHandlerStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ResumeKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ResumeLabelStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ResumeNextStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ResumeStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ReturnKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ReturnStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.RightShiftAssignmentStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.RightShiftExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SByteKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SelectBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SelectClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SelectKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SelectStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SemicolonToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SetAccessorBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SetAccessorStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SetKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ShadowsKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SharedKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ShortKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SimpleArgument +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SimpleAsClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SimpleAssignmentStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SimpleCaseClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SimpleDoLoopBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SimpleDoStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SimpleImportsClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SimpleJoinClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SimpleLoopStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SimpleMemberAccessExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SingleKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SingleLineElseClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SingleLineFunctionLambdaExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SingleLineIfPart +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SingleLineIfStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SingleLineSubLambdaExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SingleQuoteToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SkipClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SkipKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SkipWhileClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SkippedTokensTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SlashEqualsToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SlashGreaterThanToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SlashToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.StatementTerminatorToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.StaticKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.StepKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.StopKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.StopStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.StrictKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.StringKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.StringLiteralExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.StringLiteralToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.StructureBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.StructureConstraint +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.StructureKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.StructureStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SubBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SubKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SubLambdaHeader +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SubNewStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SubStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SubtractAssignmentStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SubtractExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SyncLockBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SyncLockKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.SyncLockStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.TakeClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.TakeKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.TakeWhileClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.TernaryConditionalExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.TextKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ThenKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ThrowKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ThrowStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ToKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.TrueKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.TrueLiteralExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.TryBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.TryCastExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.TryCastKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.TryKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.TryStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.TupleExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.TupleType +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.TypeArgumentList +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.TypeConstraint +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.TypeKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.TypeOfIsExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.TypeOfIsNotExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.TypeOfKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.TypeParameter +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.TypeParameterList +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.TypeParameterMultipleConstraintClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.TypeParameterSingleConstraintClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.TypedTupleElement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.UIntegerKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.ULongKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.UShortKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.UnaryMinusExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.UnaryPlusExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.UnicodeKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.UntilClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.UntilKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.UsingBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.UsingKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.UsingStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.VariableDeclarator +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.VariableNameEquals +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.VariantKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.WarningKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.WendKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.WhenKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.WhereClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.WhereKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.WhileBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.WhileClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.WhileKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.WhileStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.WhitespaceTrivia +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.WideningKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.WithBlock +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.WithEventsEventContainer +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.WithEventsKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.WithEventsPropertyEventContainer +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.WithKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.WithStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.WriteOnlyKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.XmlAttribute +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.XmlAttributeAccessExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.XmlBracketedName +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.XmlCDataSection +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.XmlComment +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.XmlCrefAttribute +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.XmlDeclaration +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.XmlDeclarationOption +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.XmlDescendantAccessExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.XmlDocument +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.XmlElement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.XmlElementAccessExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.XmlElementEndTag +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.XmlElementStartTag +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.XmlEmbeddedExpression +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.XmlEmptyElement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.XmlEntityLiteralToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.XmlKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.XmlName +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.XmlNameAttribute +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.XmlNameToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.XmlNamespaceImportsClause +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.XmlPrefix +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.XmlPrefixName +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.XmlProcessingInstruction +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.XmlString +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.XmlText +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.XmlTextLiteralToken +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.XorKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.YieldKeyword +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.YieldStatement +Microsoft.CodeAnalysis.VisualBasic.SyntaxKind.value__ +Microsoft.CodeAnalysis.VisualBasic.TypedConstantExtensions +Microsoft.CodeAnalysis.VisualBasic.TypedConstantExtensions.ToVisualBasicString(Microsoft.CodeAnalysis.TypedConstant) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.AddReferences(Microsoft.CodeAnalysis.MetadataReference[]) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.AddReferences(System.Collections.Generic.IEnumerable{Microsoft.CodeAnalysis.MetadataReference}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.AddSyntaxTrees(Microsoft.CodeAnalysis.SyntaxTree[]) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.AddSyntaxTrees(System.Collections.Generic.IEnumerable{Microsoft.CodeAnalysis.SyntaxTree}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.AppendDefaultVersionResource(System.IO.Stream) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.ClassifyCommonConversion(Microsoft.CodeAnalysis.ITypeSymbol,Microsoft.CodeAnalysis.ITypeSymbol) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.ClassifyConversion(Microsoft.CodeAnalysis.ITypeSymbol,Microsoft.CodeAnalysis.ITypeSymbol) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.Clone +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.CommonAddSyntaxTrees(System.Collections.Generic.IEnumerable{Microsoft.CodeAnalysis.SyntaxTree}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.CommonClone +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.CommonContainsSyntaxTree(Microsoft.CodeAnalysis.SyntaxTree) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.CommonCreateAnonymousTypeSymbol(System.Collections.Immutable.ImmutableArray{Microsoft.CodeAnalysis.ITypeSymbol},System.Collections.Immutable.ImmutableArray{System.String},System.Collections.Immutable.ImmutableArray{Microsoft.CodeAnalysis.Location},System.Collections.Immutable.ImmutableArray{System.Boolean},System.Collections.Immutable.ImmutableArray{Microsoft.CodeAnalysis.NullableAnnotation}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.CommonCreateArrayTypeSymbol(Microsoft.CodeAnalysis.ITypeSymbol,System.Int32,Microsoft.CodeAnalysis.NullableAnnotation) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.CommonCreateBuiltinOperator(System.String,Microsoft.CodeAnalysis.ITypeSymbol,Microsoft.CodeAnalysis.ITypeSymbol) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.CommonCreateBuiltinOperator(System.String,Microsoft.CodeAnalysis.ITypeSymbol,Microsoft.CodeAnalysis.ITypeSymbol,Microsoft.CodeAnalysis.ITypeSymbol) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.CommonCreateErrorNamespaceSymbol(Microsoft.CodeAnalysis.INamespaceSymbol,System.String) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.CommonCreateErrorTypeSymbol(Microsoft.CodeAnalysis.INamespaceOrTypeSymbol,System.String,System.Int32) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.CommonCreateFunctionPointerTypeSymbol(Microsoft.CodeAnalysis.ITypeSymbol,Microsoft.CodeAnalysis.RefKind,System.Collections.Immutable.ImmutableArray{Microsoft.CodeAnalysis.ITypeSymbol},System.Collections.Immutable.ImmutableArray{Microsoft.CodeAnalysis.RefKind},System.Reflection.Metadata.SignatureCallingConvention,System.Collections.Immutable.ImmutableArray{Microsoft.CodeAnalysis.INamedTypeSymbol}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.CommonCreateNativeIntegerTypeSymbol(System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.CommonCreatePointerTypeSymbol(Microsoft.CodeAnalysis.ITypeSymbol) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.CommonCreatePreprocessingSymbol(System.String) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.CommonCreateTupleTypeSymbol(Microsoft.CodeAnalysis.INamedTypeSymbol,System.Collections.Immutable.ImmutableArray{System.String},System.Collections.Immutable.ImmutableArray{Microsoft.CodeAnalysis.Location},System.Collections.Immutable.ImmutableArray{Microsoft.CodeAnalysis.NullableAnnotation}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.CommonCreateTupleTypeSymbol(System.Collections.Immutable.ImmutableArray{Microsoft.CodeAnalysis.ITypeSymbol},System.Collections.Immutable.ImmutableArray{System.String},System.Collections.Immutable.ImmutableArray{Microsoft.CodeAnalysis.Location},System.Collections.Immutable.ImmutableArray{Microsoft.CodeAnalysis.NullableAnnotation}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.CommonGetAssemblyOrModuleSymbol(Microsoft.CodeAnalysis.MetadataReference) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.CommonGetCompilationNamespace(Microsoft.CodeAnalysis.INamespaceSymbol) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.CommonGetEntryPoint(System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.CommonGetSemanticModel(Microsoft.CodeAnalysis.SyntaxTree,Microsoft.CodeAnalysis.SemanticModelOptions) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.CommonGetTypeByMetadataName(System.String) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.CommonRemoveAllSyntaxTrees +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.CommonRemoveSyntaxTrees(System.Collections.Generic.IEnumerable{Microsoft.CodeAnalysis.SyntaxTree}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.CommonReplaceSyntaxTree(Microsoft.CodeAnalysis.SyntaxTree,Microsoft.CodeAnalysis.SyntaxTree) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.CommonWithAssemblyName(System.String) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.CommonWithOptions(Microsoft.CodeAnalysis.CompilationOptions) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.CommonWithReferences(System.Collections.Generic.IEnumerable{Microsoft.CodeAnalysis.MetadataReference}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.CommonWithScriptCompilationInfo(Microsoft.CodeAnalysis.ScriptCompilationInfo) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.ContainsSymbolsWithName(System.Func{System.String,System.Boolean},Microsoft.CodeAnalysis.SymbolFilter,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.ContainsSymbolsWithName(System.String,Microsoft.CodeAnalysis.SymbolFilter,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.ContainsSyntaxTree(Microsoft.CodeAnalysis.SyntaxTree) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.Create(System.String,System.Collections.Generic.IEnumerable{Microsoft.CodeAnalysis.SyntaxTree},System.Collections.Generic.IEnumerable{Microsoft.CodeAnalysis.MetadataReference},Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.GetDeclarationDiagnostics(System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.GetDiagnostics(System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.GetMethodBodyDiagnostics(System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.GetParseDiagnostics(System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.GetSemanticModel(Microsoft.CodeAnalysis.SyntaxTree,System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.GetSymbolsWithName(System.Func{System.String,System.Boolean},Microsoft.CodeAnalysis.SymbolFilter,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.GetSymbolsWithName(System.String,Microsoft.CodeAnalysis.SymbolFilter,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.GetUsedAssemblyReferences(System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.RemoveAllReferences +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.RemoveAllSyntaxTrees +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.RemoveReferences(Microsoft.CodeAnalysis.MetadataReference[]) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.RemoveReferences(System.Collections.Generic.IEnumerable{Microsoft.CodeAnalysis.MetadataReference}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.RemoveSyntaxTrees(Microsoft.CodeAnalysis.SyntaxTree[]) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.RemoveSyntaxTrees(System.Collections.Generic.IEnumerable{Microsoft.CodeAnalysis.SyntaxTree}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.ReplaceReference(Microsoft.CodeAnalysis.MetadataReference,Microsoft.CodeAnalysis.MetadataReference) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.ReplaceSyntaxTree(Microsoft.CodeAnalysis.SyntaxTree,Microsoft.CodeAnalysis.SyntaxTree) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.ToMetadataReference(System.Collections.Immutable.ImmutableArray{System.String},System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.WithAssemblyName(System.String) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.WithOptions(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.WithReferences(Microsoft.CodeAnalysis.MetadataReference[]) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.WithReferences(System.Collections.Generic.IEnumerable{Microsoft.CodeAnalysis.MetadataReference}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.get_CommonAssembly +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.get_CommonDynamicType +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.get_CommonGlobalNamespace +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.get_CommonObjectType +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.get_CommonOptions +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.get_CommonScriptClass +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.get_CommonScriptGlobalsType +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.get_CommonSourceModule +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.get_CommonSyntaxTrees +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.get_DirectiveReferences +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.get_IsCaseSensitive +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.get_Language +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.get_LanguageVersion +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.get_Options +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.get_ReferencedAssemblyNames +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation.get_SyntaxTrees +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.CommonWithAssemblyIdentityComparer(Microsoft.CodeAnalysis.AssemblyIdentityComparer) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.CommonWithCheckOverflow(System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.CommonWithConcurrentBuild(System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.CommonWithDelaySign(System.Nullable{System.Boolean}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.CommonWithDeterministic(System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.CommonWithFeatures(System.Collections.Immutable.ImmutableArray{System.String}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.CommonWithGeneralDiagnosticOption(Microsoft.CodeAnalysis.ReportDiagnostic) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.CommonWithMainTypeName(System.String) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.CommonWithMetadataImportOptions(Microsoft.CodeAnalysis.MetadataImportOptions) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.CommonWithMetadataReferenceResolver(Microsoft.CodeAnalysis.MetadataReferenceResolver) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.CommonWithModuleName(System.String) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.CommonWithOptimizationLevel(Microsoft.CodeAnalysis.OptimizationLevel) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.CommonWithOutputKind(Microsoft.CodeAnalysis.OutputKind) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.CommonWithPlatform(Microsoft.CodeAnalysis.Platform) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.CommonWithPublicSign(System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.CommonWithReportSuppressedDiagnostics(System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.CommonWithScriptClassName(System.String) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.CommonWithSourceReferenceResolver(Microsoft.CodeAnalysis.SourceReferenceResolver) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.CommonWithSpecificDiagnosticOptions(System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,Microsoft.CodeAnalysis.ReportDiagnostic}}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.CommonWithSpecificDiagnosticOptions(System.Collections.Immutable.ImmutableDictionary{System.String,Microsoft.CodeAnalysis.ReportDiagnostic}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.CommonWithStrongNameProvider(Microsoft.CodeAnalysis.StrongNameProvider) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.CommonWithSyntaxTreeOptionsProvider(Microsoft.CodeAnalysis.SyntaxTreeOptionsProvider) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.CommonWithXmlReferenceResolver(Microsoft.CodeAnalysis.XmlReferenceResolver) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.ComputeHashCode +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.Equals(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.Equals(System.Object) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithAssemblyIdentityComparer(Microsoft.CodeAnalysis.AssemblyIdentityComparer) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithConcurrentBuild(System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithDelaySign(System.Nullable{System.Boolean}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithDeterministic(System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithEmbedVbCoreRuntime(System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithGeneralDiagnosticOption(Microsoft.CodeAnalysis.ReportDiagnostic) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithGlobalImports(Microsoft.CodeAnalysis.VisualBasic.GlobalImport[]) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithGlobalImports(System.Collections.Generic.IEnumerable{Microsoft.CodeAnalysis.VisualBasic.GlobalImport}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithGlobalImports(System.Collections.Immutable.ImmutableArray{Microsoft.CodeAnalysis.VisualBasic.GlobalImport}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithMainTypeName(System.String) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithMetadataImportOptions(Microsoft.CodeAnalysis.MetadataImportOptions) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithMetadataReferenceResolver(Microsoft.CodeAnalysis.MetadataReferenceResolver) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithModuleName(System.String) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithOptimizationLevel(Microsoft.CodeAnalysis.OptimizationLevel) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithOptionCompareText(System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithOptionExplicit(System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithOptionInfer(System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithOptionStrict(Microsoft.CodeAnalysis.VisualBasic.OptionStrict) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithOutputKind(Microsoft.CodeAnalysis.OutputKind) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithOverflowChecks(System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithParseOptions(Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithPlatform(Microsoft.CodeAnalysis.Platform) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithPublicSign(System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithReportSuppressedDiagnostics(System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithRootNamespace(System.String) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithScriptClassName(System.String) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithSourceReferenceResolver(Microsoft.CodeAnalysis.SourceReferenceResolver) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithSpecificDiagnosticOptions(System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,Microsoft.CodeAnalysis.ReportDiagnostic}}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithSpecificDiagnosticOptions(System.Collections.Immutable.ImmutableDictionary{System.String,Microsoft.CodeAnalysis.ReportDiagnostic}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithStrongNameProvider(Microsoft.CodeAnalysis.StrongNameProvider) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithSyntaxTreeOptionsProvider(Microsoft.CodeAnalysis.SyntaxTreeOptionsProvider) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.WithXmlReferenceResolver(Microsoft.CodeAnalysis.XmlReferenceResolver) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.get_EmbedVbCoreRuntime +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.get_GlobalImports +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.get_Language +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.get_NullableContextOptions +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.get_OptionCompareText +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.get_OptionExplicit +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.get_OptionInfer +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.get_OptionStrict +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.get_ParseOptions +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.get_RootNamespace +Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilationOptions.set_NullableContextOptions(Microsoft.CodeAnalysis.NullableContextOptions) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicDiagnosticFormatter +Microsoft.CodeAnalysis.VisualBasic.VisualBasicDiagnosticFormatter.#ctor +Microsoft.CodeAnalysis.VisualBasic.VisualBasicDiagnosticFormatter.get_Instance +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.Add(Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.AliasImports(Microsoft.CodeAnalysis.Compilation) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.AnalyzeControlFlow(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.AnalyzeControlFlow(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.AnalyzeDataFlow(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.AnalyzeDataFlow(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.AnalyzeDataFlow(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.StatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.AssociatedField(Microsoft.CodeAnalysis.IEventSymbol) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.ClassifyConversion(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.ITypeSymbol,Microsoft.CodeAnalysis.ITypeSymbol) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.ClassifyConversion(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.ITypeSymbol) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.ClassifyConversion(Microsoft.CodeAnalysis.SemanticModel,System.Int32,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.ITypeSymbol) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetAggregateClauseSymbolInfo(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregateClauseSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetAliasInfo(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetAwaitExpressionInfo(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.AwaitExpressionSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetBase(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetCollectionInitializerSymbolInfo(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetCollectionRangeVariableSymbolInfo(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetCompilationUnitRoot(Microsoft.CodeAnalysis.SyntaxTree) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetConversion(Microsoft.CodeAnalysis.Operations.IConversionOperation) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetConversion(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.SyntaxNode,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDeclaredSymbol(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDeclaredSymbol(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDeclaredSymbol(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.AnonymousObjectCreationExpressionSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDeclaredSymbol(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchStatementSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDeclaredSymbol(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDeclaredSymbol(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDeclaredSymbol(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDeclaredSymbol(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumBlockSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDeclaredSymbol(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumMemberDeclarationSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDeclaredSymbol(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumStatementSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDeclaredSymbol(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.EventBlockSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDeclaredSymbol(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDeclaredSymbol(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDeclaredSymbol(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldInitializerSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDeclaredSymbol(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelStatementSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDeclaredSymbol(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockBaseSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDeclaredSymbol(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDeclaredSymbol(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDeclaredSymbol(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceBlockSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDeclaredSymbol(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceStatementSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDeclaredSymbol(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDeclaredSymbol(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDeclaredSymbol(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyBlockSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDeclaredSymbol(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDeclaredSymbol(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleImportsClauseSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDeclaredSymbol(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDeclaredSymbol(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleElementSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDeclaredSymbol(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeBlockSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDeclaredSymbol(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDeclaredSymbol(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeStatementSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetDirectives(Microsoft.CodeAnalysis.SyntaxNode,System.Func{Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectiveTriviaSyntax,System.Boolean}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetFieldAttributes(Microsoft.CodeAnalysis.IEventSymbol) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetFirstDirective(Microsoft.CodeAnalysis.SyntaxNode,System.Func{Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectiveTriviaSyntax,System.Boolean}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetForEachStatementInfo(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetForEachStatementInfo(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetIdentifierText(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetInConversion(Microsoft.CodeAnalysis.Operations.IArgumentOperation) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetInConversion(Microsoft.CodeAnalysis.Operations.ICompoundAssignmentOperation) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetLastDirective(Microsoft.CodeAnalysis.SyntaxNode,System.Func{Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectiveTriviaSyntax,System.Boolean}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetMemberGroup(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetMemberGroup(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetModuleMembers(Microsoft.CodeAnalysis.INamespaceSymbol) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetModuleMembers(Microsoft.CodeAnalysis.INamespaceSymbol,System.String) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetOutConversion(Microsoft.CodeAnalysis.Operations.IArgumentOperation) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetOutConversion(Microsoft.CodeAnalysis.Operations.ICompoundAssignmentOperation) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetPreprocessingSymbolInfo(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetSpecialType(Microsoft.CodeAnalysis.Compilation,Microsoft.CodeAnalysis.SpecialType) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetSpeculativeAliasInfo(Microsoft.CodeAnalysis.SemanticModel,System.Int32,Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax,Microsoft.CodeAnalysis.SpeculativeBindingOption) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetSpeculativeConversion(Microsoft.CodeAnalysis.SemanticModel,System.Int32,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SpeculativeBindingOption) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetSpeculativeMemberGroup(Microsoft.CodeAnalysis.SemanticModel,System.Int32,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetSpeculativeSymbolInfo(Microsoft.CodeAnalysis.SemanticModel,System.Int32,Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetSpeculativeSymbolInfo(Microsoft.CodeAnalysis.SemanticModel,System.Int32,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SpeculativeBindingOption) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetSpeculativeTypeInfo(Microsoft.CodeAnalysis.SemanticModel,System.Int32,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SpeculativeBindingOption) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetSymbolInfo(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetSymbolInfo(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetSymbolInfo(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetSymbolInfo(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetSymbolInfo(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.FunctionAggregationSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetSymbolInfo(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderingSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetSymbolInfo(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.QueryClauseSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetTypeCharacter(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetTypeInfo(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.GetTypeInfo(Microsoft.CodeAnalysis.SemanticModel,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionSyntax,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.HandledEvents(Microsoft.CodeAnalysis.IMethodSymbol) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.HasAssociatedField(Microsoft.CodeAnalysis.IEventSymbol) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.Insert(Microsoft.CodeAnalysis.SyntaxTokenList,System.Int32,Microsoft.CodeAnalysis.SyntaxToken[]) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.IsBracketed(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.IsCatch(Microsoft.CodeAnalysis.ILocalSymbol) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.IsContextualKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.IsDefault(Microsoft.CodeAnalysis.IPropertySymbol) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.IsFor(Microsoft.CodeAnalysis.ILocalSymbol) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.IsForEach(Microsoft.CodeAnalysis.ILocalSymbol) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.IsImplicitlyDeclared(Microsoft.CodeAnalysis.IEventSymbol) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.IsKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.IsMe(Microsoft.CodeAnalysis.IParameterSymbol) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.IsMustOverride(Microsoft.CodeAnalysis.ISymbol) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.IsNotOverridable(Microsoft.CodeAnalysis.ISymbol) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.IsOverloads(Microsoft.CodeAnalysis.IMethodSymbol) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.IsOverloads(Microsoft.CodeAnalysis.IPropertySymbol) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.IsOverridable(Microsoft.CodeAnalysis.ISymbol) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.IsOverrides(Microsoft.CodeAnalysis.ISymbol) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.IsPreprocessorKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.IsReservedKeyword(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.IsShared(Microsoft.CodeAnalysis.ISymbol) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.Kind(Microsoft.CodeAnalysis.SyntaxNode) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.Kind(Microsoft.CodeAnalysis.SyntaxNodeOrToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.Kind(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.Kind(Microsoft.CodeAnalysis.SyntaxTrivia) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.MemberImports(Microsoft.CodeAnalysis.Compilation) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.OptionCompareText(Microsoft.CodeAnalysis.SemanticModel) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.OptionExplicit(Microsoft.CodeAnalysis.SemanticModel) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.OptionInfer(Microsoft.CodeAnalysis.SemanticModel) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.OptionStrict(Microsoft.CodeAnalysis.SemanticModel) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.ReplaceTrivia(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxTrivia,Microsoft.CodeAnalysis.SyntaxTrivia) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.ReplaceTrivia(Microsoft.CodeAnalysis.SyntaxToken,System.Collections.Generic.IEnumerable{Microsoft.CodeAnalysis.SyntaxTrivia},System.Func{Microsoft.CodeAnalysis.SyntaxTrivia,Microsoft.CodeAnalysis.SyntaxTrivia,Microsoft.CodeAnalysis.SyntaxTrivia}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.RootNamespace(Microsoft.CodeAnalysis.Compilation) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.TryGetSpeculativeSemanticModel(Microsoft.CodeAnalysis.SemanticModel,System.Int32,Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax,Microsoft.CodeAnalysis.SemanticModel@) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.TryGetSpeculativeSemanticModel(Microsoft.CodeAnalysis.SemanticModel,System.Int32,Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax,Microsoft.CodeAnalysis.SemanticModel@) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.TryGetSpeculativeSemanticModel(Microsoft.CodeAnalysis.SemanticModel,System.Int32,Microsoft.CodeAnalysis.VisualBasic.Syntax.ExecutableStatementSyntax,Microsoft.CodeAnalysis.SemanticModel@) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.TryGetSpeculativeSemanticModel(Microsoft.CodeAnalysis.SemanticModel,System.Int32,Microsoft.CodeAnalysis.VisualBasic.Syntax.RangeArgumentSyntax,Microsoft.CodeAnalysis.SemanticModel@) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.TryGetSpeculativeSemanticModel(Microsoft.CodeAnalysis.SemanticModel,System.Int32,Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,Microsoft.CodeAnalysis.SemanticModel@,Microsoft.CodeAnalysis.SpeculativeBindingOption) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicExtensions.TryGetSpeculativeSemanticModelForMethodBody(Microsoft.CodeAnalysis.SemanticModel,System.Int32,Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockBaseSyntax,Microsoft.CodeAnalysis.SemanticModel@) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicGeneratorDriver +Microsoft.CodeAnalysis.VisualBasic.VisualBasicGeneratorDriver.Create(System.Collections.Immutable.ImmutableArray{Microsoft.CodeAnalysis.ISourceGenerator},System.Collections.Immutable.ImmutableArray{Microsoft.CodeAnalysis.AdditionalText},Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions,Microsoft.CodeAnalysis.Diagnostics.AnalyzerConfigOptionsProvider) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicGeneratorDriver.Create(System.Collections.Immutable.ImmutableArray{Microsoft.CodeAnalysis.ISourceGenerator},System.Collections.Immutable.ImmutableArray{Microsoft.CodeAnalysis.AdditionalText},Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions,Microsoft.CodeAnalysis.Diagnostics.AnalyzerConfigOptionsProvider,Microsoft.CodeAnalysis.GeneratorDriverOptions) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions +Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.#ctor(Microsoft.CodeAnalysis.VisualBasic.LanguageVersion,Microsoft.CodeAnalysis.DocumentationMode,Microsoft.CodeAnalysis.SourceCodeKind,System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.Object}}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.CommonWithDocumentationMode(Microsoft.CodeAnalysis.DocumentationMode) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.CommonWithFeatures(System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.CommonWithKind(Microsoft.CodeAnalysis.SourceCodeKind) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.Equals(Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.Equals(System.Object) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.GetHashCode +Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.WithDocumentationMode(Microsoft.CodeAnalysis.DocumentationMode) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.WithFeatures(System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.String}}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.WithKind(Microsoft.CodeAnalysis.SourceCodeKind) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.WithLanguageVersion(Microsoft.CodeAnalysis.VisualBasic.LanguageVersion) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.WithPreprocessorSymbols(System.Collections.Generic.IEnumerable{System.Collections.Generic.KeyValuePair{System.String,System.Object}}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.WithPreprocessorSymbols(System.Collections.Generic.KeyValuePair{System.String,System.Object}[]) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.WithPreprocessorSymbols(System.Collections.Immutable.ImmutableArray{System.Collections.Generic.KeyValuePair{System.String,System.Object}}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.get_Default +Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.get_Features +Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.get_Language +Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.get_LanguageVersion +Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.get_PreprocessorSymbolNames +Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.get_PreprocessorSymbols +Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions.get_SpecifiedLanguageVersion +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode.Accept(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode.Accept``1(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor{``0}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode.DeserializeFrom(System.IO.Stream,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode.FindToken(System.Int32,System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode.FindTrivia(System.Int32,System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode.GetDiagnostics +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode.GetDirectives(System.Func{Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectiveTriviaSyntax,System.Boolean}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode.GetFirstDirective(System.Func{Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectiveTriviaSyntax,System.Boolean}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode.GetFirstToken(System.Boolean,System.Boolean,System.Boolean,System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode.GetLastDirective(System.Func{Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectiveTriviaSyntax,System.Boolean}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode.GetLastToken(System.Boolean,System.Boolean,System.Boolean,System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode.GetLeadingTrivia +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode.GetLocation +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode.GetTrailingTrivia +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode.InsertNodesInListCore(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Generic.IEnumerable{Microsoft.CodeAnalysis.SyntaxNode},System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode.InsertTokensInListCore(Microsoft.CodeAnalysis.SyntaxToken,System.Collections.Generic.IEnumerable{Microsoft.CodeAnalysis.SyntaxToken},System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode.InsertTriviaInListCore(Microsoft.CodeAnalysis.SyntaxTrivia,System.Collections.Generic.IEnumerable{Microsoft.CodeAnalysis.SyntaxTrivia},System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode.IsEquivalentToCore(Microsoft.CodeAnalysis.SyntaxNode,System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode.Kind +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode.NormalizeWhitespaceCore(System.String,System.String,System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode.RemoveNodesCore(System.Collections.Generic.IEnumerable{Microsoft.CodeAnalysis.SyntaxNode},Microsoft.CodeAnalysis.SyntaxRemoveOptions) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode.ReplaceCore``1(System.Collections.Generic.IEnumerable{``0},System.Func{``0,``0,Microsoft.CodeAnalysis.SyntaxNode},System.Collections.Generic.IEnumerable{Microsoft.CodeAnalysis.SyntaxToken},System.Func{Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.SyntaxToken},System.Collections.Generic.IEnumerable{Microsoft.CodeAnalysis.SyntaxTrivia},System.Func{Microsoft.CodeAnalysis.SyntaxTrivia,Microsoft.CodeAnalysis.SyntaxTrivia,Microsoft.CodeAnalysis.SyntaxTrivia}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode.ReplaceNodeInListCore(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Generic.IEnumerable{Microsoft.CodeAnalysis.SyntaxNode}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode.ReplaceTokenInListCore(Microsoft.CodeAnalysis.SyntaxToken,System.Collections.Generic.IEnumerable{Microsoft.CodeAnalysis.SyntaxToken}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode.ReplaceTriviaInListCore(Microsoft.CodeAnalysis.SyntaxTrivia,System.Collections.Generic.IEnumerable{Microsoft.CodeAnalysis.SyntaxTrivia}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode.get_IsDirective +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode.get_Language +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode.get_SpanStart +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode.get_SyntaxTreeCore +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.#ctor(System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.Visit(Microsoft.CodeAnalysis.SyntaxNode) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitAccessorBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitAccessorStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitAddRemoveHandlerStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.AddRemoveHandlerStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitAggregateClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregateClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitAggregationRangeVariable(Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitAnonymousObjectCreationExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.AnonymousObjectCreationExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitArgumentList(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitArrayCreationExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayCreationExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitArrayRankSpecifier(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayRankSpecifierSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitArrayType(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayTypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitAsNewClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.AsNewClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitAssignmentStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.AssignmentStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitAttribute(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitAttributeList(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitAttributeTarget(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeTargetSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitAttributesStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributesStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitAwaitExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.AwaitExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitBadDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.BadDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitBinaryConditionalExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryConditionalExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitBinaryExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitCTypeExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.CTypeExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitCallStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.CallStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitCaseBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitCaseStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitCatchBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitCatchFilterClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchFilterClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitCatchStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitClassBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitClassStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitCollectionInitializer(Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitCollectionRangeVariable(Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitCompilationUnit(Microsoft.CodeAnalysis.VisualBasic.Syntax.CompilationUnitSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitConditionalAccessExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ConditionalAccessExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitConstDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitConstructorBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstructorBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitContinueStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ContinueStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitCrefOperatorReference(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefOperatorReferenceSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitCrefReference(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitCrefSignature(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignatureSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitCrefSignaturePart(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignaturePartSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitDeclareStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitDelegateStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitDirectCastExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectCastExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitDisableWarningDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.DisableWarningDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitDistinctClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.DistinctClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitDoLoopBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.DoLoopBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitDoStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.DoStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitDocumentationCommentTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.DocumentationCommentTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitElseBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitElseCaseClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseCaseClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitElseDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitElseIfBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitElseIfStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitElseStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitEmptyStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EmptyStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitEnableWarningDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.EnableWarningDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitEndBlockStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitEndExternalSourceDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndExternalSourceDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitEndIfDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndIfDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitEndRegionDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndRegionDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitEnumBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitEnumMemberDeclaration(Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumMemberDeclarationSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitEnumStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitEqualsValue(Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitEraseStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EraseStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitErrorStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ErrorStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitEventBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.EventBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitEventStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitExitStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExitStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitExpressionRangeVariable(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitExpressionStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitExternalChecksumDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitExternalSourceDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalSourceDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitFieldDeclaration(Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldDeclarationSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitFinallyBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.FinallyBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitFinallyStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.FinallyStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitForBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ForBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitForEachBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitForEachStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitForStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitForStepClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStepClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitFromClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.FromClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitFunctionAggregation(Microsoft.CodeAnalysis.VisualBasic.Syntax.FunctionAggregationSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitGenericName(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitGetTypeExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.GetTypeExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitGetXmlNamespaceExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.GetXmlNamespaceExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitGlobalName(Microsoft.CodeAnalysis.VisualBasic.Syntax.GlobalNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitGoToStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.GoToStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitGroupAggregation(Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupAggregationSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitGroupByClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitGroupJoinClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitHandlesClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitHandlesClauseItem(Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseItemSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitIdentifierName(Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitIfDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.IfDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitIfStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.IfStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitImplementsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitImplementsStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitImportAliasClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportAliasClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitImportsStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitIncompleteMember(Microsoft.CodeAnalysis.VisualBasic.Syntax.IncompleteMemberSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitInferredFieldInitializer(Microsoft.CodeAnalysis.VisualBasic.Syntax.InferredFieldInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitInheritsStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitInterfaceBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitInterfaceStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitInterpolatedStringExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolatedStringExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitInterpolatedStringText(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolatedStringTextSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitInterpolation(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitInterpolationAlignmentClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationAlignmentClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitInterpolationFormatClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationFormatClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitInvocationExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.InvocationExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitJoinCondition(Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitKeywordEventContainer(Microsoft.CodeAnalysis.VisualBasic.Syntax.KeywordEventContainerSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitLabel(Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitLabelStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitLambdaHeader(Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitLetClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.LetClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitList(Microsoft.CodeAnalysis.SyntaxTokenList) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitList(Microsoft.CodeAnalysis.SyntaxTriviaList) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitListElement(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitListElement(Microsoft.CodeAnalysis.SyntaxTrivia) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitListElement``1(``0) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitListSeparator(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitList``1(Microsoft.CodeAnalysis.SeparatedSyntaxList{``0}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitList``1(Microsoft.CodeAnalysis.SyntaxList{``0}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitLiteralExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitLocalDeclarationStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.LocalDeclarationStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitLoopStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.LoopStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitMeExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.MeExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitMemberAccessExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.MemberAccessExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitMethodBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitMethodStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitMidExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.MidExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitModifiedIdentifier(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitModuleBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitModuleStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitMultiLineIfBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineIfBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitMultiLineLambdaExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineLambdaExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitMyBaseExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.MyBaseExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitMyClassExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.MyClassExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitNameColonEquals(Microsoft.CodeAnalysis.VisualBasic.Syntax.NameColonEqualsSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitNameOfExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.NameOfExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitNamedFieldInitializer(Microsoft.CodeAnalysis.VisualBasic.Syntax.NamedFieldInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitNamedTupleElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.NamedTupleElementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitNamespaceBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitNamespaceStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitNextStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.NextStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitNullableType(Microsoft.CodeAnalysis.VisualBasic.Syntax.NullableTypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitObjectCollectionInitializer(Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCollectionInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitObjectCreationExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCreationExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitObjectMemberInitializer(Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectMemberInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitOmittedArgument(Microsoft.CodeAnalysis.VisualBasic.Syntax.OmittedArgumentSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitOnErrorGoToStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorGoToStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitOnErrorResumeNextStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorResumeNextStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitOperatorBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitOperatorStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitOptionStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.OptionStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitOrderByClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderByClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitOrdering(Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderingSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitParameter(Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitParameterList(Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitParenthesizedExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ParenthesizedExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitPartitionClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.PartitionClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitPartitionWhileClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.PartitionWhileClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitPredefinedCastExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.PredefinedCastExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitPredefinedType(Microsoft.CodeAnalysis.VisualBasic.Syntax.PredefinedTypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitPrintStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.PrintStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitPropertyBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitPropertyStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitQualifiedCrefOperatorReference(Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedCrefOperatorReferenceSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitQualifiedName(Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitQueryExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.QueryExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitRaiseEventStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.RaiseEventStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitRangeArgument(Microsoft.CodeAnalysis.VisualBasic.Syntax.RangeArgumentSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitRangeCaseClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.RangeCaseClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitReDimStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ReDimStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitRedimClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.RedimClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitReferenceDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.ReferenceDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitRegionDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.RegionDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitRelationalCaseClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.RelationalCaseClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitResumeStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ResumeStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitReturnStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ReturnStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitSelectBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitSelectClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitSelectStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitSimpleArgument(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleArgumentSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitSimpleAsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitSimpleCaseClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleCaseClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitSimpleImportsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleImportsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitSimpleJoinClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleJoinClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitSingleLineElseClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineElseClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitSingleLineIfStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineIfStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitSingleLineLambdaExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineLambdaExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitSkippedTokensTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.SkippedTokensTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitSpecialConstraint(Microsoft.CodeAnalysis.VisualBasic.Syntax.SpecialConstraintSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitStopOrEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.StopOrEndStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitStructureBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitStructureStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitSubNewStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitSyncLockBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.SyncLockBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitSyncLockStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.SyncLockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitTernaryConditionalExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.TernaryConditionalExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitThrowStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ThrowStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitTrivia(Microsoft.CodeAnalysis.SyntaxTrivia) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitTryBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.TryBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitTryCastExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.TryCastExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitTryStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.TryStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitTupleExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitTupleType(Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleTypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitTypeArgumentList(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitTypeConstraint(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeConstraintSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitTypeOfExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeOfExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitTypeParameter(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitTypeParameterList(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitTypeParameterMultipleConstraintClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterMultipleConstraintClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitTypeParameterSingleConstraintClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSingleConstraintClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitTypedTupleElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypedTupleElementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitUnaryExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.UnaryExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitUsingBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitUsingStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitVariableDeclarator(Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableDeclaratorSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitVariableNameEquals(Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableNameEqualsSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitWhereClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.WhereClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitWhileBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitWhileOrUntilClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitWhileStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitWithBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.WithBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitWithEventsEventContainer(Microsoft.CodeAnalysis.VisualBasic.Syntax.WithEventsEventContainerSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitWithEventsPropertyEventContainer(Microsoft.CodeAnalysis.VisualBasic.Syntax.WithEventsPropertyEventContainerSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitWithStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.WithStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitXmlAttribute(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlAttributeSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitXmlBracketedName(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlBracketedNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitXmlCDataSection(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCDataSectionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitXmlComment(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCommentSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitXmlCrefAttribute(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCrefAttributeSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitXmlDeclaration(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitXmlDeclarationOption(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationOptionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitXmlDocument(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDocumentSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitXmlElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitXmlElementEndTag(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementEndTagSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitXmlElementStartTag(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementStartTagSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitXmlEmbeddedExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmbeddedExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitXmlEmptyElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitXmlMemberAccessExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlMemberAccessExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitXmlName(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitXmlNameAttribute(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameAttributeSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitXmlNamespaceImportsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNamespaceImportsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitXmlPrefix(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlPrefixSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitXmlPrefixName(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlPrefixNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitXmlProcessingInstruction(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlProcessingInstructionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitXmlString(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlStringSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitXmlText(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlTextSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.VisitYieldStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.YieldStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxRewriter.get_VisitIntoStructuredTrivia +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.#ctor +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.CloneNodeAsRoot``1(``0) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.Create(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions,System.String,System.Text.Encoding) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.Create(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions,System.String,System.Text.Encoding,System.Collections.Immutable.ImmutableDictionary{System.String,Microsoft.CodeAnalysis.ReportDiagnostic}) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.GetChangedSpans(Microsoft.CodeAnalysis.SyntaxTree) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.GetChanges(Microsoft.CodeAnalysis.SyntaxTree) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.GetCompilationUnitRoot(System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.GetDiagnostics(Microsoft.CodeAnalysis.SyntaxNode) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.GetDiagnostics(Microsoft.CodeAnalysis.SyntaxNodeOrToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.GetDiagnostics(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.GetDiagnostics(Microsoft.CodeAnalysis.SyntaxTrivia) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.GetDiagnostics(System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.GetLineMappings(System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.GetLineSpan(Microsoft.CodeAnalysis.Text.TextSpan,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.GetLineVisibility(System.Int32,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.GetLocation(Microsoft.CodeAnalysis.Text.TextSpan) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.GetMappedLineSpan(Microsoft.CodeAnalysis.Text.TextSpan,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.GetRoot(System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.GetRootAsync(System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.GetRootAsyncCore(System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.GetRootCore(System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.HasHiddenRegions +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.IsEquivalentTo(Microsoft.CodeAnalysis.SyntaxTree,System.Boolean) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.ParseText(Microsoft.CodeAnalysis.Text.SourceText,Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions,System.String,System.Collections.Immutable.ImmutableDictionary{System.String,Microsoft.CodeAnalysis.ReportDiagnostic},System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.ParseText(Microsoft.CodeAnalysis.Text.SourceText,Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions,System.String,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.ParseText(System.String,Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions,System.String,System.Text.Encoding,System.Collections.Immutable.ImmutableDictionary{System.String,Microsoft.CodeAnalysis.ReportDiagnostic},System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.ParseText(System.String,Microsoft.CodeAnalysis.VisualBasic.VisualBasicParseOptions,System.String,System.Text.Encoding,System.Threading.CancellationToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.TryGetRoot(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode@) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.TryGetRootCore(Microsoft.CodeAnalysis.SyntaxNode@) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.WithChangedText(Microsoft.CodeAnalysis.Text.SourceText) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.get_Options +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxTree.get_OptionsCore +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.#ctor +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.DefaultVisit(Microsoft.CodeAnalysis.SyntaxNode) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.Visit(Microsoft.CodeAnalysis.SyntaxNode) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitAccessorBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitAccessorStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitAddRemoveHandlerStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.AddRemoveHandlerStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitAggregateClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregateClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitAggregationRangeVariable(Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitAnonymousObjectCreationExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.AnonymousObjectCreationExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitArgumentList(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitArrayCreationExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayCreationExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitArrayRankSpecifier(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayRankSpecifierSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitArrayType(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayTypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitAsNewClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.AsNewClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitAssignmentStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.AssignmentStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitAttribute(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitAttributeList(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitAttributeTarget(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeTargetSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitAttributesStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributesStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitAwaitExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.AwaitExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitBadDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.BadDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitBinaryConditionalExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryConditionalExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitBinaryExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitCTypeExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.CTypeExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitCallStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.CallStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitCaseBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitCaseStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitCatchBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitCatchFilterClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchFilterClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitCatchStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitClassBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitClassStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitCollectionInitializer(Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitCollectionRangeVariable(Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitCompilationUnit(Microsoft.CodeAnalysis.VisualBasic.Syntax.CompilationUnitSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitConditionalAccessExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ConditionalAccessExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitConstDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitConstructorBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstructorBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitContinueStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ContinueStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitCrefOperatorReference(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefOperatorReferenceSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitCrefReference(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitCrefSignature(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignatureSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitCrefSignaturePart(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignaturePartSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitDeclareStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitDelegateStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitDirectCastExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectCastExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitDisableWarningDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.DisableWarningDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitDistinctClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.DistinctClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitDoLoopBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.DoLoopBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitDoStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.DoStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitDocumentationCommentTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.DocumentationCommentTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitElseBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitElseCaseClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseCaseClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitElseDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitElseIfBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitElseIfStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitElseStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitEmptyStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EmptyStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitEnableWarningDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.EnableWarningDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitEndBlockStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitEndExternalSourceDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndExternalSourceDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitEndIfDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndIfDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitEndRegionDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndRegionDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitEnumBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitEnumMemberDeclaration(Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumMemberDeclarationSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitEnumStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitEqualsValue(Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitEraseStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EraseStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitErrorStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ErrorStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitEventBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.EventBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitEventStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitExitStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExitStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitExpressionRangeVariable(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitExpressionStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitExternalChecksumDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitExternalSourceDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalSourceDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitFieldDeclaration(Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldDeclarationSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitFinallyBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.FinallyBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitFinallyStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.FinallyStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitForBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ForBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitForEachBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitForEachStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitForStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitForStepClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStepClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitFromClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.FromClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitFunctionAggregation(Microsoft.CodeAnalysis.VisualBasic.Syntax.FunctionAggregationSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitGenericName(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitGetTypeExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.GetTypeExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitGetXmlNamespaceExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.GetXmlNamespaceExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitGlobalName(Microsoft.CodeAnalysis.VisualBasic.Syntax.GlobalNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitGoToStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.GoToStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitGroupAggregation(Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupAggregationSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitGroupByClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitGroupJoinClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitHandlesClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitHandlesClauseItem(Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseItemSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitIdentifierName(Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitIfDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.IfDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitIfStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.IfStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitImplementsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitImplementsStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitImportAliasClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportAliasClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitImportsStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitIncompleteMember(Microsoft.CodeAnalysis.VisualBasic.Syntax.IncompleteMemberSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitInferredFieldInitializer(Microsoft.CodeAnalysis.VisualBasic.Syntax.InferredFieldInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitInheritsStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitInterfaceBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitInterfaceStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitInterpolatedStringExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolatedStringExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitInterpolatedStringText(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolatedStringTextSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitInterpolation(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitInterpolationAlignmentClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationAlignmentClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitInterpolationFormatClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationFormatClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitInvocationExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.InvocationExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitJoinCondition(Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitKeywordEventContainer(Microsoft.CodeAnalysis.VisualBasic.Syntax.KeywordEventContainerSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitLabel(Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitLabelStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitLambdaHeader(Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitLetClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.LetClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitLiteralExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitLocalDeclarationStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.LocalDeclarationStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitLoopStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.LoopStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitMeExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.MeExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitMemberAccessExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.MemberAccessExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitMethodBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitMethodStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitMidExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.MidExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitModifiedIdentifier(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitModuleBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitModuleStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitMultiLineIfBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineIfBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitMultiLineLambdaExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineLambdaExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitMyBaseExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.MyBaseExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitMyClassExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.MyClassExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitNameColonEquals(Microsoft.CodeAnalysis.VisualBasic.Syntax.NameColonEqualsSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitNameOfExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.NameOfExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitNamedFieldInitializer(Microsoft.CodeAnalysis.VisualBasic.Syntax.NamedFieldInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitNamedTupleElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.NamedTupleElementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitNamespaceBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitNamespaceStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitNextStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.NextStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitNullableType(Microsoft.CodeAnalysis.VisualBasic.Syntax.NullableTypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitObjectCollectionInitializer(Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCollectionInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitObjectCreationExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCreationExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitObjectMemberInitializer(Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectMemberInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitOmittedArgument(Microsoft.CodeAnalysis.VisualBasic.Syntax.OmittedArgumentSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitOnErrorGoToStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorGoToStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitOnErrorResumeNextStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorResumeNextStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitOperatorBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitOperatorStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitOptionStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.OptionStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitOrderByClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderByClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitOrdering(Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderingSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitParameter(Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitParameterList(Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitParenthesizedExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ParenthesizedExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitPartitionClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.PartitionClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitPartitionWhileClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.PartitionWhileClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitPredefinedCastExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.PredefinedCastExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitPredefinedType(Microsoft.CodeAnalysis.VisualBasic.Syntax.PredefinedTypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitPrintStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.PrintStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitPropertyBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitPropertyStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitQualifiedCrefOperatorReference(Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedCrefOperatorReferenceSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitQualifiedName(Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitQueryExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.QueryExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitRaiseEventStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.RaiseEventStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitRangeArgument(Microsoft.CodeAnalysis.VisualBasic.Syntax.RangeArgumentSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitRangeCaseClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.RangeCaseClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitReDimStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ReDimStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitRedimClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.RedimClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitReferenceDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.ReferenceDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitRegionDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.RegionDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitRelationalCaseClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.RelationalCaseClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitResumeStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ResumeStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitReturnStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ReturnStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitSelectBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitSelectClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitSelectStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitSimpleArgument(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleArgumentSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitSimpleAsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitSimpleCaseClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleCaseClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitSimpleImportsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleImportsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitSimpleJoinClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleJoinClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitSingleLineElseClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineElseClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitSingleLineIfStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineIfStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitSingleLineLambdaExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineLambdaExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitSkippedTokensTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.SkippedTokensTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitSpecialConstraint(Microsoft.CodeAnalysis.VisualBasic.Syntax.SpecialConstraintSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitStopOrEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.StopOrEndStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitStructureBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitStructureStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitSubNewStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitSyncLockBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.SyncLockBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitSyncLockStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.SyncLockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitTernaryConditionalExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.TernaryConditionalExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitThrowStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ThrowStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitTryBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.TryBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitTryCastExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.TryCastExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitTryStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.TryStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitTupleExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitTupleType(Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleTypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitTypeArgumentList(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitTypeConstraint(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeConstraintSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitTypeOfExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeOfExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitTypeParameter(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitTypeParameterList(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitTypeParameterMultipleConstraintClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterMultipleConstraintClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitTypeParameterSingleConstraintClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSingleConstraintClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitTypedTupleElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypedTupleElementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitUnaryExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.UnaryExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitUsingBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitUsingStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitVariableDeclarator(Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableDeclaratorSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitVariableNameEquals(Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableNameEqualsSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitWhereClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.WhereClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitWhileBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitWhileOrUntilClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitWhileStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitWithBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.WithBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitWithEventsEventContainer(Microsoft.CodeAnalysis.VisualBasic.Syntax.WithEventsEventContainerSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitWithEventsPropertyEventContainer(Microsoft.CodeAnalysis.VisualBasic.Syntax.WithEventsPropertyEventContainerSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitWithStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.WithStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitXmlAttribute(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlAttributeSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitXmlBracketedName(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlBracketedNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitXmlCDataSection(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCDataSectionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitXmlComment(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCommentSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitXmlCrefAttribute(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCrefAttributeSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitXmlDeclaration(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitXmlDeclarationOption(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationOptionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitXmlDocument(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDocumentSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitXmlElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitXmlElementEndTag(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementEndTagSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitXmlElementStartTag(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementStartTagSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitXmlEmbeddedExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmbeddedExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitXmlEmptyElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitXmlMemberAccessExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlMemberAccessExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitXmlName(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitXmlNameAttribute(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameAttributeSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitXmlNamespaceImportsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNamespaceImportsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitXmlPrefix(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlPrefixSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitXmlPrefixName(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlPrefixNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitXmlProcessingInstruction(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlProcessingInstructionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitXmlString(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlStringSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitXmlText(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlTextSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor.VisitYieldStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.YieldStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1 +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.#ctor +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.DefaultVisit(Microsoft.CodeAnalysis.SyntaxNode) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.Visit(Microsoft.CodeAnalysis.SyntaxNode) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitAccessorBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitAccessorStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.AccessorStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitAddRemoveHandlerStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.AddRemoveHandlerStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitAggregateClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregateClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitAggregationRangeVariable(Microsoft.CodeAnalysis.VisualBasic.Syntax.AggregationRangeVariableSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitAnonymousObjectCreationExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.AnonymousObjectCreationExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitArgumentList(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitArrayCreationExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayCreationExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitArrayRankSpecifier(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayRankSpecifierSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitArrayType(Microsoft.CodeAnalysis.VisualBasic.Syntax.ArrayTypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitAsNewClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.AsNewClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitAssignmentStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.AssignmentStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitAttribute(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitAttributeList(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeListSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitAttributeTarget(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeTargetSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitAttributesStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributesStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitAwaitExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.AwaitExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitBadDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.BadDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitBinaryConditionalExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryConditionalExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitBinaryExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.BinaryExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitCTypeExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.CTypeExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitCallStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.CallStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitCaseBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitCaseStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.CaseStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitCatchBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitCatchFilterClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchFilterClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitCatchStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.CatchStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitClassBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitClassStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ClassStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitCollectionInitializer(Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitCollectionRangeVariable(Microsoft.CodeAnalysis.VisualBasic.Syntax.CollectionRangeVariableSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitCompilationUnit(Microsoft.CodeAnalysis.VisualBasic.Syntax.CompilationUnitSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitConditionalAccessExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ConditionalAccessExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitConstDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitConstructorBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ConstructorBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitContinueStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ContinueStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitCrefOperatorReference(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefOperatorReferenceSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitCrefReference(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefReferenceSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitCrefSignature(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignatureSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitCrefSignaturePart(Microsoft.CodeAnalysis.VisualBasic.Syntax.CrefSignaturePartSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitDeclareStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.DeclareStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitDelegateStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.DelegateStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitDirectCastExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.DirectCastExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitDisableWarningDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.DisableWarningDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitDistinctClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.DistinctClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitDoLoopBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.DoLoopBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitDoStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.DoStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitDocumentationCommentTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.DocumentationCommentTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitElseBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitElseCaseClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseCaseClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitElseDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitElseIfBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitElseIfStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseIfStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitElseStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ElseStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitEmptyStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EmptyStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitEnableWarningDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.EnableWarningDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitEndBlockStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndBlockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitEndExternalSourceDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndExternalSourceDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitEndIfDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndIfDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitEndRegionDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.EndRegionDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitEnumBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitEnumMemberDeclaration(Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumMemberDeclarationSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitEnumStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EnumStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitEqualsValue(Microsoft.CodeAnalysis.VisualBasic.Syntax.EqualsValueSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitEraseStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EraseStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitErrorStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ErrorStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitEventBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.EventBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitEventStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.EventStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitExitStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExitStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitExpressionRangeVariable(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionRangeVariableSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitExpressionStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExpressionStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitExternalChecksumDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalChecksumDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitExternalSourceDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.ExternalSourceDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitFieldDeclaration(Microsoft.CodeAnalysis.VisualBasic.Syntax.FieldDeclarationSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitFinallyBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.FinallyBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitFinallyStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.FinallyStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitForBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ForBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitForEachBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitForEachStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ForEachStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitForStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitForStepClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ForStepClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitFromClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.FromClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitFunctionAggregation(Microsoft.CodeAnalysis.VisualBasic.Syntax.FunctionAggregationSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitGenericName(Microsoft.CodeAnalysis.VisualBasic.Syntax.GenericNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitGetTypeExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.GetTypeExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitGetXmlNamespaceExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.GetXmlNamespaceExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitGlobalName(Microsoft.CodeAnalysis.VisualBasic.Syntax.GlobalNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitGoToStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.GoToStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitGroupAggregation(Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupAggregationSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitGroupByClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupByClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitGroupJoinClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.GroupJoinClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitHandlesClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitHandlesClauseItem(Microsoft.CodeAnalysis.VisualBasic.Syntax.HandlesClauseItemSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitIdentifierName(Microsoft.CodeAnalysis.VisualBasic.Syntax.IdentifierNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitIfDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.IfDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitIfStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.IfStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitImplementsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitImplementsStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ImplementsStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitImportAliasClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportAliasClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitImportsStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitIncompleteMember(Microsoft.CodeAnalysis.VisualBasic.Syntax.IncompleteMemberSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitInferredFieldInitializer(Microsoft.CodeAnalysis.VisualBasic.Syntax.InferredFieldInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitInheritsStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InheritsStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitInterfaceBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitInterfaceStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterfaceStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitInterpolatedStringExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolatedStringExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitInterpolatedStringText(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolatedStringTextSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitInterpolation(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitInterpolationAlignmentClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationAlignmentClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitInterpolationFormatClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.InterpolationFormatClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitInvocationExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.InvocationExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitJoinCondition(Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinConditionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitKeywordEventContainer(Microsoft.CodeAnalysis.VisualBasic.Syntax.KeywordEventContainerSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitLabel(Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitLabelStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.LabelStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitLambdaHeader(Microsoft.CodeAnalysis.VisualBasic.Syntax.LambdaHeaderSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitLetClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.LetClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitLiteralExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.LiteralExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitLocalDeclarationStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.LocalDeclarationStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitLoopStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.LoopStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitMeExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.MeExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitMemberAccessExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.MemberAccessExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitMethodBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitMethodStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.MethodStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitMidExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.MidExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitModifiedIdentifier(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModifiedIdentifierSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitModuleBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitModuleStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ModuleStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitMultiLineIfBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineIfBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitMultiLineLambdaExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.MultiLineLambdaExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitMyBaseExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.MyBaseExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitMyClassExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.MyClassExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitNameColonEquals(Microsoft.CodeAnalysis.VisualBasic.Syntax.NameColonEqualsSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitNameOfExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.NameOfExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitNamedFieldInitializer(Microsoft.CodeAnalysis.VisualBasic.Syntax.NamedFieldInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitNamedTupleElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.NamedTupleElementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitNamespaceBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitNamespaceStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.NamespaceStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitNextStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.NextStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitNullableType(Microsoft.CodeAnalysis.VisualBasic.Syntax.NullableTypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitObjectCollectionInitializer(Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCollectionInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitObjectCreationExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCreationExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitObjectMemberInitializer(Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectMemberInitializerSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitOmittedArgument(Microsoft.CodeAnalysis.VisualBasic.Syntax.OmittedArgumentSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitOnErrorGoToStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorGoToStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitOnErrorResumeNextStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.OnErrorResumeNextStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitOperatorBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitOperatorStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.OperatorStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitOptionStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.OptionStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitOrderByClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderByClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitOrdering(Microsoft.CodeAnalysis.VisualBasic.Syntax.OrderingSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitParameter(Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitParameterList(Microsoft.CodeAnalysis.VisualBasic.Syntax.ParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitParenthesizedExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.ParenthesizedExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitPartitionClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.PartitionClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitPartitionWhileClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.PartitionWhileClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitPredefinedCastExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.PredefinedCastExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitPredefinedType(Microsoft.CodeAnalysis.VisualBasic.Syntax.PredefinedTypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitPrintStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.PrintStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitPropertyBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitPropertyStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.PropertyStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitQualifiedCrefOperatorReference(Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedCrefOperatorReferenceSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitQualifiedName(Microsoft.CodeAnalysis.VisualBasic.Syntax.QualifiedNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitQueryExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.QueryExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitRaiseEventStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.RaiseEventStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitRangeArgument(Microsoft.CodeAnalysis.VisualBasic.Syntax.RangeArgumentSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitRangeCaseClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.RangeCaseClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitReDimStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ReDimStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitRedimClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.RedimClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitReferenceDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.ReferenceDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitRegionDirectiveTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.RegionDirectiveTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitRelationalCaseClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.RelationalCaseClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitResumeStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ResumeStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitReturnStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ReturnStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitSelectBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitSelectClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitSelectStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.SelectStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitSimpleArgument(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleArgumentSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitSimpleAsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleAsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitSimpleCaseClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleCaseClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitSimpleImportsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleImportsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitSimpleJoinClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SimpleJoinClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitSingleLineElseClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineElseClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitSingleLineIfStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineIfStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitSingleLineLambdaExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.SingleLineLambdaExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitSkippedTokensTrivia(Microsoft.CodeAnalysis.VisualBasic.Syntax.SkippedTokensTriviaSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitSpecialConstraint(Microsoft.CodeAnalysis.VisualBasic.Syntax.SpecialConstraintSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitStopOrEndStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.StopOrEndStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitStructureBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitStructureStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.StructureStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitSubNewStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.SubNewStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitSyncLockBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.SyncLockBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitSyncLockStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.SyncLockStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitTernaryConditionalExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.TernaryConditionalExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitThrowStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.ThrowStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitTryBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.TryBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitTryCastExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.TryCastExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitTryStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.TryStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitTupleExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitTupleType(Microsoft.CodeAnalysis.VisualBasic.Syntax.TupleTypeSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitTypeArgumentList(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeArgumentListSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitTypeConstraint(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeConstraintSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitTypeOfExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeOfExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitTypeParameter(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitTypeParameterList(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterListSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitTypeParameterMultipleConstraintClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterMultipleConstraintClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitTypeParameterSingleConstraintClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeParameterSingleConstraintClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitTypedTupleElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypedTupleElementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitUnaryExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.UnaryExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitUsingBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitUsingStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitVariableDeclarator(Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableDeclaratorSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitVariableNameEquals(Microsoft.CodeAnalysis.VisualBasic.Syntax.VariableNameEqualsSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitWhereClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.WhereClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitWhileBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitWhileOrUntilClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileOrUntilClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitWhileStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.WhileStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitWithBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.WithBlockSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitWithEventsEventContainer(Microsoft.CodeAnalysis.VisualBasic.Syntax.WithEventsEventContainerSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitWithEventsPropertyEventContainer(Microsoft.CodeAnalysis.VisualBasic.Syntax.WithEventsPropertyEventContainerSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitWithStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.WithStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitXmlAttribute(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlAttributeSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitXmlBracketedName(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlBracketedNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitXmlCDataSection(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCDataSectionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitXmlComment(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCommentSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitXmlCrefAttribute(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlCrefAttributeSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitXmlDeclaration(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitXmlDeclarationOption(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDeclarationOptionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitXmlDocument(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlDocumentSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitXmlElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitXmlElementEndTag(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementEndTagSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitXmlElementStartTag(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlElementStartTagSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitXmlEmbeddedExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmbeddedExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitXmlEmptyElement(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlEmptyElementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitXmlMemberAccessExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlMemberAccessExpressionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitXmlName(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitXmlNameAttribute(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNameAttributeSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitXmlNamespaceImportsClause(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNamespaceImportsClauseSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitXmlPrefix(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlPrefixSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitXmlPrefixName(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlPrefixNameSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitXmlProcessingInstruction(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlProcessingInstructionSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitXmlString(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlStringSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitXmlText(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlTextSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxVisitor`1.VisitYieldStatement(Microsoft.CodeAnalysis.VisualBasic.Syntax.YieldStatementSyntax) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxWalker +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxWalker.#ctor(Microsoft.CodeAnalysis.SyntaxWalkerDepth) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxWalker.DefaultVisit(Microsoft.CodeAnalysis.SyntaxNode) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxWalker.Visit(Microsoft.CodeAnalysis.SyntaxNode) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxWalker.VisitLeadingTrivia(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxWalker.VisitToken(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxWalker.VisitTrailingTrivia(Microsoft.CodeAnalysis.SyntaxToken) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxWalker.VisitTrivia(Microsoft.CodeAnalysis.SyntaxTrivia) +Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxWalker.get_Depth +Microsoft.CodeAnalysis.VisualBasicExtensions +Microsoft.CodeAnalysis.VisualBasicExtensions.Any(Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasicExtensions.Any(Microsoft.CodeAnalysis.SyntaxTriviaList,Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasicExtensions.Any``1(Microsoft.CodeAnalysis.SeparatedSyntaxList{``0},Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasicExtensions.Any``1(Microsoft.CodeAnalysis.SyntaxList{``0},Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasicExtensions.ContainsDirective(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasicExtensions.IndexOf(Microsoft.CodeAnalysis.SyntaxTokenList,Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasicExtensions.IndexOf(Microsoft.CodeAnalysis.SyntaxTriviaList,Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasicExtensions.IndexOf``1(Microsoft.CodeAnalysis.SeparatedSyntaxList{``0},Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasicExtensions.IndexOf``1(Microsoft.CodeAnalysis.SyntaxList{``0},Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasicExtensions.IsKind(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasicExtensions.IsKind(Microsoft.CodeAnalysis.SyntaxNodeOrToken,Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasicExtensions.IsKind(Microsoft.CodeAnalysis.SyntaxToken,Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) +Microsoft.CodeAnalysis.VisualBasicExtensions.IsKind(Microsoft.CodeAnalysis.SyntaxTrivia,Microsoft.CodeAnalysis.VisualBasic.SyntaxKind) \ No newline at end of file diff --git a/src/roslyn/src/Tools/SemanticSearch/ReferenceAssemblies/SemanticSearch.ReferenceAssemblies.csproj b/src/roslyn/src/Tools/SemanticSearch/ReferenceAssemblies/SemanticSearch.ReferenceAssemblies.csproj index 35388a82d14..111b378b669 100644 --- a/src/roslyn/src/Tools/SemanticSearch/ReferenceAssemblies/SemanticSearch.ReferenceAssemblies.csproj +++ b/src/roslyn/src/Tools/SemanticSearch/ReferenceAssemblies/SemanticSearch.ReferenceAssemblies.csproj @@ -15,9 +15,10 @@ ReferenceOutputAssembly="false" SkipGetTargetFrameworkProperties="true" SetTargetFramework="TargetFramework=$(_BuildTaskTfm)" /> - + + @@ -42,7 +43,8 @@ Condition="'%(ReferencePath.FrameworkReferenceName)' == 'Microsoft.NETCore.App' or '%(ReferencePath.FileName)' == 'System.Collections.Immutable' or '%(ReferencePath.FileName)' == 'Microsoft.CodeAnalysis' or - '%(ReferencePath.FileName)' == 'Microsoft.CodeAnalysis.CSharp'" /> + '%(ReferencePath.FileName)' == 'Microsoft.CodeAnalysis.CSharp' or + '%(ReferencePath.FileName)' == 'Microsoft.CodeAnalysis.VisualBasic'" /> @@ -54,7 +56,7 @@ <_OutputFile Include="@(Apis)" /> - + diff --git a/src/roslyn/src/VisualStudio/Core/Def/LanguageClient/VisualStudioLogHubLoggerFactory.cs b/src/roslyn/src/VisualStudio/Core/Def/LanguageClient/VisualStudioLogHubLoggerFactory.cs index eb8939054bb..f03df536727 100644 --- a/src/roslyn/src/VisualStudio/Core/Def/LanguageClient/VisualStudioLogHubLoggerFactory.cs +++ b/src/roslyn/src/VisualStudio/Core/Def/LanguageClient/VisualStudioLogHubLoggerFactory.cs @@ -50,7 +50,7 @@ public async Task CreateLoggerAsync(string serverTypeName, Js // Register the default log level as information. // Loghub will take care of cleaning up older logs from past sessions / current session // if it decides the log file sizes are too large. - var loggingLevel = SourceLevels.ActivityTracing | SourceLevels.Information; + var loggingLevel = SourceLevels.ActivityTracing | SourceLevels.Verbose; var logOptions = new RpcContracts.Logging.LoggerOptions(new LoggingLevelSettings(loggingLevel)); var traceSource = await configuration.RegisterLogSourceAsync(logId, logOptions, cancellationToken).ConfigureAwait(false); diff --git a/src/roslyn/src/VisualStudio/Core/Def/Workspace/VisualStudioSymbolNavigationService.cs b/src/roslyn/src/VisualStudio/Core/Def/Workspace/VisualStudioSymbolNavigationService.cs index dd9fd0caf3f..dc15a81aa13 100644 --- a/src/roslyn/src/VisualStudio/Core/Def/Workspace/VisualStudioSymbolNavigationService.cs +++ b/src/roslyn/src/VisualStudio/Core/Def/Workspace/VisualStudioSymbolNavigationService.cs @@ -276,8 +276,7 @@ public async Task TrySymbolNavigationNotifyAsync(ISymbol symbol, Project p if (!TryGetVsHierarchyAndItemId(documentToUse, out var hierarchy, out var itemID)) return null; - var navigationNotify = hierarchy as IVsSymbolicNavigationNotify; - if (navigationNotify == null) + if (hierarchy is not IVsSymbolicNavigationNotify navigationNotify) return null; return (hierarchy, itemID, navigationNotify); diff --git a/src/roslyn/src/VisualStudio/Core/Impl/SolutionExplorer/AnalyzersCommandHandler.cs b/src/roslyn/src/VisualStudio/Core/Impl/SolutionExplorer/AnalyzersCommandHandler.cs index 9c789db33e1..b9a417499c0 100644 --- a/src/roslyn/src/VisualStudio/Core/Impl/SolutionExplorer/AnalyzersCommandHandler.cs +++ b/src/roslyn/src/VisualStudio/Core/Impl/SolutionExplorer/AnalyzersCommandHandler.cs @@ -265,8 +265,7 @@ private void UpdateSeverityMenuItemsChecked() _setSeverityHiddenMenuItem.Checked = false; _setSeverityNoneMenuItem.Checked = false; - var workspace = TryGetWorkspace() as VisualStudioWorkspace; - if (workspace == null) + if (TryGetWorkspace() is not VisualStudioWorkspace workspace) { return; } @@ -369,9 +368,8 @@ internal void OpenRuleSetHandler(object sender, EventArgs args) if (_tracker.SelectedFolder != null && _serviceProvider != null) { - var workspace = _tracker.SelectedFolder.Workspace as VisualStudioWorkspace; var projectId = _tracker.SelectedFolder.ProjectId; - if (workspace != null) + if (_tracker.SelectedFolder.Workspace is VisualStudioWorkspace workspace) { var ruleSetFile = workspace.TryGetRuleSetPathForProject(projectId); diff --git a/src/roslyn/src/VisualStudio/Core/Impl/SolutionExplorer/ContextMenuController.cs b/src/roslyn/src/VisualStudio/Core/Impl/SolutionExplorer/ContextMenuController.cs index f5233a8ab14..6e16b60ffbf 100644 --- a/src/roslyn/src/VisualStudio/Core/Impl/SolutionExplorer/ContextMenuController.cs +++ b/src/roslyn/src/VisualStudio/Core/Impl/SolutionExplorer/ContextMenuController.cs @@ -35,10 +35,9 @@ public bool ShowContextMenu(IEnumerable items, Point location) _updateMenu(); - var shell = Shell.Package.GetGlobalService(typeof(SVsUIShell)) as IVsUIShell; var guidContextMenu = Guids.RoslynGroupId; var locationPoints = new[] { new POINTS() { x = (short)location.X, y = (short)location.Y } }; - return shell != null && ErrorHandler.Succeeded(shell.ShowContextMenu( + return Shell.Package.GetGlobalService(typeof(SVsUIShell)) is IVsUIShell shell && ErrorHandler.Succeeded(shell.ShowContextMenu( 0, ref guidContextMenu, _menuId, diff --git a/src/roslyn/src/VisualStudio/IntegrationTest/New.IntegrationTests/QuickInfoToStringConverter.cs b/src/roslyn/src/VisualStudio/IntegrationTest/New.IntegrationTests/QuickInfoToStringConverter.cs index 03f0ef659d0..4be74d0f548 100644 --- a/src/roslyn/src/VisualStudio/IntegrationTest/New.IntegrationTests/QuickInfoToStringConverter.cs +++ b/src/roslyn/src/VisualStudio/IntegrationTest/New.IntegrationTests/QuickInfoToStringConverter.cs @@ -90,8 +90,7 @@ private static void BuildStringFromInlineCollection(InlineCollection inlines, St if (currentInline is LineBreak) return Environment.NewLine; - var run = currentInline as Run; - if (run == null) + if (currentInline is not Run run) return null; return run.Text; diff --git a/src/roslyn/src/VisualStudio/VisualStudioDiagnosticsToolWindow/OptionPages/InternalOptionsControl.cs b/src/roslyn/src/VisualStudio/VisualStudioDiagnosticsToolWindow/OptionPages/InternalOptionsControl.cs index a3d16dc7b61..ff997bd13c7 100644 --- a/src/roslyn/src/VisualStudio/VisualStudioDiagnosticsToolWindow/OptionPages/InternalOptionsControl.cs +++ b/src/roslyn/src/VisualStudio/VisualStudioDiagnosticsToolWindow/OptionPages/InternalOptionsControl.cs @@ -45,8 +45,7 @@ public InternalOptionsControl(IEnumerable options, OptionStore optionS { foreach (var item in optionsPanel.Children.OfType()) { - var title = item.Content as string; - if (title == null) + if (item.Content is not string title) { continue; } diff --git a/src/roslyn/src/VisualStudio/Xaml/Impl/Implementation/LanguageServer/Handler/CodeActions/CodeActionsHandlerProvider.cs b/src/roslyn/src/VisualStudio/Xaml/Impl/Implementation/LanguageServer/Handler/CodeActions/CodeActionsHandlerProvider.cs index 85ed6626aac..5e6b1c06a72 100644 --- a/src/roslyn/src/VisualStudio/Xaml/Impl/Implementation/LanguageServer/Handler/CodeActions/CodeActionsHandlerProvider.cs +++ b/src/roslyn/src/VisualStudio/Xaml/Impl/Implementation/LanguageServer/Handler/CodeActions/CodeActionsHandlerProvider.cs @@ -13,27 +13,17 @@ namespace Microsoft.VisualStudio.LanguageServices.Xaml.LanguageServer.Handler; [ExportStatelessXamlLspService(typeof(CodeActionsHandler)), Shared] -internal sealed class XamlCodeActionsHandler : CodeActionsHandler -{ - [ImportingConstructor] - [Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] - public XamlCodeActionsHandler( - ICodeFixService codeFixService, - ICodeRefactoringService codeRefactoringService, - IGlobalOptionService globalOptions) : base(codeFixService, codeRefactoringService, globalOptions) - { - } -} +[method: ImportingConstructor] +[method: Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] +internal sealed class XamlCodeActionsHandler( + ICodeFixService codeFixService, + ICodeRefactoringService codeRefactoringService, + IGlobalOptionService globalOptions) : CodeActionsHandler(codeFixService, codeRefactoringService, globalOptions); [ExportStatelessXamlLspService(typeof(CodeActionResolveHandler)), Shared] -internal sealed class XamlCodeActionResolveHandler : CodeActionResolveHandler -{ - [ImportingConstructor] - [Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] - public XamlCodeActionResolveHandler( - ICodeFixService codeFixService, - ICodeRefactoringService codeRefactoringService, - IGlobalOptionService globalOptions) : base(codeFixService, codeRefactoringService, globalOptions) - { - } -} +[method: ImportingConstructor] +[method: Obsolete(MefConstruction.ImportingConstructorMessage, error: true)] +internal sealed class XamlCodeActionResolveHandler( + ICodeFixService codeFixService, + ICodeRefactoringService codeRefactoringService, + IGlobalOptionService globalOptions) : CodeActionResolveHandler(codeFixService, codeRefactoringService, globalOptions); diff --git a/src/roslyn/src/Workspaces/Core/Portable/Log/AggregateLogger.cs b/src/roslyn/src/Workspaces/Core/Portable/Log/AggregateLogger.cs index 6f206094335..687869153ee 100644 --- a/src/roslyn/src/Workspaces/Core/Portable/Log/AggregateLogger.cs +++ b/src/roslyn/src/Workspaces/Core/Portable/Log/AggregateLogger.cs @@ -51,8 +51,7 @@ public static ILogger AddOrReplace(ILogger newLogger, ILogger oldLogger, Func predicate) { - var aggregateLogger = logger as AggregateLogger; - if (aggregateLogger == null) + if (logger is not AggregateLogger aggregateLogger) { // remove the logger if (predicate(logger)) diff --git a/src/roslyn/src/Workspaces/Core/Portable/Shared/Extensions/ISymbolExtensions.cs b/src/roslyn/src/Workspaces/Core/Portable/Shared/Extensions/ISymbolExtensions.cs index f7d66ea5e68..06a81ae8057 100644 --- a/src/roslyn/src/Workspaces/Core/Portable/Shared/Extensions/ISymbolExtensions.cs +++ b/src/roslyn/src/Workspaces/Core/Portable/Shared/Extensions/ISymbolExtensions.cs @@ -309,8 +309,7 @@ private static XNode[] RewriteInheritdocElements(ISymbol symbol, HashSet values) return From(hash); } + public static Checksum Create(ImmutableArray values) + { + using var pooledHash = s_incrementalHashPool.GetPooledObject(); + + foreach (var value in values) + { + pooledHash.Object.Append(MemoryMarshal.AsBytes(value.AsSpan())); + pooledHash.Object.Append(MemoryMarshal.AsBytes("\0".AsSpan())); + } + + Span hash = stackalloc byte[XXHash128SizeBytes]; + pooledHash.Object.GetHashAndReset(hash); + return From(hash); + } + public static Checksum Create(string? value) { Span destination = stackalloc byte[XXHash128SizeBytes]; diff --git a/src/roslyn/src/Workspaces/Core/Portable/Workspace/Workspace.cs b/src/roslyn/src/Workspaces/Core/Portable/Workspace/Workspace.cs index 20cf6713408..75d7784ecc0 100644 --- a/src/roslyn/src/Workspaces/Core/Portable/Workspace/Workspace.cs +++ b/src/roslyn/src/Workspaces/Core/Portable/Workspace/Workspace.cs @@ -368,13 +368,16 @@ static Solution UpdateAddedDocumentToExistingContentsInSolution( static Solution UpdateExistingDocumentsToChangedDocumentContents(Solution solution, HashSet changedDocumentIds) { + if (changedDocumentIds.Count == 0) + return solution; + // Changing a document in a linked-doc-chain will end up producing N changed documents. We only want to // process that chain once. using var _ = PooledDictionary.GetInstance(out var relatedDocumentIdsAndStates); foreach (var changedDocumentId in changedDocumentIds) { - Document? changedDocument = null; + DocumentState? changedDocumentState = null; var relatedDocumentIds = solution.GetRelatedDocumentIds(changedDocumentId); foreach (var relatedDocumentId in relatedDocumentIds) @@ -384,8 +387,8 @@ static Solution UpdateExistingDocumentsToChangedDocumentContents(Solution soluti if (!changedDocumentIds.Contains(relatedDocumentId)) { - changedDocument ??= solution.GetRequiredDocument(changedDocumentId); - relatedDocumentIdsAndStates[relatedDocumentId] = changedDocument.DocumentState; + changedDocumentState ??= solution.SolutionState.GetRequiredDocumentState(changedDocumentId); + relatedDocumentIdsAndStates[relatedDocumentId] = changedDocumentState; } } } diff --git a/src/roslyn/src/Workspaces/CoreTest/ChecksumTests.cs b/src/roslyn/src/Workspaces/CoreTest/ChecksumTests.cs index c0f369beac9..3e0b08b288e 100644 --- a/src/roslyn/src/Workspaces/CoreTest/ChecksumTests.cs +++ b/src/roslyn/src/Workspaces/CoreTest/ChecksumTests.cs @@ -177,7 +177,7 @@ public void DoNotProduceNullChecksum() Assert.NotEqual(Checksum.Null, Checksum.Create([""])); Assert.NotEqual(Checksum.Null, Checksum.Create(["\0"])); - Assert.NotEqual(Checksum.Null, Checksum.Create([null])); + Assert.NotEqual(Checksum.Null, Checksum.Create(new string?[] { null })); Assert.NotEqual(Checksum.Null, Checksum.Create(new MemoryStream())); Assert.NotEqual(Checksum.Null, Checksum.Create(stackalloc Checksum[] { Checksum.Null })); Assert.NotEqual(Checksum.Null, Checksum.Create(ImmutableArray.Create(Checksum.Null))); diff --git a/src/roslyn/src/Workspaces/CoreTest/SolutionTests/SolutionTests.cs b/src/roslyn/src/Workspaces/CoreTest/SolutionTests/SolutionTests.cs index 3f17b9e7c3c..08255f93bca 100644 --- a/src/roslyn/src/Workspaces/CoreTest/SolutionTests/SolutionTests.cs +++ b/src/roslyn/src/Workspaces/CoreTest/SolutionTests/SolutionTests.cs @@ -2866,8 +2866,7 @@ private static async Task ValidateSolutionAndCompilationsAsync(Solution solution { compilation.References.Single(r => { - var cr = r as CompilationReference; - return cr != null && cr.Compilation == compilationReference.Compilation; + return r is CompilationReference cr && cr.Compilation == compilationReference.Compilation; }); } } diff --git a/src/roslyn/src/Workspaces/CoreTestUtilities/ObjectExtensions.cs b/src/roslyn/src/Workspaces/CoreTestUtilities/ObjectExtensions.cs index 42759e4e998..73d932606d7 100644 --- a/src/roslyn/src/Workspaces/CoreTestUtilities/ObjectExtensions.cs +++ b/src/roslyn/src/Workspaces/CoreTestUtilities/ObjectExtensions.cs @@ -46,7 +46,7 @@ public static object GetFieldValue(this object instance, string fieldName) if (fieldInfo == null) { - throw new FieldAccessException("Field " + fieldName + " was not found on type " + type.ToString()); + throw new FieldAccessException($"Field '{fieldName}' was not found on type '{instance.GetType()}'"); } var result = fieldInfo.GetValue(instance); diff --git a/src/roslyn/src/Workspaces/Remote/ServiceHub/Services/EncapsulateField/RemoteEncapsulateFieldService.cs b/src/roslyn/src/Workspaces/Remote/ServiceHub/Services/EncapsulateField/RemoteEncapsulateFieldService.cs index 762709e92af..9ab9caefbed 100644 --- a/src/roslyn/src/Workspaces/Remote/ServiceHub/Services/EncapsulateField/RemoteEncapsulateFieldService.cs +++ b/src/roslyn/src/Workspaces/Remote/ServiceHub/Services/EncapsulateField/RemoteEncapsulateFieldService.cs @@ -38,8 +38,7 @@ protected override IRemoteEncapsulateFieldService CreateService(in ServiceConstr foreach (var key in fieldSymbolKeys) { - var resolved = SymbolKey.ResolveString(key, compilation, cancellationToken: cancellationToken).GetAnySymbol() as IFieldSymbol; - if (resolved == null) + if (SymbolKey.ResolveString(key, compilation, cancellationToken: cancellationToken).GetAnySymbol() is not IFieldSymbol resolved) return []; fields.Add(resolved); diff --git a/src/roslyn/src/Workspaces/Remote/ServiceHub/Services/ExtensionMethodImportCompletion/RemoteExtensionMethodImportCompletionService.cs b/src/roslyn/src/Workspaces/Remote/ServiceHub/Services/ExtensionMethodImportCompletion/RemoteExtensionMethodImportCompletionService.cs index 0010d9bb249..03d4ceaa88a 100644 --- a/src/roslyn/src/Workspaces/Remote/ServiceHub/Services/ExtensionMethodImportCompletion/RemoteExtensionMethodImportCompletionService.cs +++ b/src/roslyn/src/Workspaces/Remote/ServiceHub/Services/ExtensionMethodImportCompletion/RemoteExtensionMethodImportCompletionService.cs @@ -14,7 +14,9 @@ namespace Microsoft.CodeAnalysis.Remote; -internal sealed class RemoteExtensionMethodImportCompletionService : BrokeredServiceBase, IRemoteExtensionMethodImportCompletionService +internal sealed class RemoteExtensionMethodImportCompletionService( + in BrokeredServiceBase.ServiceConstructionArguments arguments) + : BrokeredServiceBase(arguments), IRemoteExtensionMethodImportCompletionService { internal sealed class Factory : FactoryBase { @@ -22,12 +24,7 @@ protected override IRemoteExtensionMethodImportCompletionService CreateService(i => new RemoteExtensionMethodImportCompletionService(arguments); } - public RemoteExtensionMethodImportCompletionService(in ServiceConstructionArguments arguments) - : base(arguments) - { - } - - public ValueTask GetUnimportedExtensionMethodsAsync( + public ValueTask> GetUnimportedExtensionMethodsAsync( Checksum solutionChecksum, DocumentId documentId, int position, @@ -38,11 +35,8 @@ public RemoteExtensionMethodImportCompletionService(in ServiceConstructionArgume bool hideAdvancedMembers, CancellationToken cancellationToken) { - var stopwatch = SharedStopwatch.StartNew(); return RunServiceAsync(solutionChecksum, async solution => { - var assetSyncTime = stopwatch.Elapsed; - // Completion always uses frozen-partial semantic in-proc, which is not automatically passed to OOP, so enable it explicitly var document = solution.GetRequiredDocument(documentId).WithFrozenPartialSemantics(cancellationToken); var compilation = await document.Project.GetRequiredCompilationAsync(cancellationToken).ConfigureAwait(false); @@ -56,16 +50,11 @@ public RemoteExtensionMethodImportCompletionService(in ServiceConstructionArgume .Select(symbolKey => SymbolKey.ResolveString(symbolKey, compilation, cancellationToken: cancellationToken).GetAnySymbol() as ITypeSymbol) .WhereNotNull().ToImmutableArray(); - var intialGetSymbolsTime = stopwatch.Elapsed - assetSyncTime; - - var result = await ExtensionMethodImportCompletionHelper.GetUnimportedExtensionMethodsInCurrentProcessAsync( - document, semanticModel: null, position, receiverTypeSymbol, namespaceInScopeSet, targetTypes, forceCacheCreation, hideAdvancedMembers, assetSyncTime, cancellationToken).ConfigureAwait(false); - - result.GetSymbolsTime += intialGetSymbolsTime; - return result; + return await ExtensionMethodImportCompletionHelper.GetUnimportedExtensionMethodsInCurrentProcessAsync( + document, semanticModel: null, position, receiverTypeSymbol, namespaceInScopeSet, targetTypes, forceCacheCreation, hideAdvancedMembers, cancellationToken).ConfigureAwait(false); } - return null; + return default; }, cancellationToken); } diff --git a/src/roslyn/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/Core/Collections/IntervalTreeHelpers.cs b/src/roslyn/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/Core/Collections/IntervalTreeHelpers.cs index dcc6d66424f..b6ede2a21c3 100644 --- a/src/roslyn/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/Core/Collections/IntervalTreeHelpers.cs +++ b/src/roslyn/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/Core/Collections/IntervalTreeHelpers.cs @@ -19,12 +19,12 @@ namespace Microsoft.CodeAnalysis.Shared.Collections; internal interface IIntervalTreeWitness where TIntervalTree : IIntervalTree { - public bool TryGetRoot(TIntervalTree tree, [NotNullWhen(true)] out TNode? root); - public bool TryGetLeftNode(TIntervalTree tree, TNode node, [NotNullWhen(true)] out TNode? leftNode); - public bool TryGetRightNode(TIntervalTree tree, TNode node, [NotNullWhen(true)] out TNode? rightNode); + bool TryGetRoot(TIntervalTree tree, [NotNullWhen(true)] out TNode? root); + bool TryGetLeftNode(TIntervalTree tree, TNode node, [NotNullWhen(true)] out TNode? leftNode); + bool TryGetRightNode(TIntervalTree tree, TNode node, [NotNullWhen(true)] out TNode? rightNode); - public T GetValue(TIntervalTree tree, TNode node); - public TNode GetMaxEndNode(TIntervalTree tree, TNode node); + T GetValue(TIntervalTree tree, TNode node); + TNode GetMaxEndNode(TIntervalTree tree, TNode node); } /// diff --git a/src/roslyn/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/Core/Collections/SimpleMutableIntervalTree`2.cs b/src/roslyn/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/Core/Collections/SimpleMutableIntervalTree`2.cs index fe1fd19c494..c42a6b26468 100644 --- a/src/roslyn/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/Core/Collections/SimpleMutableIntervalTree`2.cs +++ b/src/roslyn/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/Core/Collections/SimpleMutableIntervalTree`2.cs @@ -12,16 +12,14 @@ internal class SimpleMutableIntervalTree : MutableIntervalTree { private readonly TIntrospector _introspector; - public SimpleMutableIntervalTree(in TIntrospector introspector, IEnumerable? values) + public SimpleMutableIntervalTree(in TIntrospector introspector, IEnumerable? values = null) { _introspector = introspector; if (values != null) { foreach (var value in values) - { root = Insert(root, new Node(value), introspector); - } } } diff --git a/src/roslyn/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/Core/Extensions/ISymbolExtensions_Accessibility.cs b/src/roslyn/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/Core/Extensions/ISymbolExtensions_Accessibility.cs index 59e36ca667b..5063afdd50c 100644 --- a/src/roslyn/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/Core/Extensions/ISymbolExtensions_Accessibility.cs +++ b/src/roslyn/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/Core/Extensions/ISymbolExtensions_Accessibility.cs @@ -409,8 +409,7 @@ private static bool IsPrivateSymbolAccessible( { Debug.Assert(within is INamedTypeSymbol or IAssemblySymbol); - var withinType = within as INamedTypeSymbol; - if (withinType == null) + if (within is not INamedTypeSymbol withinType) { // If we're not within a type, we can't access a private symbol return false; diff --git a/src/roslyn/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/Core/Extensions/ITypeSymbolExtensions.cs b/src/roslyn/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/Core/Extensions/ITypeSymbolExtensions.cs index c5eb6a4d7b6..754f0496487 100644 --- a/src/roslyn/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/Core/Extensions/ITypeSymbolExtensions.cs +++ b/src/roslyn/src/Workspaces/SharedUtilitiesAndExtensions/Compiler/Core/Extensions/ITypeSymbolExtensions.cs @@ -578,10 +578,9 @@ private static IEnumerable SelectAccessibleMembers(this IEnumerable Date: Mon, 12 May 2025 08:55:44 +0200 Subject: [PATCH 04/32] [main] Source code updates from dotnet/runtime (#504) Co-authored-by: dotnet-maestro[bot] --- prereqs/git-info/runtime.props | 6 +- .../docs/design/coreclr/botr/clr-abi.md | 8 +- .../System.Private.CoreLib.csproj | 3 +- .../System/ComAwareWeakReference.CoreCLR.cs | 60 +- .../src/System/Diagnostics/Debugger.cs | 10 - .../src/System/GC.CoreCLR.cs | 14 +- .../InteropServices/ComWrappers.CoreCLR.cs | 119 + .../Runtime/InteropServices/ComWrappers.cs | 396 --- .../TrackerObjectManager.CoreCLR.cs | 45 + .../classlibnative/bcltype/objectnative.cpp | 19 +- .../src/coreclr/debug/daccess/dacimpl.h | 1 + .../src/coreclr/debug/daccess/request.cpp | 226 +- src/runtime/src/coreclr/debug/ee/dactable.cpp | 11 +- .../src/coreclr/inc/jiteeversionguid.h | 10 +- .../src/coreclr/interop/comwrappers.cpp | 502 +--- .../src/coreclr/interop/comwrappers.hpp | 160 +- .../src/coreclr/interop/inc/interoplib.h | 116 +- .../src/coreclr/interop/inc/interoplibabi.h | 64 +- .../coreclr/interop/inc/interoplibimports.h | 59 +- .../src/coreclr/interop/interoplib.cpp | 197 +- .../coreclr/interop/trackerobjectmanager.cpp | 252 +- src/runtime/src/coreclr/jit/codegenxarch.cpp | 68 +- .../Runtime/amd64/ExceptionHandling.S | 72 +- .../Runtime/amd64/ExceptionHandling.asm | 79 +- .../src/System.Private.CoreLib.csproj | 11 +- .../src/System/Diagnostics/Debugger.cs | 11 - .../src/System/GC.NativeAot.cs | 7 +- .../ComAwareWeakReference.NativeAot.cs | 27 + .../InteropServices/ComWrappers.NativeAot.cs | 2042 +-------------- .../TrackerObjectManager.NativeAot.cs | 221 +- src/runtime/src/coreclr/vm/CMakeLists.txt | 2 + .../src/coreclr/vm/amd64/AsmHelpers.asm | 93 +- src/runtime/src/coreclr/vm/amd64/asmhelpers.S | 53 +- src/runtime/src/coreclr/vm/binder.cpp | 2 + src/runtime/src/coreclr/vm/comutilnative.cpp | 4 +- src/runtime/src/coreclr/vm/comutilnative.h | 2 +- .../src/coreclr/vm/conditionalweaktable.cpp | 38 + .../src/coreclr/vm/conditionalweaktable.h | 76 + src/runtime/src/coreclr/vm/corelib.cpp | 5 + src/runtime/src/coreclr/vm/corelib.h | 51 +- src/runtime/src/coreclr/vm/ecalllist.h | 5 - src/runtime/src/coreclr/vm/gcenv.ee.cpp | 6 +- .../src/coreclr/vm/interoplibinterface.h | 103 +- .../vm/interoplibinterface_comwrappers.cpp | 2260 +++-------------- .../vm/interoplibinterface_comwrappers.h | 165 ++ .../coreclr/vm/interoplibinterface_shared.cpp | 2 +- src/runtime/src/coreclr/vm/interoputil.cpp | 22 +- src/runtime/src/coreclr/vm/interoputil.h | 8 - src/runtime/src/coreclr/vm/metasig.h | 6 +- src/runtime/src/coreclr/vm/object.h | 1 + src/runtime/src/coreclr/vm/object.inl | 25 + .../src/coreclr/vm/qcallentrypoints.cpp | 16 +- .../src/coreclr/vm/runtimecallablewrapper.cpp | 29 +- .../src/coreclr/vm/runtimecallablewrapper.h | 23 +- src/runtime/src/coreclr/vm/syncblk.cpp | 55 +- src/runtime/src/coreclr/vm/syncblk.h | 155 +- src/runtime/src/coreclr/vm/threads.cpp | 8 - .../src/coreclr/vm/weakreferencenative.cpp | 61 +- .../src/coreclr/vm/weakreferencenative.h | 14 +- .../System.Formats.Tar/System.Formats.Tar.sln | 26 +- .../src/System/Formats/Tar/GnuTarEntry.cs | 64 +- .../src/System/Formats/Tar/PaxTarEntry.cs | 17 +- .../src/System/Formats/Tar/TarHeader.Read.cs | 19 +- .../src/System/Formats/Tar/TarHeader.Write.cs | 44 +- .../src/System/Formats/Tar/TarWriter.Unix.cs | 7 +- .../System/Formats/Tar/TarWriter.Windows.cs | 7 +- .../src/System/Formats/Tar/TarWriter.cs | 15 + .../tests/TarEntry/GnuTarEntry.Tests.cs | 1622 ++++++------ .../TarEntry/PaxTarEntry.Conversion.Tests.cs | 37 +- .../TarEntry.Conversion.Tests.Base.cs | 80 +- .../tests/TarTestsBase.Gnu.cs | 31 +- .../tests/TarTestsBase.Pax.cs | 1 - .../System.Formats.Tar/tests/TarTestsBase.cs | 28 +- .../tests/TarWriter/TarWriter.Tests.cs | 78 +- .../TarWriter/TarWriter.WriteEntry.Base.cs | 2 +- .../System.Private.CoreLib.Shared.projitems | 13 +- .../src/System/ComAwareWeakReference.cs | 12 +- .../src/System/Diagnostics/Debugger.cs | 20 + .../CompilerServices/ConditionalWeakTable.cs | 2 + .../ComAwareWeakReference.ComWrappers.cs} | 23 +- .../ComWrappers.PlatformNotSupported.cs | 23 +- .../Runtime/InteropServices/ComWrappers.cs | 1737 ++++++++++++- .../CreateComInterfaceFlags.cs | 32 + .../InteropServices/CreateObjectFlags.cs | 42 + .../InteropServices/IReferenceTracker.cs | 47 + .../InteropServices/ReferenceTrackerHost.cs | 208 ++ .../InteropServices/TrackerObjectManager.cs | 105 + .../gen/UpgradeToGeneratedRegexCodeFixer.cs | 3 +- .../UpgradeToGeneratedRegexAnalyzerTests.cs | 42 + .../src/System/Diagnostics/Debugger.cs | 2 - src/runtime/src/mono/mono/mini/intrinsics.c | 4 + .../Preinitialization/Preinitialization.cs | 11 + src/source-manifest.json | 6 +- 93 files changed, 5148 insertions(+), 7368 deletions(-) create mode 100644 src/runtime/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.CoreCLR.cs delete mode 100644 src/runtime/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.cs create mode 100644 src/runtime/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/TrackerObjectManager.CoreCLR.cs create mode 100644 src/runtime/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/InteropServices/ComAwareWeakReference.NativeAot.cs create mode 100644 src/runtime/src/coreclr/vm/conditionalweaktable.cpp create mode 100644 src/runtime/src/coreclr/vm/conditionalweaktable.h create mode 100644 src/runtime/src/coreclr/vm/interoplibinterface_comwrappers.h rename src/runtime/src/{coreclr/nativeaot/System.Private.CoreLib/src/System/ComAwareWeakReference.NativeAot.cs => libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ComAwareWeakReference.ComWrappers.cs} (63%) create mode 100644 src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/CreateComInterfaceFlags.cs create mode 100644 src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/CreateObjectFlags.cs create mode 100644 src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/IReferenceTracker.cs create mode 100644 src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ReferenceTrackerHost.cs create mode 100644 src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/TrackerObjectManager.cs diff --git a/prereqs/git-info/runtime.props b/prereqs/git-info/runtime.props index a76a6fc89f0..75eef7e4751 100644 --- a/prereqs/git-info/runtime.props +++ b/prereqs/git-info/runtime.props @@ -1,8 +1,8 @@  - e67e997094b65c8ed7289b00f2304288d8f75a12 - 20250509.6 - 10.0.0-preview.5.25259.6 + 8b80947425177e7b500e13ec66d1b9936a67e5a5 + 20250511.2 + 10.0.0-preview.5.25261.2 \ No newline at end of file diff --git a/src/runtime/docs/design/coreclr/botr/clr-abi.md b/src/runtime/docs/design/coreclr/botr/clr-abi.md index 7e6ef388a8f..32c89100205 100644 --- a/src/runtime/docs/design/coreclr/botr/clr-abi.md +++ b/src/runtime/docs/design/coreclr/botr/clr-abi.md @@ -376,15 +376,17 @@ When an exception occurs, the VM is invoked to do some processing. If the except The VM sets the frame register to be the same as the parent function. This allows the funclets to access local variables using frame-relative addresses. -For filter funclets and on CoreCLR/AMD64 for all funclets, all other register values that existed at the exception point in the corresponding "try" region are trashed on entry to the funclet. That is, the only registers that have known values are those of the funclet parameters and the frame register. +For filter funclets, all other register values that existed at the exception point in the corresponding "try" region are trashed on entry to the funclet. That is, the only registers that have known values are those of the funclet parameters and the frame register. -For other funclets on all platforms except CoreCLR/AMD64, all non-volatile registers are restored to their values at the exception point. The JIT codegen [does not take advantage of it currently](https://github.com/dotnet/runtime/pull/114630#issuecomment-2810210759). +For other funclets, all non-volatile registers are restored to their values at the exception point. The JIT codegen [does not take advantage of it currently](https://github.com/dotnet/runtime/pull/114630#issuecomment-2810210759). ### Registers on return from a funclet When a funclet finishes execution, and the VM returns execution to the function (or an enclosing funclet, if there is EH clause nesting), the non-volatile registers are restored to the values they held at the exception point. Note that the volatile registers have been trashed. -Any register value changes made in the funclet are lost. If a funclet wants to make a variable change known to the main function (or the funclet that contains the "try" region), that variable change needs to be made to the shared main function stack frame. +Any register value changes made in the funclet are lost. If a funclet wants to make a variable change known to the main function (or the funclet that contains the "try" region), that variable change needs to be made to the shared main function stack frame. This not a fundamental limitation. If necessary, the runtime can be updated to preserve non-volatile register changes made in funclets. + +Funclets are not required to preserve non-volatile registers. ## Windows/x86 EH considerations diff --git a/src/runtime/src/coreclr/System.Private.CoreLib/System.Private.CoreLib.csproj b/src/runtime/src/coreclr/System.Private.CoreLib/System.Private.CoreLib.csproj index a4ddab439f6..854e13fedb8 100644 --- a/src/runtime/src/coreclr/System.Private.CoreLib/System.Private.CoreLib.csproj +++ b/src/runtime/src/coreclr/System.Private.CoreLib/System.Private.CoreLib.csproj @@ -254,7 +254,8 @@ - + + diff --git a/src/runtime/src/coreclr/System.Private.CoreLib/src/System/ComAwareWeakReference.CoreCLR.cs b/src/runtime/src/coreclr/System.Private.CoreLib/src/System/ComAwareWeakReference.CoreCLR.cs index de9aeddf403..de9908401cb 100644 --- a/src/runtime/src/coreclr/System.Private.CoreLib/src/System/ComAwareWeakReference.CoreCLR.cs +++ b/src/runtime/src/coreclr/System.Private.CoreLib/src/System/ComAwareWeakReference.CoreCLR.cs @@ -10,46 +10,56 @@ namespace System internal sealed partial class ComAwareWeakReference { [LibraryImport(RuntimeHelpers.QCall, EntryPoint = "ComWeakRefToObject")] - private static partial void ComWeakRefToObject(IntPtr pComWeakRef, long wrapperId, ObjectHandleOnStack retRcw); + private static partial void ComWeakRefToObject(IntPtr pComWeakRef, ObjectHandleOnStack retRcw); - internal static object? ComWeakRefToObject(IntPtr pComWeakRef, long wrapperId) + internal static object? ComWeakRefToObject(IntPtr pComWeakRef, object? context) { - object? retRcw = null; - ComWeakRefToObject(pComWeakRef, wrapperId, ObjectHandleOnStack.Create(ref retRcw)); - return retRcw; +#if FEATURE_COMINTEROP + if (context is null) + { + // This wrapper was not created by ComWrappers, so we try to rehydrate using built-in COM. + object? retRcw = null; + ComWeakRefToObject(pComWeakRef, ObjectHandleOnStack.Create(ref retRcw)); + return retRcw; + } +#endif // FEATURE_COMINTEROP + + return ComWeakRefToComWrappersObject(pComWeakRef, context); } [MethodImpl(MethodImplOptions.AggressiveInlining)] internal static unsafe bool PossiblyComObject(object target) { - // see: syncblk.h - const int IS_HASHCODE_BIT_NUMBER = 26; - const int BIT_SBLK_IS_HASHCODE = 1 << IS_HASHCODE_BIT_NUMBER; - const int BIT_SBLK_IS_HASH_OR_SYNCBLKINDEX = 0x08000000; - - fixed (byte* pRawData = &target.GetRawData()) - { - // The header is 4 bytes before MT field on all architectures - int header = *(int*)(pRawData - sizeof(IntPtr) - sizeof(int)); - // common case: target does not have a syncblock, so there is no interop info - return (header & (BIT_SBLK_IS_HASH_OR_SYNCBLKINDEX | BIT_SBLK_IS_HASHCODE)) == BIT_SBLK_IS_HASH_OR_SYNCBLKINDEX; - } +#if FEATURE_COMINTEROP + return target is __ComObject || PossiblyComWrappersObject(target); +#else // !FEATURE_COMINTEROP + // If we are not using built-in COM, then we can only be a ComWrappers object. + return PossiblyComWrappersObject(target); +#endif // FEATURE_COMINTEROP } - [MethodImpl(MethodImplOptions.InternalCall)] - internal static extern bool HasInteropInfo(object target); - [LibraryImport(RuntimeHelpers.QCall, EntryPoint = "ObjectToComWeakRef")] - private static partial IntPtr ObjectToComWeakRef(ObjectHandleOnStack retRcw, out long wrapperId); + private static partial IntPtr ObjectToComWeakRef(ObjectHandleOnStack retRcw); - internal static nint ObjectToComWeakRef(object target, out long wrapperId) + internal static nint ObjectToComWeakRef(object target, out object? context) { - if (HasInteropInfo(target)) +#if FEATURE_COMINTEROP + if (target is __ComObject) + { + // This object is using built-in COM, so use built-in COM to create the weak reference. + context = null; + return ObjectToComWeakRef(ObjectHandleOnStack.Create(ref target)); + } +#endif // FEATURE_COMINTEROP + + if (PossiblyComWrappersObject(target)) { - return ObjectToComWeakRef(ObjectHandleOnStack.Create(ref target), out wrapperId); + return ComWrappersObjectToComWeakRef(target, out context); } - wrapperId = 0; + // This object is not produced using built-in COM or ComWrappers + // or is an aggregated object, so we cannot create a weak reference. + context = null; return IntPtr.Zero; } } diff --git a/src/runtime/src/coreclr/System.Private.CoreLib/src/System/Diagnostics/Debugger.cs b/src/runtime/src/coreclr/System.Private.CoreLib/src/System/Diagnostics/Debugger.cs index 9bd47568501..cd39afd38c9 100644 --- a/src/runtime/src/coreclr/System.Private.CoreLib/src/System/Diagnostics/Debugger.cs +++ b/src/runtime/src/coreclr/System.Private.CoreLib/src/System/Diagnostics/Debugger.cs @@ -65,16 +65,6 @@ static void NotifyOfCrossThreadDependencySlow() [SuppressGCTransition] private static partial int IsManagedDebuggerAttached(); - // Constants representing the importance level of messages to be logged. - // - // An attached debugger can enable or disable which messages will - // actually be reported to the user through the debugger - // services API. This info is communicated to the runtime so only - // desired events are actually reported to the debugger. - // - // Constant representing the default category - public static readonly string? DefaultCategory; - // Posts a message for the attached debugger. If there is no // debugger attached, has no effect. The debugger may or may not // report the message depending on its settings. diff --git a/src/runtime/src/coreclr/System.Private.CoreLib/src/System/GC.CoreCLR.cs b/src/runtime/src/coreclr/System.Private.CoreLib/src/System/GC.CoreCLR.cs index 184ce80f44b..101fbfa7c6b 100644 --- a/src/runtime/src/coreclr/System.Private.CoreLib/src/System/GC.CoreCLR.cs +++ b/src/runtime/src/coreclr/System.Private.CoreLib/src/System/GC.CoreCLR.cs @@ -106,7 +106,7 @@ internal enum GC_ALLOC_FLAGS private static partial long GetTotalMemory(); [LibraryImport(RuntimeHelpers.QCall, EntryPoint = "GCInterface_Collect")] - private static partial void _Collect(int generation, int mode); + private static partial void _Collect(int generation, int mode, [MarshalAs(UnmanagedType.U1)] bool lowMemoryPressure); [MethodImpl(MethodImplOptions.InternalCall)] private static extern int GetMaxGeneration(); @@ -174,7 +174,7 @@ public static void Collect(int generation) public static void Collect() { // -1 says to GC all generations. - _Collect(-1, (int)InternalGCCollectionMode.Blocking); + _Collect(-1, (int)InternalGCCollectionMode.Blocking, lowMemoryPressure: false); } public static void Collect(int generation, GCCollectionMode mode) @@ -189,6 +189,11 @@ public static void Collect(int generation, GCCollectionMode mode, bool blocking) } public static void Collect(int generation, GCCollectionMode mode, bool blocking, bool compacting) + { + Collect(generation, mode, blocking, compacting, lowMemoryPressure: false); + } + + internal static void Collect(int generation, GCCollectionMode mode, bool blocking, bool compacting, bool lowMemoryPressure) { ArgumentOutOfRangeException.ThrowIfNegative(generation); @@ -197,7 +202,6 @@ public static void Collect(int generation, GCCollectionMode mode, bool blocking, throw new ArgumentOutOfRangeException(nameof(mode), SR.ArgumentOutOfRange_Enum); } - int iInternalModes = 0; if (mode == GCCollectionMode.Optimized) @@ -222,7 +226,9 @@ public static void Collect(int generation, GCCollectionMode mode, bool blocking, } if (compacting) + { iInternalModes |= (int)InternalGCCollectionMode.Compacting; + } if (blocking) { @@ -233,7 +239,7 @@ public static void Collect(int generation, GCCollectionMode mode, bool blocking, iInternalModes |= (int)InternalGCCollectionMode.NonBlocking; } - _Collect(generation, iInternalModes); + _Collect(generation, (int)iInternalModes, lowMemoryPressure); } public static int CollectionCount(int generation) diff --git a/src/runtime/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.CoreCLR.cs b/src/runtime/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.CoreCLR.cs new file mode 100644 index 00000000000..5f89431729f --- /dev/null +++ b/src/runtime/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.CoreCLR.cs @@ -0,0 +1,119 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Threading; +using System.Runtime.CompilerServices; +using System.Collections.Generic; +using System.Collections.Concurrent; + +namespace System.Runtime.InteropServices +{ + /// + /// Class for managing wrappers of COM IUnknown types. + /// + public abstract partial class ComWrappers + { + /// + /// Get the runtime provided IUnknown implementation. + /// + /// Function pointer to QueryInterface. + /// Function pointer to AddRef. + /// Function pointer to Release. + public static unsafe void GetIUnknownImpl(out IntPtr fpQueryInterface, out IntPtr fpAddRef, out IntPtr fpRelease) + => GetIUnknownImplInternal(out fpQueryInterface, out fpAddRef, out fpRelease); + + [LibraryImport(RuntimeHelpers.QCall, EntryPoint = "ComWrappers_GetIUnknownImpl")] + [SuppressGCTransition] + private static partial void GetIUnknownImplInternal(out IntPtr fpQueryInterface, out IntPtr fpAddRef, out IntPtr fpRelease); + + internal static IntPtr DefaultIUnknownVftblPtr { get; } = CreateDefaultIUnknownVftbl(); + internal static IntPtr TaggedImplVftblPtr { get; } = CreateTaggedImplVftbl(); + internal static IntPtr DefaultIReferenceTrackerTargetVftblPtr { get; } = CreateDefaultIReferenceTrackerTargetVftbl(); + + private static unsafe IntPtr CreateDefaultIUnknownVftbl() + { + IntPtr* vftbl = (IntPtr*)RuntimeHelpers.AllocateTypeAssociatedMemory(typeof(ComWrappers), 3 * sizeof(IntPtr)); + GetIUnknownImpl(out vftbl[0], out vftbl[1], out vftbl[2]); + return (IntPtr)vftbl; + } + + private static unsafe IntPtr CreateTaggedImplVftbl() + { + IntPtr* vftbl = (IntPtr*)RuntimeHelpers.AllocateTypeAssociatedMemory(typeof(ComWrappers), 4 * sizeof(IntPtr)); + GetIUnknownImpl(out vftbl[0], out vftbl[1], out vftbl[2]); + vftbl[3] = GetTaggedImplCurrentVersion(); + return (IntPtr)vftbl; + } + + internal static int CallICustomQueryInterface(ManagedObjectWrapperHolder holder, ref Guid iid, out IntPtr ppObject) + { + if (holder.WrappedObject is ICustomQueryInterface customQueryInterface) + { + return (int)customQueryInterface.GetInterface(ref iid, out ppObject); + } + + ppObject = IntPtr.Zero; + return -1; // See TryInvokeICustomQueryInterfaceResult + } + + internal static IntPtr GetOrCreateComInterfaceForObjectWithGlobalMarshallingInstance(object obj) + { + try + { + return s_globalInstanceForMarshalling is null + ? IntPtr.Zero + : s_globalInstanceForMarshalling.GetOrCreateComInterfaceForObject(obj, CreateComInterfaceFlags.TrackerSupport); + } + catch (ArgumentException) + { + // We've failed to create a COM interface for the object. + // Fallback to built-in COM. + return IntPtr.Zero; + } + } + + internal static object? GetOrCreateObjectForComInstanceWithGlobalMarshallingInstance(IntPtr comObject, CreateObjectFlags flags) + { + try + { + return s_globalInstanceForMarshalling?.GetOrCreateObjectForComInstance(comObject, flags); + } + catch (ArgumentNullException) + { + // We've failed to create a managed object for the COM instance. + // Fallback to built-in COM. + return null; + } + } + + [LibraryImport(RuntimeHelpers.QCall, EntryPoint = "ComWrappers_GetIReferenceTrackerTargetVftbl")] + [SuppressGCTransition] + private static partial IntPtr GetDefaultIReferenceTrackerTargetVftbl(); + + private static IntPtr CreateDefaultIReferenceTrackerTargetVftbl() + => GetDefaultIReferenceTrackerTargetVftbl(); + + private static IntPtr GetTaggedImplCurrentVersion() + { + return GetTaggedImpl(); + } + + [LibraryImport(RuntimeHelpers.QCall, EntryPoint = "ComWrappers_GetTaggedImpl")] + [SuppressGCTransition] + private static partial IntPtr GetTaggedImpl(); + + internal sealed partial class ManagedObjectWrapperHolder + { + [LibraryImport(RuntimeHelpers.QCall, EntryPoint = "ComWrappers_RegisterIsRootedCallback")] + private static partial void RegisterIsRootedCallback(); + + private static IntPtr AllocateRefCountedHandle(ManagedObjectWrapperHolder holder) + { + return AllocateRefCountedHandle(ObjectHandleOnStack.Create(ref holder)); + } + + [LibraryImport(RuntimeHelpers.QCall, EntryPoint = "ComWrappers_AllocateRefCountedHandle")] + private static partial IntPtr AllocateRefCountedHandle(ObjectHandleOnStack obj); + } + } +} diff --git a/src/runtime/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.cs b/src/runtime/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.cs deleted file mode 100644 index c7c78a7325f..00000000000 --- a/src/runtime/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.cs +++ /dev/null @@ -1,396 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -using System; -using System.Collections; -using System.Diagnostics.CodeAnalysis; -using System.Runtime.CompilerServices; -using System.Runtime.Versioning; -using System.Threading; - -namespace System.Runtime.InteropServices -{ - /// - /// Internal enumeration used by the runtime to indicate the scenario for which ComWrappers is being used. - /// - internal enum ComWrappersScenario - { - Instance = 0, - TrackerSupportGlobalInstance = 1, - MarshallingGlobalInstance = 2, - } - - /// - /// Class for managing wrappers of COM IUnknown types. - /// - public abstract partial class ComWrappers - { - /// - /// Given a managed object, determine if it is a -created - /// managed wrapper and if so, return the wrapped unmanaged pointer. - /// - /// A managed wrapper - /// An unmanaged COM object - /// True if the wrapper was resolved to an external COM object, otherwise false. - /// - /// If a COM object is returned, the caller is expected to call Release() on the object. - /// This can be done through an API like . - /// Since this API is required to interact directly with the external COM object, QueryInterface(), - /// it is important for the caller to understand the COM object may have apartment affinity and therefore - /// if the current thread is not in the correct apartment or the COM object is not a proxy this call may fail. - /// - public static bool TryGetComInstance(object obj, out IntPtr unknown) - { - if (obj == null) - { - unknown = IntPtr.Zero; - return false; - } - - return TryGetComInstanceInternal(ObjectHandleOnStack.Create(ref obj), out unknown); - } - - [LibraryImport(RuntimeHelpers.QCall, EntryPoint = "ComWrappers_TryGetComInstance")] - [return: MarshalAs(UnmanagedType.Bool)] - private static partial bool TryGetComInstanceInternal(ObjectHandleOnStack wrapperMaybe, out IntPtr externalComObject); - - /// - /// Given a COM object, determine if it is a -created - /// unmanaged wrapper and if so, return the wrapped managed object. - /// - /// An unmanaged wrapper - /// A managed object - /// True if the wrapper was resolved to a managed object, otherwise false. - public static bool TryGetObject(IntPtr unknown, [NotNullWhen(true)] out object? obj) - { - obj = null; - if (unknown == IntPtr.Zero) - { - return false; - } - - return TryGetObjectInternal(unknown, ObjectHandleOnStack.Create(ref obj)); - } - - [LibraryImport(RuntimeHelpers.QCall, EntryPoint = "ComWrappers_TryGetObject")] - [return: MarshalAs(UnmanagedType.Bool)] - private static partial bool TryGetObjectInternal(IntPtr wrapperMaybe, ObjectHandleOnStack instance); - - /// - /// ABI for function dispatch of a COM interface. - /// - public partial struct ComInterfaceDispatch - { - /// - /// Given a from a generated Vtable, convert to the target type. - /// - /// Desired type. - /// Pointer supplied to Vtable function entry. - /// Instance of type associated with dispatched function call. - public static unsafe T GetInstance(ComInterfaceDispatch* dispatchPtr) where T : class - { - // See the dispatch section in the runtime for details on the masking below. - long DispatchAlignmentThisPtr = sizeof(void*) == 8 ? 64 : 16; // Should be a power of 2. - long DispatchThisPtrMask = ~(DispatchAlignmentThisPtr - 1); - var comInstance = *(ComInterfaceInstance**)(((long)dispatchPtr) & DispatchThisPtrMask); - - return Unsafe.As(GCHandle.InternalGet(comInstance->GcHandle)); - } - - private struct ComInterfaceInstance - { - public IntPtr GcHandle; - } - } - - /// - /// Globally registered instance of the ComWrappers class for reference tracker support. - /// - private static ComWrappers? s_globalInstanceForTrackerSupport; - - /// - /// Globally registered instance of the ComWrappers class for marshalling. - /// - private static ComWrappers? s_globalInstanceForMarshalling; - - private static long s_instanceCounter; - private readonly long id = Interlocked.Increment(ref s_instanceCounter); - - /// - /// Create a COM representation of the supplied object that can be passed to a non-managed environment. - /// - /// The managed object to expose outside the .NET runtime. - /// Flags used to configure the generated interface. - /// The generated COM interface that can be passed outside the .NET runtime. - /// - /// If a COM representation was previously created for the specified using - /// this instance, the previously created COM interface will be returned. - /// If not, a new one will be created. - /// - public IntPtr GetOrCreateComInterfaceForObject(object instance, CreateComInterfaceFlags flags) - { - IntPtr ptr; - if (!TryGetOrCreateComInterfaceForObjectInternal(this, instance, flags, out ptr)) - throw new ArgumentException(null, nameof(instance)); - - return ptr; - } - - /// - /// Create a COM representation of the supplied object that can be passed to a non-managed environment. - /// - /// The implementation to use when creating the COM representation. - /// The managed object to expose outside the .NET runtime. - /// Flags used to configure the generated interface. - /// The generated COM interface that can be passed outside the .NET runtime or IntPtr.Zero if it could not be created. - /// Returns true if a COM representation could be created, false otherwise - /// - /// If is null, the global instance (if registered) will be used. - /// - private static bool TryGetOrCreateComInterfaceForObjectInternal(ComWrappers impl, object instance, CreateComInterfaceFlags flags, out IntPtr retValue) - { - ArgumentNullException.ThrowIfNull(instance); - - return TryGetOrCreateComInterfaceForObjectInternal(ObjectHandleOnStack.Create(ref impl), impl.id, ObjectHandleOnStack.Create(ref instance), flags, out retValue); - } - - [LibraryImport(RuntimeHelpers.QCall, EntryPoint = "ComWrappers_TryGetOrCreateComInterfaceForObject")] - [return: MarshalAs(UnmanagedType.Bool)] - private static partial bool TryGetOrCreateComInterfaceForObjectInternal(ObjectHandleOnStack comWrappersImpl, long wrapperId, ObjectHandleOnStack instance, CreateComInterfaceFlags flags, out IntPtr retValue); - - // Called by the runtime to execute the abstract instance function - internal static unsafe void* CallComputeVtables(ComWrappersScenario scenario, ComWrappers? comWrappersImpl, object obj, CreateComInterfaceFlags flags, out int count) - { - ComWrappers? impl = null; - switch (scenario) - { - case ComWrappersScenario.Instance: - impl = comWrappersImpl; - break; - case ComWrappersScenario.TrackerSupportGlobalInstance: - impl = s_globalInstanceForTrackerSupport; - break; - case ComWrappersScenario.MarshallingGlobalInstance: - impl = s_globalInstanceForMarshalling; - break; - } - - if (impl is null) - { - count = -1; - return null; - } - - return impl.ComputeVtables(obj, flags, out count); - } - - /// - /// Get the currently registered managed object or creates a new managed object and registers it. - /// - /// Object to import for usage into the .NET runtime. - /// Flags used to describe the external object. - /// Returns a managed object associated with the supplied external COM object. - /// - /// If a managed object was previously created for the specified - /// using this instance, the previously created object will be returned. - /// If not, a new one will be created. - /// - public object GetOrCreateObjectForComInstance(IntPtr externalComObject, CreateObjectFlags flags) - { - object? obj; - if (!TryGetOrCreateObjectForComInstanceInternal(this, externalComObject, IntPtr.Zero, flags, null, out obj)) - throw new ArgumentNullException(nameof(externalComObject)); - - return obj!; - } - - // Called by the runtime to execute the abstract instance function. - internal static object? CallCreateObject(ComWrappersScenario scenario, ComWrappers? comWrappersImpl, IntPtr externalComObject, CreateObjectFlags flags) - { - ComWrappers? impl = null; - switch (scenario) - { - case ComWrappersScenario.Instance: - impl = comWrappersImpl; - break; - case ComWrappersScenario.TrackerSupportGlobalInstance: - impl = s_globalInstanceForTrackerSupport; - break; - case ComWrappersScenario.MarshallingGlobalInstance: - impl = s_globalInstanceForMarshalling; - break; - } - - if (impl == null) - return null; - - return impl.CreateObject(externalComObject, flags); - } - - /// - /// Get the currently registered managed object or uses the supplied managed object and registers it. - /// - /// Object to import for usage into the .NET runtime. - /// Flags used to describe the external object. - /// The to be used as the wrapper for the external object - /// Returns a managed object associated with the supplied external COM object. - /// - /// If the instance already has an associated external object a will be thrown. - /// - public object GetOrRegisterObjectForComInstance(IntPtr externalComObject, CreateObjectFlags flags, object wrapper) - { - return GetOrRegisterObjectForComInstance(externalComObject, flags, wrapper, IntPtr.Zero); - } - - /// - /// Get the currently registered managed object or uses the supplied managed object and registers it. - /// - /// Object to import for usage into the .NET runtime. - /// Flags used to describe the external object. - /// The to be used as the wrapper for the external object - /// Inner for COM aggregation scenarios - /// Returns a managed object associated with the supplied external COM object. - /// - /// This method override is for registering an aggregated COM instance with its associated inner. The inner - /// will be released when the associated wrapper is eventually freed. Note that it will be released on a thread - /// in an unknown apartment state. If the supplied inner is not known to be a free-threaded instance then - /// it is advised to not supply the inner. - /// - /// If the instance already has an associated external object a will be thrown. - /// - public object GetOrRegisterObjectForComInstance(IntPtr externalComObject, CreateObjectFlags flags, object wrapper, IntPtr inner) - { - ArgumentNullException.ThrowIfNull(wrapper); - - object? obj; - if (!TryGetOrCreateObjectForComInstanceInternal(this, externalComObject, inner, flags, wrapper, out obj)) - throw new ArgumentNullException(nameof(externalComObject)); - - return obj!; - } - - /// - /// Get the currently registered managed object or creates a new managed object and registers it. - /// - /// The implementation to use when creating the managed object. - /// Object to import for usage into the .NET runtime. - /// The inner instance if aggregation is involved - /// Flags used to describe the external object. - /// The to be used as the wrapper for the external object. - /// The managed object associated with the supplied external COM object or null if it could not be created. - /// Returns true if a managed object could be retrieved/created, false otherwise - /// - /// If is null, the global instance (if registered) will be used. - /// - private static bool TryGetOrCreateObjectForComInstanceInternal( - ComWrappers impl, - IntPtr externalComObject, - IntPtr innerMaybe, - CreateObjectFlags flags, - object? wrapperMaybe, - out object? retValue) - { - ArgumentNullException.ThrowIfNull(externalComObject); - - // If the inner is supplied the Aggregation flag should be set. - if (innerMaybe != IntPtr.Zero && !flags.HasFlag(CreateObjectFlags.Aggregation)) - throw new InvalidOperationException(SR.InvalidOperation_SuppliedInnerMustBeMarkedAggregation); - - object? wrapperMaybeLocal = wrapperMaybe; - retValue = null; - return TryGetOrCreateObjectForComInstanceInternal(ObjectHandleOnStack.Create(ref impl), impl.id, externalComObject, innerMaybe, flags, ObjectHandleOnStack.Create(ref wrapperMaybeLocal), ObjectHandleOnStack.Create(ref retValue)); - } - - [LibraryImport(RuntimeHelpers.QCall, EntryPoint = "ComWrappers_TryGetOrCreateObjectForComInstance")] - [return: MarshalAs(UnmanagedType.Bool)] - private static partial bool TryGetOrCreateObjectForComInstanceInternal(ObjectHandleOnStack comWrappersImpl, long wrapperId, IntPtr externalComObject, IntPtr innerMaybe, CreateObjectFlags flags, ObjectHandleOnStack wrapper, ObjectHandleOnStack retValue); - - // Call to execute the virtual instance function - internal static void CallReleaseObjects(ComWrappers? comWrappersImpl, IEnumerable objects) - => (comWrappersImpl ?? s_globalInstanceForTrackerSupport!).ReleaseObjects(objects); - - /// - /// Register a instance to be used as the global instance for reference tracker support. - /// - /// Instance to register - /// - /// This function can only be called a single time. Subsequent calls to this function will result - /// in a being thrown. - /// - /// Scenarios where this global instance may be used are: - /// * Object tracking via the and flags. - /// - public static void RegisterForTrackerSupport(ComWrappers instance) - { - ArgumentNullException.ThrowIfNull(instance); - - if (null != Interlocked.CompareExchange(ref s_globalInstanceForTrackerSupport, instance, null)) - { - throw new InvalidOperationException(SR.InvalidOperation_ResetGlobalComWrappersInstance); - } - - SetGlobalInstanceRegisteredForTrackerSupport(instance.id); - } - - - [LibraryImport(RuntimeHelpers.QCall, EntryPoint = "ComWrappers_SetGlobalInstanceRegisteredForTrackerSupport")] - [SuppressGCTransition] - private static partial void SetGlobalInstanceRegisteredForTrackerSupport(long id); - - /// - /// Register a instance to be used as the global instance for marshalling in the runtime. - /// - /// Instance to register - /// - /// This function can only be called a single time. Subsequent calls to this function will result - /// in a being thrown. - /// - /// Scenarios where this global instance may be used are: - /// * Usage of COM-related Marshal APIs - /// * P/Invokes with COM-related types - /// * COM activation - /// - [SupportedOSPlatform("windows")] - public static void RegisterForMarshalling(ComWrappers instance) - { - ArgumentNullException.ThrowIfNull(instance); - - if (null != Interlocked.CompareExchange(ref s_globalInstanceForMarshalling, instance, null)) - { - throw new InvalidOperationException(SR.InvalidOperation_ResetGlobalComWrappersInstance); - } - - // Indicate to the runtime that a global instance has been registered for marshalling. - // This allows the native runtime know to call into the managed ComWrappers only if a - // global instance is registered for marshalling. - SetGlobalInstanceRegisteredForMarshalling(instance.id); - } - - [LibraryImport(RuntimeHelpers.QCall, EntryPoint = "ComWrappers_SetGlobalInstanceRegisteredForMarshalling")] - [SuppressGCTransition] - private static partial void SetGlobalInstanceRegisteredForMarshalling(long id); - - /// - /// Get the runtime provided IUnknown implementation. - /// - /// Function pointer to QueryInterface. - /// Function pointer to AddRef. - /// Function pointer to Release. - public static void GetIUnknownImpl(out IntPtr fpQueryInterface, out IntPtr fpAddRef, out IntPtr fpRelease) - => GetIUnknownImplInternal(out fpQueryInterface, out fpAddRef, out fpRelease); - - [LibraryImport(RuntimeHelpers.QCall, EntryPoint = "ComWrappers_GetIUnknownImpl")] - private static partial void GetIUnknownImplInternal(out IntPtr fpQueryInterface, out IntPtr fpAddRef, out IntPtr fpRelease); - - internal static int CallICustomQueryInterface(object customQueryInterfaceMaybe, ref Guid iid, out IntPtr ppObject) - { - if (customQueryInterfaceMaybe is ICustomQueryInterface customQueryInterface) - { - return (int)customQueryInterface.GetInterface(ref iid, out ppObject); - } - - ppObject = IntPtr.Zero; - return -1; // See TryInvokeICustomQueryInterfaceResult - } - } -} diff --git a/src/runtime/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/TrackerObjectManager.CoreCLR.cs b/src/runtime/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/TrackerObjectManager.CoreCLR.cs new file mode 100644 index 00000000000..ac60cd56719 --- /dev/null +++ b/src/runtime/src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/TrackerObjectManager.CoreCLR.cs @@ -0,0 +1,45 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System; +using System.Collections.Generic; +using System.Runtime.CompilerServices; +using System.Text; + +namespace System.Runtime.InteropServices +{ + internal static partial class TrackerObjectManager + { + private static bool HasReferenceTrackerManager + => HasReferenceTrackerManagerInternal(); + + [LibraryImport(RuntimeHelpers.QCall, EntryPoint = "TrackerObjectManager_HasReferenceTrackerManager")] + [SuppressGCTransition] + [return: MarshalAs(UnmanagedType.U1)] + private static partial bool HasReferenceTrackerManagerInternal(); + + [LibraryImport(RuntimeHelpers.QCall, EntryPoint = "TrackerObjectManager_TryRegisterReferenceTrackerManager")] + [SuppressGCTransition] + [return: MarshalAs(UnmanagedType.U1)] + private static partial bool TryRegisterReferenceTrackerManager(IntPtr referenceTrackerManager); + + internal static bool IsGlobalPeggingEnabled + => IsGlobalPeggingEnabledInternal(); + + [LibraryImport(RuntimeHelpers.QCall, EntryPoint = "TrackerObjectManager_IsGlobalPeggingEnabled")] + [SuppressGCTransition] + [return: MarshalAs(UnmanagedType.U1)] + private static partial bool IsGlobalPeggingEnabledInternal(); + + private static void RegisterGCCallbacks() + { + // CoreCLR doesn't have GC callbacks, but we do need to register the GC handle set with the runtime for enumeration + // during GC. + GCHandleSet handleSet = s_referenceTrackerNativeObjectWrapperCache; + RegisterNativeObjectWrapperCache(ObjectHandleOnStack.Create(ref handleSet)); + } + + [LibraryImport(RuntimeHelpers.QCall, EntryPoint = "TrackerObjectManager_RegisterNativeObjectWrapperCache")] + private static partial void RegisterNativeObjectWrapperCache(ObjectHandleOnStack nativeObjectWrapperCache); + } +} diff --git a/src/runtime/src/coreclr/classlibnative/bcltype/objectnative.cpp b/src/runtime/src/coreclr/classlibnative/bcltype/objectnative.cpp index 2a06cf22e73..c9087be0db9 100644 --- a/src/runtime/src/coreclr/classlibnative/bcltype/objectnative.cpp +++ b/src/runtime/src/coreclr/classlibnative/bcltype/objectnative.cpp @@ -45,24 +45,7 @@ FCIMPL1(INT32, ObjectNative::TryGetHashCode, Object* obj) return 0; OBJECTREF objRef = ObjectToOBJECTREF(obj); - DWORD bits = objRef->GetHeader()->GetBits(); - if (bits & BIT_SBLK_IS_HASH_OR_SYNCBLKINDEX) - { - if (bits & BIT_SBLK_IS_HASHCODE) - { - // Common case: the object already has a hash code - return bits & MASK_HASHCODE; - } - else - { - // We have a sync block index. This means if we already have a hash code, - // it is in the sync block, otherwise we will return 0, which means "not set". - SyncBlock *psb = objRef->PassiveGetSyncBlock(); - if (psb != NULL) - return psb->GetHashCode(); - } - } - return 0; + return objRef->TryGetHashCode(); } FCIMPLEND diff --git a/src/runtime/src/coreclr/debug/daccess/dacimpl.h b/src/runtime/src/coreclr/debug/daccess/dacimpl.h index f516c0eda6f..ef4a8246374 100644 --- a/src/runtime/src/coreclr/debug/daccess/dacimpl.h +++ b/src/runtime/src/coreclr/debug/daccess/dacimpl.h @@ -1504,6 +1504,7 @@ class ClrDataAccess BOOL DACIsComWrappersCCW(CLRDATA_ADDRESS ccwPtr); TADDR DACGetManagedObjectWrapperFromCCW(CLRDATA_ADDRESS ccwPtr); HRESULT DACTryGetComWrappersObjectFromCCW(CLRDATA_ADDRESS ccwPtr, OBJECTREF* objRef); + TADDR GetIdentityForManagedObjectWrapper(TADDR mow); #endif protected: diff --git a/src/runtime/src/coreclr/debug/daccess/request.cpp b/src/runtime/src/coreclr/debug/daccess/request.cpp index 1c1932f185e..465ead557bb 100644 --- a/src/runtime/src/coreclr/debug/daccess/request.cpp +++ b/src/runtime/src/coreclr/debug/daccess/request.cpp @@ -14,6 +14,7 @@ #include "typestring.h" #include #include +#include #ifdef FEATURE_COMINTEROP #include @@ -22,9 +23,6 @@ #ifdef FEATURE_COMWRAPPERS #include #include - -typedef DPTR(InteropLibInterface::ExternalObjectContextBase) PTR_ExternalObjectContext; -typedef DPTR(InteropLib::ABI::ManagedObjectWrapperLayout) PTR_ManagedObjectWrapper; #endif // FEATURE_COMWRAPPERS #ifndef TARGET_UNIX @@ -4425,6 +4423,7 @@ ErrExit: return hr; HRESULT ClrDataAccess::DACTryGetComWrappersObjectFromCCW(CLRDATA_ADDRESS ccwPtr, OBJECTREF* objRef) { HRESULT hr = E_FAIL; + MOWHOLDERREF holder = NULL; if (ccwPtr == 0 || objRef == NULL) { @@ -4439,7 +4438,9 @@ HRESULT ClrDataAccess::DACTryGetComWrappersObjectFromCCW(CLRDATA_ADDRESS ccwPtr, goto ErrExit; } - *objRef = ObjectFromHandle(handle); + holder = (MOWHOLDERREF)ObjectFromHandle(handle); + + *objRef = holder->_wrappedObject; return S_OK; @@ -5040,6 +5041,66 @@ HRESULT ClrDataAccess::GetBreakingChangeVersion(int* pVersion) return S_OK; } +#ifdef FEATURE_COMWRAPPERS +namespace +{ + typedef DPTR(InteropLib::ABI::ComInterfaceEntry) PTR_ComInterfaceEntry; + + struct TargetManagedObjectWrapper : public InteropLib::ABI::ManagedObjectWrapperLayout + { + public: + InteropLib::Com::CreateComInterfaceFlagsEx GetFlags() + { + return _flags; + } + + PTR_ComInterfaceEntry GetUserDefined(int32_t* pNumEntries) + { + return dac_cast((TADDR)_userDefined); + } + + TADDR IndexIntoDispatchSection(int32_t index) + { + return (TADDR)InteropLib::ABI::IndexIntoDispatchSection(index, _dispatches); + } + + TADDR GetRuntimeDefinedIUnknown() + { + return (TADDR)InteropLib::ABI::IndexIntoDispatchSection(_userDefinedCount, _dispatches); + } + }; + + typedef DPTR(TargetManagedObjectWrapper) PTR_ManagedObjectWrapper; +} + +TADDR ClrDataAccess::GetIdentityForManagedObjectWrapper(TADDR mow) +{ + PTR_ManagedObjectWrapper pMOW = dac_cast(mow); + // Replicate the logic for ManagedObjectWrapper.As(IID_IUnknown) + if ((pMOW->GetFlags() & InteropLib::Com::CreateComInterfaceFlagsEx::CallerDefinedIUnknown) == InteropLib::Com::CreateComInterfaceFlagsEx::None) + { + // We have the standard IUnknown implementation, so grab it from its known location. + // The index returned from IndexIntoDispatchSection is in the target address space. + return pMOW->GetRuntimeDefinedIUnknown(); + } + + // We need to find the IUnknown interface pointer in the MOW. + int32_t userDefinedCount; + PTR_ComInterfaceEntry pUserDefined = pMOW->GetUserDefined(&userDefinedCount); + for (int32_t i = 0; i < userDefinedCount; i++) + { + if (pUserDefined[i].IID == IID_IUnknown) + { + // We found the IUnknown interface pointer. + // The index returned from IndexIntoDispatchSection is in the target address space. + return pMOW->IndexIntoDispatchSection(i); + } + } + + return (TADDR)NULL; +} +#endif // FEATURE_COMWRAPPERS + HRESULT ClrDataAccess::GetObjectComWrappersData(CLRDATA_ADDRESS objAddr, CLRDATA_ADDRESS *rcw, unsigned int count, CLRDATA_ADDRESS *mowList, unsigned int *pNeeded) { #ifdef FEATURE_COMWRAPPERS @@ -5054,6 +5115,10 @@ HRESULT ClrDataAccess::GetObjectComWrappersData(CLRDATA_ADDRESS objAddr, CLRDATA } SOSDacEnter(); + + // Default to having found no information. + HRESULT hr = S_FALSE; + if (pNeeded != NULL) { *pNeeded = 0; @@ -5064,59 +5129,63 @@ HRESULT ClrDataAccess::GetObjectComWrappersData(CLRDATA_ADDRESS objAddr, CLRDATA *rcw = 0; } - PTR_SyncBlock pSyncBlk = PTR_Object(TO_TADDR(objAddr))->PassiveGetSyncBlock(); - if (pSyncBlk != NULL) + FieldDesc* pRcwTableField = (&g_CoreLib)->GetField(FIELD__COMWRAPPERS__NAITVE_OBJECT_WRAPPER_TABLE); + CONDITIONAL_WEAK_TABLE_REF rcwTable = *(DPTR(CONDITIONAL_WEAK_TABLE_REF))PTR_TO_TADDR(pRcwTableField->GetStaticAddressHandle(pRcwTableField->GetBase())); + if (rcwTable != nullptr) { - PTR_InteropSyncBlockInfo pInfo = pSyncBlk->GetInteropInfoNoCreate(); - if (pInfo != NULL) + NATIVEOBJECTWRAPPERREF pNativeObjectWrapperRef = nullptr; + if (rcwTable->TryGetValue(OBJECTREF(TO_TADDR(objAddr)), &pNativeObjectWrapperRef)) { - if (rcw != NULL) - { - *rcw = TO_TADDR(pInfo->m_externalComObjectContext); - } + // Tag this RCW as a ComWrappers RCW. + *rcw = TO_CDADDR(dac_cast(pNativeObjectWrapperRef)) | 0x1; + hr = S_OK; + } + } - DPTR(NewHolder) mapHolder(PTR_TO_MEMBER_TADDR(InteropSyncBlockInfo, pInfo, m_managedObjectComWrapperMap)); - DPTR(ManagedObjectComWrapperByIdMap *)ppMap(PTR_TO_MEMBER_TADDR(NewHolder, mapHolder, m_value)); - DPTR(ManagedObjectComWrapperByIdMap) pMap(TO_TADDR(*ppMap)); + FieldDesc* pMowTableField = (&g_CoreLib)->GetField(FIELD__COMWRAPPERS__ALL_MANAGED_OBJECT_WRAPPER_TABLE); + CONDITIONAL_WEAK_TABLE_REF mowTable = *(DPTR(CONDITIONAL_WEAK_TABLE_REF))PTR_TO_TADDR(pMowTableField->GetStaticAddressHandle(pRcwTableField->GetBase())); + if (mowTable != nullptr) + { + OBJECTREF pAllManagedObjectWrapperRef = nullptr; + if (mowTable->TryGetValue(OBJECTREF(TO_TADDR(objAddr)), &pAllManagedObjectWrapperRef)) + { + hr = S_OK; - CQuickArrayList comWrappers; - if (pMap != NULL) + // Read the list of MOWs into the provided buffer. + FieldDesc* pListItemsField = (&g_CoreLib)->GetField(FIELD__LISTGENERIC__ITEMS); + PTRARRAYREF pListItems = (PTRARRAYREF)pListItemsField->GetRefValue(pAllManagedObjectWrapperRef); + FieldDesc* pListSizeField = (&g_CoreLib)->GetField(FIELD__LISTGENERIC__SIZE); + int32_t listCount = pListSizeField->GetValue32(pAllManagedObjectWrapperRef); + if (listCount > 0 && pListItems != nullptr) { - ManagedObjectComWrapperByIdMap::Iterator iter = pMap->Begin(); - while (iter != pMap->End()) + // The list is not empty, so we can return the MOWs. + if (pNeeded != NULL) { - comWrappers.Push(TO_CDADDR(iter->Value())); - ++iter; - + *pNeeded = (unsigned int)listCount; } - } - - if (pNeeded != NULL) - { - *pNeeded = (unsigned int)comWrappers.Size(); - } - for (SIZE_T pos = 0; pos < comWrappers.Size(); ++pos) - { - if (pos >= count) + if (count < (unsigned int)listCount) { + // Return S_FALSE if the buffer is too small. hr = S_FALSE; - break; } - mowList[pos] = comWrappers[pos]; + for (unsigned int i = 0; i < count; i++) + { + MOWHOLDERREF pMOWRef = (MOWHOLDERREF)pListItems->GetAt(i); + PTR_ManagedObjectWrapper pMOW = PTR_ManagedObjectWrapper(dac_cast(pMOWRef->ManagedObjectWrapper)); + + // Now that we have the managed object wrapper, we need to figure out the COM identity of it. + TADDR pComIdentity = GetIdentityForManagedObjectWrapper(dac_cast(pMOW)); + + mowList[i] = TO_CDADDR(pComIdentity); + } } } - else - { - hr = S_FALSE; - } - } - else - { - hr = S_FALSE; } + hr = S_FALSE; + SOSDacLeave(); return hr; #else // FEATURE_COMWRAPPERS @@ -5178,7 +5247,7 @@ HRESULT ClrDataAccess::GetComWrappersCCWData(CLRDATA_ADDRESS ccw, CLRDATA_ADDRES if (refCount != NULL) { - *refCount = (int)pMOW->RefCount; + *refCount = (int)pMOW->GetRawRefCount(); } } else @@ -5194,52 +5263,58 @@ HRESULT ClrDataAccess::GetComWrappersCCWData(CLRDATA_ADDRESS ccw, CLRDATA_ADDRES #endif // FEATURE_COMWRAPPERS } -HRESULT ClrDataAccess::IsComWrappersRCW(CLRDATA_ADDRESS rcw, BOOL *isComWrappersRCW) -{ #ifdef FEATURE_COMWRAPPERS - if (rcw == 0) - { - return E_INVALIDARG; - } - - SOSDacEnter(); - - if (isComWrappersRCW != NULL) +namespace +{ + BOOL IsComWrappersRCW(CLRDATA_ADDRESS rcw) { - PTR_ExternalObjectContext pRCW(TO_TADDR(rcw)); - BOOL stillValid = TRUE; - if(pRCW->SyncBlockIndex >= SyncBlockCache::s_pSyncBlockCache->m_SyncTableSize) + if ((rcw & 1) == 0) { - stillValid = FALSE; + // We use the low bit of the RCW address to indicate that it is a ComWrappers RCW. + return FALSE; } - PTR_SyncBlock pSyncBlk = NULL; - if (stillValid) + OBJECTREF nativeObjectWrapper = OBJECTREF(TO_TADDR(rcw & ~1)); + if (nativeObjectWrapper == NULL) { - PTR_SyncTableEntry ste = PTR_SyncTableEntry(dac_cast(g_pSyncTable) + (sizeof(SyncTableEntry) * pRCW->SyncBlockIndex)); - pSyncBlk = ste->m_SyncBlock; - if(pSyncBlk == NULL) - { - stillValid = FALSE; - } + return FALSE; } - PTR_InteropSyncBlockInfo pInfo = NULL; - if (stillValid) + if (nativeObjectWrapper->GetMethodTable() != (&g_CoreLib)->GetClass(CLASS__NATIVE_OBJECT_WRAPPER)) { - pInfo = pSyncBlk->GetInteropInfoNoCreate(); - if(pInfo == NULL) - { - stillValid = FALSE; - } + return FALSE; } - if (stillValid) + return TRUE; + } + + TADDR GetComWrappersRCWIdentity(CLRDATA_ADDRESS rcw) + { + if ((rcw & 1) == 0) { - stillValid = TO_TADDR(pInfo->m_externalComObjectContext) == PTR_HOST_TO_TADDR(pRCW); + // We use the low bit of the RCW address to indicate that it is a ComWrappers RCW. + return (TADDR)NULL; } - *isComWrappersRCW = stillValid; + NATIVEOBJECTWRAPPERREF pNativeObjectWrapper = NATIVEOBJECTWRAPPERREF(TO_TADDR(rcw & ~1)); + return pNativeObjectWrapper->GetExternalComObject(); + } +} +#endif + +HRESULT ClrDataAccess::IsComWrappersRCW(CLRDATA_ADDRESS rcw, BOOL *isComWrappersRCW) +{ +#ifdef FEATURE_COMWRAPPERS + if (rcw == 0) + { + return E_INVALIDARG; + } + + SOSDacEnter(); + + if (isComWrappersRCW != NULL) + { + *isComWrappersRCW = ::IsComWrappersRCW(rcw); hr = *isComWrappersRCW ? S_OK : S_FALSE; } @@ -5260,10 +5335,9 @@ HRESULT ClrDataAccess::GetComWrappersRCWData(CLRDATA_ADDRESS rcw, CLRDATA_ADDRES SOSDacEnter(); - PTR_ExternalObjectContext pEOC(TO_TADDR(rcw)); if (identity != NULL) { - *identity = PTR_CDADDR(pEOC->Identity); + *identity = TO_CDADDR(GetComWrappersRCWIdentity(rcw)); } SOSDacLeave(); diff --git a/src/runtime/src/coreclr/debug/ee/dactable.cpp b/src/runtime/src/coreclr/debug/ee/dactable.cpp index 6dac100ffb3..80d1995acf8 100644 --- a/src/runtime/src/coreclr/debug/ee/dactable.cpp +++ b/src/runtime/src/coreclr/debug/ee/dactable.cpp @@ -31,16 +31,19 @@ extern "C" void STDCALL ThePreStubPatchLabel(void); #ifdef FEATURE_COMWRAPPERS // Keep these forward declarations in sync with the method definitions in interop/comwrappers.cpp -namespace ABI +namespace InteropLib { - struct ComInterfaceDispatch; + namespace ABI + { + struct ComInterfaceDispatch; + } } HRESULT STDMETHODCALLTYPE ManagedObjectWrapper_QueryInterface( - _In_ ABI::ComInterfaceDispatch* disp, + _In_ InteropLib::ABI::ComInterfaceDispatch* disp, /* [in] */ REFIID riid, /* [iid_is][out] */ _COM_Outptr_ void __RPC_FAR* __RPC_FAR* ppvObject); HRESULT STDMETHODCALLTYPE TrackerTarget_QueryInterface( - _In_ ABI::ComInterfaceDispatch* disp, + _In_ InteropLib::ABI::ComInterfaceDispatch* disp, /* [in] */ REFIID riid, /* [iid_is][out] */ _COM_Outptr_ void __RPC_FAR* __RPC_FAR* ppvObject); diff --git a/src/runtime/src/coreclr/inc/jiteeversionguid.h b/src/runtime/src/coreclr/inc/jiteeversionguid.h index db3480acadc..cd481e46fed 100644 --- a/src/runtime/src/coreclr/inc/jiteeversionguid.h +++ b/src/runtime/src/coreclr/inc/jiteeversionguid.h @@ -37,11 +37,11 @@ #include -constexpr GUID JITEEVersionIdentifier = { /* 63dcb8b8-1f9d-43d8-bb09-bf5d8bf85ad4 */ - 0x63dcb8b8, - 0x1f9d, - 0x43d8, - {0xbb, 0x09, 0xbf, 0x5d, 0x8b, 0xf8, 0x5a, 0xd4} +constexpr GUID JITEEVersionIdentifier = { /* 26d0dde8-bc9d-4543-9b9a-57ad8b1acdc0 */ + 0x26d0dde8, + 0xbc9d, + 0x4543, + {0x9b, 0x9a, 0x57, 0xad, 0x8b, 0x1a, 0xcd, 0xc0} }; #endif // JIT_EE_VERSIONING_GUID_H diff --git a/src/runtime/src/coreclr/interop/comwrappers.cpp b/src/runtime/src/coreclr/interop/comwrappers.cpp index 58b83368f7b..05fb629cf22 100644 --- a/src/runtime/src/coreclr/interop/comwrappers.cpp +++ b/src/runtime/src/coreclr/interop/comwrappers.cpp @@ -11,7 +11,6 @@ #endif // _WIN32 using OBJECTHANDLE = InteropLib::OBJECTHANDLE; -using AllocScenario = InteropLibImports::AllocScenario; using TryInvokeICustomQueryInterfaceResult = InteropLibImports::TryInvokeICustomQueryInterfaceResult; namespace ABI @@ -44,133 +43,11 @@ namespace ABI // See the dispatch section building API below for an example of how indexing works. //-------------------------------------------------------------------------------- - struct ComInterfaceDispatch - { - const void* vtable; - }; - ABI_ASSERT(sizeof(ComInterfaceDispatch) == sizeof(void*)); - + using InteropLib::ABI::ComInterfaceDispatch; + using InteropLib::ABI::ComInterfaceEntry; using InteropLib::ABI::DispatchAlignmentThisPtr; using InteropLib::ABI::DispatchThisPtrMask; - ABI_ASSERT(sizeof(void*) < DispatchAlignmentThisPtr); - - const intptr_t AlignmentThisPtrMaxPadding = DispatchAlignmentThisPtr - sizeof(void*); - const size_t EntriesPerThisPtr = (DispatchAlignmentThisPtr / sizeof(void*)) - 1; - - // Check if the instance can dispatch according to the ABI. - bool IsAbleToDispatch(_In_ ComInterfaceDispatch* disp) - { - return (reinterpret_cast(disp) & DispatchThisPtrMask) != 0; - } - - // Given the number of dispatch entries, compute the needed number of 'this' pointer entries. - constexpr size_t ComputeThisPtrForDispatchSection(_In_ size_t dispatchCount) - { - return (dispatchCount / ABI::EntriesPerThisPtr) + ((dispatchCount % ABI::EntriesPerThisPtr) == 0 ? 0 : 1); - } - - // Given a pointer and a padding allowance, attempt to find an offset into - // the memory that is properly aligned for the dispatch section. - char* AlignDispatchSection(_In_ char* section, _In_ intptr_t extraPadding) - { - _ASSERTE(section != nullptr); - - // If the dispatch section is not properly aligned by default, we - // utilize the padding to make sure the dispatch section is aligned. - while ((reinterpret_cast(section) % ABI::DispatchAlignmentThisPtr) != 0) - { - // Check if there is padding to attempt an alignment. - if (extraPadding <= 0) - return nullptr; - - extraPadding -= sizeof(void*); - -#ifdef _DEBUG - // Poison unused portions of the section. - ::memset(section, 0xff, sizeof(void*)); -#endif - - section += sizeof(void*); - } - - return section; - } - - struct ComInterfaceEntry - { - GUID IID; - const void* Vtable; - }; - - struct EntrySet - { - const ComInterfaceEntry* start; - int32_t count; - }; - - // Populate the dispatch section with the entry sets - ComInterfaceDispatch* PopulateDispatchSection( - _In_ void* thisPtr, - _In_ void* dispatchSection, - _In_ size_t entrySetCount, - _In_ const EntrySet* entrySets) - { - // Define dispatch section iterator. - const void** currDisp = reinterpret_cast(dispatchSection); - - // Keep rolling count of dispatch entries. - int32_t dispCount = 0; - - // Iterate over all interface entry sets. - const EntrySet* curr = entrySets; - const EntrySet* end = entrySets + entrySetCount; - for (; curr != end; ++curr) - { - const ComInterfaceEntry* currEntry = curr->start; - int32_t entryCount = curr->count; - - // Update dispatch section with 'this' pointer and vtables. - for (int32_t i = 0; i < entryCount; ++i, ++dispCount, ++currEntry) - { - // Insert the 'this' pointer at the appropriate locations - // e.g.: - // 32-bit | 64-bit - // (0 * 4) % 16 = 0 | (0 * 8) % 64 = 0 - // (1 * 4) % 16 = 4 | (1 * 8) % 64 = 8 - // (2 * 4) % 16 = 8 | (2 * 8) % 64 = 16 - // (3 * 4) % 16 = 12 | ... - // (4 * 4) % 16 = 0 | (7 * 8) % 64 = 56 - // (5 * 4) % 16 = 4 | (8 * 8) % 64 = 0 - // - if (((dispCount * sizeof(void*)) % ABI::DispatchAlignmentThisPtr) == 0) - { - *currDisp++ = thisPtr; - ++dispCount; - } - - // Fill in the dispatch entry - *currDisp++ = currEntry->Vtable; - } - } - - return reinterpret_cast(dispatchSection); - } - - // Given the entry index, compute the dispatch index. - ComInterfaceDispatch* IndexIntoDispatchSection(_In_ int32_t i, _In_ ComInterfaceDispatch* dispatches) - { - // Convert the supplied zero based index into what it represents as a count. - const size_t count = static_cast(i) + 1; - - // Based on the supplied count, compute how many previous 'this' pointers would be - // required in the dispatch section and add that to the supplied index to get the - // index into the dispatch section. - const size_t idx = ComputeThisPtrForDispatchSection(count) + i; - - ComInterfaceDispatch* disp = dispatches + idx; - _ASSERTE(IsAbleToDispatch(disp)); - return disp; - } + using InteropLib::ABI::IndexIntoDispatchSection; // Given a dispatcher instance, return the associated ManagedObjectWrapper. ManagedObjectWrapper* ToManagedObjectWrapper(_In_ ComInterfaceDispatch* disp) @@ -242,7 +119,7 @@ HRESULT STDMETHODCALLTYPE TrackerTarget_QueryInterface( // 1. Marked to Destroy - in this case it is unsafe to touch wrapper. // 2. Object Handle target has been NULLed out by GC. if (wrapper->IsMarkedToDestroy() - || !InteropLibImports::HasValidTarget(wrapper->Target)) + || !InteropLibImports::HasValidTarget(wrapper->GetTarget())) { // It is unsafe to proceed with a QueryInterface call. The MOW has been // marked destroyed or the associated managed object has been collected. @@ -338,6 +215,11 @@ namespace static_assert(sizeof(ManagedObjectWrapper_IReferenceTrackerTargetImpl) == (7 * sizeof(void*)), "Unexpected vtable size"); } +void const* ManagedObjectWrapper::GetIReferenceTrackerTargetImpl() noexcept +{ + return &ManagedObjectWrapper_IReferenceTrackerTargetImpl; +} + namespace { // This IID represents an internal interface we define to tag any ManagedObjectWrappers we create. @@ -355,22 +237,6 @@ namespace { return (version == (void*)&ITaggedImpl_IsCurrentVersion) ? S_OK : E_FAIL; } - - // Hard-coded ManagedObjectWrapper tagged vtable. - const struct - { - decltype(&ManagedObjectWrapper_QueryInterface) QueryInterface; - decltype(&ManagedObjectWrapper_AddRef) AddRef; - decltype(&ManagedObjectWrapper_Release) Release; - decltype(&ITaggedImpl_IsCurrentVersion) IsCurrentVersion; - } ManagedObjectWrapper_TaggedImpl { - &ManagedObjectWrapper_QueryInterface, - &ManagedObjectWrapper_AddRef, - &ManagedObjectWrapper_Release, - &ITaggedImpl_IsCurrentVersion, - }; - - static_assert(sizeof(ManagedObjectWrapper_TaggedImpl) == (4 * sizeof(void*)), "Unexpected vtable size"); } void ManagedObjectWrapper::GetIUnknownImpl( @@ -387,6 +253,11 @@ void ManagedObjectWrapper::GetIUnknownImpl( *fpRelease = (void*)ManagedObjectWrapper_IUnknownImpl.Release; } +void const* ManagedObjectWrapper::GetTaggedCurrentVersionImpl() noexcept +{ + return reinterpret_cast(&ITaggedImpl_IsCurrentVersion); +} + // The logic here should match code:ClrDataAccess::DACTryGetComWrappersObjectFromCCW in daccess/request.cpp ManagedObjectWrapper* ManagedObjectWrapper::MapFromIUnknown(_In_ IUnknown* pUnk) { @@ -428,166 +299,35 @@ ManagedObjectWrapper* ManagedObjectWrapper::MapFromIUnknownWithQueryInterface(_I return ABI::ToManagedObjectWrapper(disp); } -HRESULT ManagedObjectWrapper::Create( - _In_ InteropLib::Com::CreateComInterfaceFlags flagsRaw, - _In_ OBJECTHANDLE objectHandle, - _In_ int32_t userDefinedCount, - _In_ ABI::ComInterfaceEntry* userDefined, - _Outptr_ ManagedObjectWrapper** mow) +void* ManagedObjectWrapper::AsRuntimeDefined(_In_ REFIID riid) { - _ASSERTE(objectHandle != nullptr && mow != nullptr); - - auto flags = static_cast(flagsRaw); - _ASSERTE((flags & CreateComInterfaceFlagsEx::InternalMask) == CreateComInterfaceFlagsEx::None); - - // Maximum number of runtime supplied vtables. - ABI::ComInterfaceEntry runtimeDefinedLocal[3]; - int32_t runtimeDefinedCount = 0; + // The order of interface lookup here is important. + // See ComWrappers.CreateManagedObjectWrapper() for the expected order. + int i = _userDefinedCount; - // Check if the caller will provide the IUnknown table. - if ((flags & CreateComInterfaceFlagsEx::CallerDefinedIUnknown) == CreateComInterfaceFlagsEx::None) + if ((_flags & CreateComInterfaceFlagsEx::CallerDefinedIUnknown) == CreateComInterfaceFlagsEx::None) { - ABI::ComInterfaceEntry& curr = runtimeDefinedLocal[runtimeDefinedCount++]; - curr.IID = __uuidof(IUnknown); - curr.Vtable = &ManagedObjectWrapper_IUnknownImpl; - } - - // Check if the caller wants tracker support. - if ((flags & CreateComInterfaceFlagsEx::TrackerSupport) == CreateComInterfaceFlagsEx::TrackerSupport) - { - ABI::ComInterfaceEntry& curr = runtimeDefinedLocal[runtimeDefinedCount++]; - curr.IID = IID_IReferenceTrackerTarget; - curr.Vtable = &ManagedObjectWrapper_IReferenceTrackerTargetImpl; - } - - // Always add the tagged interface. This is used to confirm at run-time with certainty - // the wrapper is created by the ComWrappers API. - { - ABI::ComInterfaceEntry& curr = runtimeDefinedLocal[runtimeDefinedCount++]; - curr.IID = IID_TaggedImpl; - curr.Vtable = &ManagedObjectWrapper_TaggedImpl; - } - - _ASSERTE(runtimeDefinedCount <= static_cast(ARRAY_SIZE(runtimeDefinedLocal))); - - // Compute size for ManagedObjectWrapper instance. - const size_t totalRuntimeDefinedSize = runtimeDefinedCount * sizeof(ABI::ComInterfaceEntry); - const size_t totalDefinedCount = static_cast(runtimeDefinedCount) + userDefinedCount; - - // Compute the total entry size of dispatch section. - const size_t totalDispatchSectionCount = ABI::ComputeThisPtrForDispatchSection(totalDefinedCount) + totalDefinedCount; - const size_t totalDispatchSectionSize = totalDispatchSectionCount * sizeof(void*); - - // Allocate memory for the ManagedObjectWrapper. - char* wrapperMem = (char*)InteropLibImports::MemAlloc(sizeof(ManagedObjectWrapper) + totalRuntimeDefinedSize + totalDispatchSectionSize + ABI::AlignmentThisPtrMaxPadding, AllocScenario::ManagedObjectWrapper); - if (wrapperMem == nullptr) - return E_OUTOFMEMORY; - - // Compute Runtime defined offset. - char* runtimeDefinedOffset = wrapperMem + sizeof(ManagedObjectWrapper); + if (riid == IID_IUnknown) + { + return ABI::IndexIntoDispatchSection(i, _dispatches); + } - // Copy in runtime supplied COM interface entries. - ABI::ComInterfaceEntry* runtimeDefined = nullptr; - if (0 < runtimeDefinedCount) - { - ::memcpy(runtimeDefinedOffset, runtimeDefinedLocal, totalRuntimeDefinedSize); - runtimeDefined = reinterpret_cast(runtimeDefinedOffset); + ++i; } - // Compute the dispatch section offset and ensure it is aligned. - char* dispatchSectionOffset = runtimeDefinedOffset + totalRuntimeDefinedSize; - dispatchSectionOffset = ABI::AlignDispatchSection(dispatchSectionOffset, ABI::AlignmentThisPtrMaxPadding); - if (dispatchSectionOffset == nullptr) - return E_UNEXPECTED; - - // Define the sets for the tables to insert - const ABI::EntrySet AllEntries[] = + if ((_flags & CreateComInterfaceFlagsEx::TrackerSupport) == CreateComInterfaceFlagsEx::TrackerSupport) { - { runtimeDefined, runtimeDefinedCount }, - { userDefined, userDefinedCount } - }; - - ABI::ComInterfaceDispatch* dispSection = ABI::PopulateDispatchSection(wrapperMem, dispatchSectionOffset, ARRAY_SIZE(AllEntries), AllEntries); - - ManagedObjectWrapper* wrapper = new (wrapperMem) ManagedObjectWrapper + if (riid == IID_IReferenceTrackerTarget) { - flags, - objectHandle, - runtimeDefinedCount, - runtimeDefined, - userDefinedCount, - userDefined, - dispSection - }; - - *mow = wrapper; - return S_OK; -} - -void ManagedObjectWrapper::Destroy(_In_ ManagedObjectWrapper* wrapper) -{ - _ASSERTE(wrapper != nullptr); - _ASSERTE(GetComCount(wrapper->_refCount) == 0); + return ABI::IndexIntoDispatchSection(i, _dispatches); + } - // Attempt to set the destroyed bit. - LONGLONG refCount; - LONGLONG prev; - do - { - prev = wrapper->_refCount; - refCount = prev | DestroySentinel; - } while (InterlockedCompareExchange64(&wrapper->_refCount, refCount, prev) != prev); - - // The destroy sentinel represents the bit that indicates the wrapper - // should be destroyed. Since the reference count field (64-bit) holds - // two counters we rely on the singular sentinel value - no other bits - // in the 64-bit counter are set. If there are outstanding bits set it - // indicates there are still outstanding references. - if (refCount == DestroySentinel) - { - // Manually trigger the destructor since placement - // new was used to allocate the object. - wrapper->~ManagedObjectWrapper(); - InteropLibImports::MemFree(wrapper, AllocScenario::ManagedObjectWrapper); + ++i; } -} - -ManagedObjectWrapper::ManagedObjectWrapper( - _In_ CreateComInterfaceFlagsEx flags, - _In_ OBJECTHANDLE objectHandle, - _In_ int32_t runtimeDefinedCount, - _In_ const ABI::ComInterfaceEntry* runtimeDefined, - _In_ int32_t userDefinedCount, - _In_ const ABI::ComInterfaceEntry* userDefined, - _In_ ABI::ComInterfaceDispatch* dispatches) - : Target{ nullptr } - , _refCount{ 1 } - , _runtimeDefinedCount{ runtimeDefinedCount } - , _userDefinedCount{ userDefinedCount } - , _runtimeDefined{ runtimeDefined } - , _userDefined{ userDefined } - , _dispatches{ dispatches } - , _flags{ flags } -{ - bool wasSet = TrySetObjectHandle(objectHandle); - _ASSERTE(wasSet); -} - -ManagedObjectWrapper::~ManagedObjectWrapper() -{ - // If the target isn't null, then release it. - if (Target != nullptr) - InteropLibImports::DeleteObjectInstanceHandle(Target); -} -void* ManagedObjectWrapper::AsRuntimeDefined(_In_ REFIID riid) -{ - for (int32_t i = 0; i < _runtimeDefinedCount; ++i) + if (riid == IID_TaggedImpl) { - if (IsEqualGUID(_runtimeDefined[i].IID, riid)) - { - return ABI::IndexIntoDispatchSection(i, _dispatches); - } + return ABI::IndexIntoDispatchSection(i, _dispatches); } return nullptr; @@ -599,7 +339,7 @@ void* ManagedObjectWrapper::AsUserDefined(_In_ REFIID riid) { if (IsEqualGUID(_userDefined[i].IID, riid)) { - return ABI::IndexIntoDispatchSection(i + _runtimeDefinedCount, _dispatches); + return ABI::IndexIntoDispatchSection(i, _dispatches); } } @@ -616,11 +356,6 @@ void* ManagedObjectWrapper::As(_In_ REFIID riid) return typeMaybe; } -bool ManagedObjectWrapper::TrySetObjectHandle(_In_ OBJECTHANDLE objectHandle, _In_ OBJECTHANDLE current) -{ - return (InterlockedCompareExchangePointer(&Target, objectHandle, current) == current); -} - bool ManagedObjectWrapper::IsSet(_In_ CreateComInterfaceFlagsEx flag) const { return (_flags & flag) != CreateComInterfaceFlagsEx::None; @@ -689,7 +424,13 @@ ULONG ManagedObjectWrapper::ReleaseFromReferenceTracker() // If we observe the destroy sentinel, then this release // must destroy the wrapper. if (refCount == DestroySentinel) - Destroy(this); + { + InteropLib::OBJECTHANDLE handle = InterlockedExchangePointer(&_target, nullptr); + if (handle != nullptr) + { + InteropLibImports::DestroyHandle(handle); + } + } return GetTrackerCount(refCount); } @@ -720,7 +461,7 @@ HRESULT ManagedObjectWrapper::QueryInterface( // Check if the managed object has implemented ICustomQueryInterface if (!IsSet(CreateComInterfaceFlagsEx::LacksICustomQueryInterface)) { - TryInvokeICustomQueryInterfaceResult result = InteropLibImports::TryInvokeICustomQueryInterface(Target, riid, ppvObject); + TryInvokeICustomQueryInterfaceResult result = InteropLibImports::TryInvokeICustomQueryInterface(GetTarget(), riid, ppvObject); switch (result) { case TryInvokeICustomQueryInterfaceResult::Handled: @@ -782,166 +523,7 @@ ULONG ManagedObjectWrapper::Release(void) return GetComCount(::InterlockedDecrement64(&_refCount)); } -namespace -{ - const size_t LiveContextSentinel = 0x0a110ced; - const size_t DeadContextSentinel = 0xdeaddead; -} - -NativeObjectWrapperContext* NativeObjectWrapperContext::MapFromRuntimeContext(_In_ void* cxtMaybe) -{ - _ASSERTE(cxtMaybe != nullptr); - - // Convert the supplied context - char* cxtRaw = reinterpret_cast(cxtMaybe); - cxtRaw -= sizeof(NativeObjectWrapperContext); - NativeObjectWrapperContext* cxt = reinterpret_cast(cxtRaw); - -#ifdef _DEBUG - _ASSERTE(cxt->_sentinel == LiveContextSentinel); -#endif - - return cxt; -} - -HRESULT NativeObjectWrapperContext::Create( - _In_ IUnknown* external, - _In_opt_ IUnknown* inner, - _In_ InteropLib::Com::CreateObjectFlags flags, - _In_ size_t runtimeContextSize, - _Outptr_ NativeObjectWrapperContext** context) +InteropLib::OBJECTHANDLE ManagedObjectWrapper::GetTarget() const { - _ASSERTE(external != nullptr && context != nullptr); - - HRESULT hr; - - ComHolder trackerObject; - if (flags & InteropLib::Com::CreateObjectFlags_TrackerObject) - { - hr = external->QueryInterface(IID_IReferenceTracker, (void**)&trackerObject); - if (SUCCEEDED(hr)) - RETURN_IF_FAILED(TrackerObjectManager::OnIReferenceTrackerFound(trackerObject)); - } - - // Allocate memory for the RCW - char* cxtMem = (char*)InteropLibImports::MemAlloc(sizeof(NativeObjectWrapperContext) + runtimeContextSize, AllocScenario::NativeObjectWrapper); - if (cxtMem == nullptr) - return E_OUTOFMEMORY; - - void* runtimeContext = cxtMem + sizeof(NativeObjectWrapperContext); - - // Contract specifically requires zeroing out runtime context. - ::memset(runtimeContext, 0, runtimeContextSize); - - NativeObjectWrapperContext* contextLocal = new (cxtMem) NativeObjectWrapperContext{ runtimeContext, trackerObject, inner }; - - if (trackerObject != nullptr) - { - // Inform the tracker object manager - _ASSERTE(flags & InteropLib::Com::CreateObjectFlags_TrackerObject); - hr = TrackerObjectManager::AfterWrapperCreated(trackerObject); - if (FAILED(hr)) - { - Destroy(contextLocal); - return hr; - } - - // Aggregation with a tracker object must be "cleaned up". - if (flags & InteropLib::Com::CreateObjectFlags_Aggregated) - { - _ASSERTE(inner != nullptr); - contextLocal->HandleReferenceTrackerAggregation(); - } - } - - *context = contextLocal; - return S_OK; -} - -void NativeObjectWrapperContext::Destroy(_In_ NativeObjectWrapperContext* wrapper) -{ - _ASSERTE(wrapper != nullptr); - - // Manually trigger the destructor since placement - // new was used to allocate the object. - wrapper->~NativeObjectWrapperContext(); - InteropLibImports::MemFree(wrapper, AllocScenario::NativeObjectWrapper); -} - -NativeObjectWrapperContext::NativeObjectWrapperContext( - _In_ void* runtimeContext, - _In_opt_ IReferenceTracker* trackerObject, - _In_opt_ IUnknown* nativeObjectAsInner) - : _trackerObject{ trackerObject } - , _runtimeContext{ runtimeContext } - , _trackerObjectDisconnected{ FALSE } - , _trackerObjectState{ (trackerObject == nullptr ? TrackerObjectState::NotSet : TrackerObjectState::SetForRelease) } - , _nativeObjectAsInner{ nativeObjectAsInner } -#ifdef _DEBUG - , _sentinel{ LiveContextSentinel } -#endif -{ - if (_trackerObjectState == TrackerObjectState::SetForRelease) - (void)_trackerObject->AddRef(); -} - -NativeObjectWrapperContext::~NativeObjectWrapperContext() -{ - DisconnectTracker(); - - // If the inner was supplied, we need to release our reference. - if (_nativeObjectAsInner != nullptr) - (void)_nativeObjectAsInner->Release(); - -#ifdef _DEBUG - _sentinel = DeadContextSentinel; -#endif -} - -void* NativeObjectWrapperContext::GetRuntimeContext() const noexcept -{ - return _runtimeContext; -} - -IReferenceTracker* NativeObjectWrapperContext::GetReferenceTracker() const noexcept -{ - return ((_trackerObjectState == TrackerObjectState::NotSet || _trackerObjectDisconnected) ? nullptr : _trackerObject); -} - -// See TrackerObjectManager::AfterWrapperCreated() for AddRefFromTrackerSource() usage. -// See NativeObjectWrapperContext::HandleReferenceTrackerAggregation() for additional -// cleanup logistics. -void NativeObjectWrapperContext::DisconnectTracker() noexcept -{ - // Return if already disconnected or the tracker isn't set. - if (FALSE != ::InterlockedCompareExchange((LONG*)&_trackerObjectDisconnected, TRUE, FALSE) - || _trackerObjectState == TrackerObjectState::NotSet) - { - return; - } - - _ASSERTE(_trackerObject != nullptr); - - // Always release the tracker source during a disconnect. - // This to account for the implied IUnknown ownership by the runtime. - (void)_trackerObject->ReleaseFromTrackerSource(); // IUnknown - - // Disconnect from the tracker. - if (_trackerObjectState == TrackerObjectState::SetForRelease) - { - (void)_trackerObject->ReleaseFromTrackerSource(); // IReferenceTracker - (void)_trackerObject->Release(); - } -} - -void NativeObjectWrapperContext::HandleReferenceTrackerAggregation() noexcept -{ - _ASSERTE(_trackerObjectState == TrackerObjectState::SetForRelease && _trackerObject != nullptr); - - // Aggregation with an IReferenceTracker instance creates an extra AddRef() - // on the outer (e.g. MOW) so we clean up that issue here. - _trackerObjectState = TrackerObjectState::SetNoRelease; - - (void)_trackerObject->ReleaseFromTrackerSource(); // IReferenceTracker - (void)_trackerObject->Release(); + return _target; } diff --git a/src/runtime/src/coreclr/interop/comwrappers.hpp b/src/runtime/src/coreclr/interop/comwrappers.hpp index 47bf008ac50..00ebfc39194 100644 --- a/src/runtime/src/coreclr/interop/comwrappers.hpp +++ b/src/runtime/src/coreclr/interop/comwrappers.hpp @@ -9,62 +9,14 @@ #include #include "referencetrackertypes.hpp" -#ifndef DEFINE_ENUM_FLAG_OPERATORS -#define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) \ -extern "C++" { \ - inline ENUMTYPE operator | (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((int)a)|((int)b)); } \ - inline ENUMTYPE operator |= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((int &)a) |= ((int)b)); } \ - inline ENUMTYPE operator & (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((int)a)&((int)b)); } \ - inline ENUMTYPE operator &= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((int &)a) &= ((int)b)); } \ - inline ENUMTYPE operator ~ (ENUMTYPE a) { return (ENUMTYPE)(~((int)a)); } \ - inline ENUMTYPE operator ^ (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((int)a)^((int)b)); } \ - inline ENUMTYPE operator ^= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((int &)a) ^= ((int)b)); } \ -} -#endif - -enum class CreateComInterfaceFlagsEx : int32_t -{ - None = InteropLib::Com::CreateComInterfaceFlags_None, - CallerDefinedIUnknown = InteropLib::Com::CreateComInterfaceFlags_CallerDefinedIUnknown, - TrackerSupport = InteropLib::Com::CreateComInterfaceFlags_TrackerSupport, - - // Highest bits are reserved for internal usage - LacksICustomQueryInterface = 1 << 29, - IsComActivated = 1 << 30, - IsPegged = 1 << 31, - - InternalMask = IsPegged | IsComActivated | LacksICustomQueryInterface, -}; - -DEFINE_ENUM_FLAG_OPERATORS(CreateComInterfaceFlagsEx); - -// Forward declarations -namespace ABI -{ - struct ComInterfaceDispatch; - struct ComInterfaceEntry; -} +using InteropLib::Com::CreateComInterfaceFlagsEx; static constexpr size_t ManagedObjectWrapperRefCountOffset(); +static constexpr size_t ManagedObjectWrapperFlagsOffset(); // Class for wrapping a managed object and projecting it in a non-managed environment -class ManagedObjectWrapper +class ManagedObjectWrapper final : public InteropLib::ABI::ManagedObjectWrapperLayout { - friend constexpr size_t ManagedObjectWrapperRefCountOffset(); -public: - Volatile Target; - -private: - LONGLONG _refCount; - - const int32_t _runtimeDefinedCount; - const int32_t _userDefinedCount; - const ABI::ComInterfaceEntry* _runtimeDefined; - const ABI::ComInterfaceEntry* _userDefined; - ABI::ComInterfaceDispatch* _dispatches; - - Volatile _flags; - public: // static // Get the implementation for IUnknown. static void GetIUnknownImpl( @@ -72,6 +24,10 @@ class ManagedObjectWrapper _Out_ void** fpAddRef, _Out_ void** fpRelease); + static void const* GetIReferenceTrackerTargetImpl() noexcept; + + static void const* GetTaggedCurrentVersionImpl() noexcept; + // Convert the IUnknown if the instance is a ManagedObjectWrapper // into a ManagedObjectWrapper, otherwise null. static ManagedObjectWrapper* MapFromIUnknown(_In_ IUnknown* pUnk); @@ -82,42 +38,17 @@ class ManagedObjectWrapper // performing a QueryInterface() which may not always be possible. // See implementation for more details. static ManagedObjectWrapper* MapFromIUnknownWithQueryInterface(_In_ IUnknown* pUnk); - - // Create a ManagedObjectWrapper instance - static HRESULT Create( - _In_ InteropLib::Com::CreateComInterfaceFlags flags, - _In_ InteropLib::OBJECTHANDLE objectHandle, - _In_ int32_t userDefinedCount, - _In_ ABI::ComInterfaceEntry* userDefined, - _Outptr_ ManagedObjectWrapper** mow); - - // Destroy the instance - static void Destroy(_In_ ManagedObjectWrapper* wrapper); - private: - ManagedObjectWrapper( - _In_ CreateComInterfaceFlagsEx flags, - _In_ InteropLib::OBJECTHANDLE objectHandle, - _In_ int32_t runtimeDefinedCount, - _In_ const ABI::ComInterfaceEntry* runtimeDefined, - _In_ int32_t userDefinedCount, - _In_ const ABI::ComInterfaceEntry* userDefined, - _In_ ABI::ComInterfaceDispatch* dispatches); - - ~ManagedObjectWrapper(); - // Query the runtime defined tables. void* AsRuntimeDefined(_In_ REFIID riid); // Query the user defined tables. void* AsUserDefined(_In_ REFIID riid); - public: // N.B. Does not impact the reference count of the object. void* As(_In_ REFIID riid); // Attempt to set the target object handle based on an assumed current value. - bool TrySetObjectHandle(_In_ InteropLib::OBJECTHANDLE objectHandle, _In_ InteropLib::OBJECTHANDLE current = nullptr); bool IsSet(_In_ CreateComInterfaceFlagsEx flag) const; void SetFlag(_In_ CreateComInterfaceFlagsEx flag); void ResetFlag(_In_ CreateComInterfaceFlagsEx flag); @@ -128,6 +59,8 @@ class ManagedObjectWrapper // Check if the wrapper has been marked to be destroyed. bool IsMarkedToDestroy() const; + InteropLib::OBJECTHANDLE GetTarget() const; + public: // IReferenceTrackerTarget ULONG AddRefFromReferenceTracker(); ULONG ReleaseFromReferenceTracker(); @@ -142,82 +75,13 @@ class ManagedObjectWrapper ULONG Release(void); }; -// ABI contract. This below offset is assumed in managed code and the DAC. -ABI_ASSERT(offsetof(ManagedObjectWrapper, Target) == 0); - -static constexpr size_t ManagedObjectWrapperRefCountOffset() -{ - // _refCount is a private field and offsetof won't let you look at private fields. - // To overcome, this function is a friend function of ManagedObjectWrapper. - return offsetof(ManagedObjectWrapper, _refCount); -} - -// ABI contract used by the DAC. -ABI_ASSERT(offsetof(ManagedObjectWrapper, Target) == offsetof(InteropLib::ABI::ManagedObjectWrapperLayout, ManagedObject)); -ABI_ASSERT(ManagedObjectWrapperRefCountOffset() == offsetof(InteropLib::ABI::ManagedObjectWrapperLayout, RefCount)); - -// State ownership mechanism. -enum class TrackerObjectState -{ - NotSet, - SetNoRelease, - SetForRelease, -}; - -// Class for connecting a native COM object to a managed object instance -class NativeObjectWrapperContext -{ - IReferenceTracker* _trackerObject; - void* _runtimeContext; - Volatile _trackerObjectDisconnected; - TrackerObjectState _trackerObjectState; - IUnknown* _nativeObjectAsInner; - -#ifdef _DEBUG - size_t _sentinel; -#endif -public: // static - // Convert a context pointer into a NativeObjectWrapperContext. - static NativeObjectWrapperContext* MapFromRuntimeContext(_In_ void* cxt); - - // Create a NativeObjectWrapperContext instance - static HRESULT Create( - _In_ IUnknown* external, - _In_opt_ IUnknown* nativeObjectAsInner, - _In_ InteropLib::Com::CreateObjectFlags flags, - _In_ size_t runtimeContextSize, - _Outptr_ NativeObjectWrapperContext** context); - - // Destroy the instance - static void Destroy(_In_ NativeObjectWrapperContext* wrapper); - -private: - NativeObjectWrapperContext(_In_ void* runtimeContext, _In_opt_ IReferenceTracker* trackerObject, _In_opt_ IUnknown* nativeObjectAsInner); - ~NativeObjectWrapperContext(); - -public: - // Get the associated runtime context for this context. - void* GetRuntimeContext() const noexcept; - - // Get the IReferenceTracker instance. - IReferenceTracker* GetReferenceTracker() const noexcept; - - // Disconnect reference tracker instance. - void DisconnectTracker() noexcept; - -private: - void HandleReferenceTrackerAggregation() noexcept; -}; - // Manage native object wrappers that support IReferenceTracker. class TrackerObjectManager { public: - // Called when an IReferenceTracker instance is found. - static HRESULT OnIReferenceTrackerFound(_In_ IReferenceTracker* obj); + static bool HasReferenceTrackerManager(); - // Called after wrapper has been created. - static HRESULT AfterWrapperCreated(_In_ IReferenceTracker* obj); + static bool TryRegisterReferenceTrackerManager(_In_ IReferenceTrackerManager* manager); // Called before wrapper is about to be finalized (the same lifetime as short weak handle). static HRESULT BeforeWrapperFinalized(_In_ IReferenceTracker* obj); @@ -228,6 +92,8 @@ class TrackerObjectManager // End the reference tracking process for external object. static HRESULT EndReferenceTracking(); + + static HRESULT DetachNonPromotedObjects(_In_ InteropLibImports::RuntimeCallContext* cxt); }; // Class used to hold COM objects (i.e. IUnknown base class) diff --git a/src/runtime/src/coreclr/interop/inc/interoplib.h b/src/runtime/src/coreclr/interop/inc/interoplib.h index 684283b7133..e4a09fb84c6 100644 --- a/src/runtime/src/coreclr/interop/inc/interoplib.h +++ b/src/runtime/src/coreclr/interop/inc/interoplib.h @@ -17,48 +17,16 @@ namespace InteropLib { using OBJECTHANDLE = void*; - namespace Com + namespace ABI { - // See CreateComInterfaceFlags in ComWrappers.cs - enum CreateComInterfaceFlags - { - CreateComInterfaceFlags_None = 0, - CreateComInterfaceFlags_CallerDefinedIUnknown = 1, - CreateComInterfaceFlags_TrackerSupport = 2, - }; - - // Create an IUnknown instance that represents the supplied managed object instance. - HRESULT CreateWrapperForObject( - _In_ OBJECTHANDLE instance, - _In_ INT32 vtableCount, - _In_ void* vtables, - _In_ enum CreateComInterfaceFlags flags, - _Outptr_ IUnknown** wrapper) noexcept; - - // Destroy the supplied wrapper - void DestroyWrapperForObject(_In_ void* wrapper) noexcept; - - // Check if a wrapper is considered a GC root. - HRESULT IsWrapperRooted(_In_ IUnknown* wrapper) noexcept; + struct ManagedObjectWrapperLayout; + } - // Get the object for the supplied wrapper - HRESULT GetObjectForWrapper(_In_ IUnknown* wrapper, _Outptr_result_maybenull_ OBJECTHANDLE* object) noexcept; + namespace Com + { + bool IsRooted(_In_ ABI::ManagedObjectWrapperLayout* wrapper) noexcept; HRESULT MarkComActivated(_In_ IUnknown* wrapper) noexcept; - HRESULT IsComActivated(_In_ IUnknown* wrapper) noexcept; - - struct ExternalWrapperResult - { - // The returned context memory is guaranteed to be initialized to zero. - void* Context; - - // See https://learn.microsoft.com/windows/win32/api/windows.ui.xaml.hosting.referencetracker/ - // for details. - bool FromTrackerRuntime; - - // The supplied external object is wrapping a managed object. - bool ManagedObjectWrapper; - }; // See CreateObjectFlags in ComWrappers.cs enum CreateObjectFlags @@ -70,32 +38,21 @@ namespace InteropLib CreateObjectFlags_Unwrap = 8, }; - // Get the true identity and inner for the supplied IUnknown. - HRESULT DetermineIdentityAndInnerForExternal( - _In_ IUnknown* external, - _In_ enum CreateObjectFlags flags, - _Outptr_ IUnknown** identity, - _Inout_ IUnknown** innerMaybe) noexcept; - - // Allocate a wrapper context for an external object. - // The runtime supplies the external object, flags, and a memory - // request in order to bring the object into the runtime. - HRESULT CreateWrapperForExternal( - _In_ IUnknown* external, - _In_opt_ IUnknown* inner, - _In_ enum CreateObjectFlags flags, - _In_ size_t contextSize, - _Out_ ExternalWrapperResult* result) noexcept; - - // Inform the wrapper it is being collected. - void NotifyWrapperForExternalIsBeingCollected(_In_ void* context) noexcept; - - // Destroy the supplied wrapper. - // Optionally notify the wrapper of collection at the same time. - void DestroyWrapperForExternal(_In_ void* context, _In_ bool notifyIsBeingCollected = false) noexcept; - - // Separate the supplied wrapper from the tracker runtime. - void SeparateWrapperFromTrackerRuntime(_In_ void* context) noexcept; + enum class CreateComInterfaceFlagsEx : int32_t + { + // Matches the managed definition of System.Runtime.InteropServices.CreateComInterfaceFlags + None = 0, + CallerDefinedIUnknown = 1, + TrackerSupport = 2, + + // Highest bits are reserved for internal usage + LacksICustomQueryInterface = 1 << 29, + IsComActivated = 1 << 30, + IsPegged = 1 << 31, + + InternalMask = IsPegged | IsComActivated | LacksICustomQueryInterface, + }; + // Get internal interop IUnknown dispatch pointers. void GetIUnknownImpl( @@ -103,6 +60,8 @@ namespace InteropLib _Out_ void** fpAddRef, _Out_ void** fpRelease) noexcept; + void const* GetTaggedCurrentVersionImpl() noexcept; + // Begin the reference tracking process on external COM objects. // This should only be called during a runtime's GC phase. HRESULT BeginExternalObjectReferenceTracking(_In_ InteropLibImports::RuntimeCallContext* cxt) noexcept; @@ -110,8 +69,35 @@ namespace InteropLib // End the reference tracking process. // This should only be called during a runtime's GC phase. HRESULT EndExternalObjectReferenceTracking() noexcept; + + // Detach non-promoted objects from the reference tracker. + // This should only be called during a runtime's GC phase. + HRESULT DetachNonPromotedObjects(_In_ InteropLibImports::RuntimeCallContext* cxt) noexcept; + + // Get the vtable for IReferenceTrackerTarget + void const* GetIReferenceTrackerTargetVftbl() noexcept; + + // Check if a ReferenceTrackerManager has been registered. + bool HasReferenceTrackerManager() noexcept; + + // Register a ReferenceTrackerManager if one has not already been registered. + bool TryRegisterReferenceTrackerManager(void* manager) noexcept; } } -#endif // _INTEROP_INC_INTEROPLIB_H_ +#ifndef DEFINE_ENUM_FLAG_OPERATORS +#define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) \ +extern "C++" { \ + inline ENUMTYPE operator | (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((int)a)|((int)b)); } \ + inline ENUMTYPE operator |= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((int &)a) |= ((int)b)); } \ + inline ENUMTYPE operator & (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((int)a)&((int)b)); } \ + inline ENUMTYPE operator &= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((int &)a) &= ((int)b)); } \ + inline ENUMTYPE operator ~ (ENUMTYPE a) { return (ENUMTYPE)(~((int)a)); } \ + inline ENUMTYPE operator ^ (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((int)a)^((int)b)); } \ + inline ENUMTYPE operator ^= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((int &)a) ^= ((int)b)); } \ +} +#endif + +DEFINE_ENUM_FLAG_OPERATORS(InteropLib::Com::CreateComInterfaceFlagsEx); +#endif // _INTEROP_INC_INTEROPLIB_H_ diff --git a/src/runtime/src/coreclr/interop/inc/interoplibabi.h b/src/runtime/src/coreclr/interop/inc/interoplibabi.h index 7789a68217b..217ecda8b73 100644 --- a/src/runtime/src/coreclr/interop/inc/interoplibabi.h +++ b/src/runtime/src/coreclr/interop/inc/interoplibabi.h @@ -5,27 +5,79 @@ #define _INTEROP_INC_INTEROPLIBABI_H_ #include +#include namespace InteropLib { namespace ABI { - // Updating this also requires updating ComInterfaceDispatch::GetInstance. + // The definitions in this file are constants and data structures that are shared between interoplib, + // the managed ComWrappers code, and the DAC's ComWrappers support. + // All constants, type layouts, and algorithms that calculate pointer offsets should be in this file + // and should have identical implementations with the managed ComWrappers code. + #ifdef HOST_64BIT - const size_t DispatchAlignmentThisPtr = 64; // Should be a power of 2. + constexpr size_t DispatchAlignmentThisPtr = 64; // Should be a power of 2. #else - const size_t DispatchAlignmentThisPtr = 16; // Should be a power of 2. + constexpr size_t DispatchAlignmentThisPtr = 16; // Should be a power of 2. #endif - const intptr_t DispatchThisPtrMask = ~(DispatchAlignmentThisPtr - 1); + constexpr intptr_t DispatchThisPtrMask = ~(DispatchAlignmentThisPtr - 1); + + static_assert(sizeof(void*) < DispatchAlignmentThisPtr, "DispatchAlignmentThisPtr must be larger than sizeof(void*)."); + + constexpr size_t EntriesPerThisPtr = (DispatchAlignmentThisPtr / sizeof(void*)) - 1; + + struct ComInterfaceDispatch + { + const void* vtable; + }; + + static_assert(sizeof(ComInterfaceDispatch) == sizeof(void*), "ComInterfaceDispatch must be pointer-sized."); + + struct ManagedObjectWrapperLayout; + + struct InternalComInterfaceDispatch + { + private: + ManagedObjectWrapperLayout* _thisPtr; + public: + ComInterfaceDispatch _entries[EntriesPerThisPtr]; + }; + + struct ComInterfaceEntry + { + GUID IID; + const void* Vtable; + }; // Managed object wrapper layout. // This is designed to codify the binary layout. struct ManagedObjectWrapperLayout { - PTR_VOID ManagedObject; - long long RefCount; + public: + LONGLONG GetRawRefCount() const + { + return _refCount; + } + + protected: + Volatile _target; + int64_t _refCount; + + Volatile _flags; + int32_t _userDefinedCount; + ComInterfaceEntry* _userDefined; + InternalComInterfaceDispatch* _dispatches; }; + + // Given the entry index, compute the dispatch index. + inline ComInterfaceDispatch* IndexIntoDispatchSection(int32_t i, InternalComInterfaceDispatch* dispatches) + { + InternalComInterfaceDispatch* dispatch = dispatches + i / EntriesPerThisPtr; + ComInterfaceDispatch* entries = dispatch->_entries; + return entries + (i % EntriesPerThisPtr); + } } } diff --git a/src/runtime/src/coreclr/interop/inc/interoplibimports.h b/src/runtime/src/coreclr/interop/inc/interoplibimports.h index 57824c36d78..a75252bf301 100644 --- a/src/runtime/src/coreclr/interop/inc/interoplibimports.h +++ b/src/runtime/src/coreclr/interop/inc/interoplibimports.h @@ -8,45 +8,13 @@ namespace InteropLibImports { - enum class AllocScenario - { - ManagedObjectWrapper, - NativeObjectWrapper, - }; - - // Allocate the given amount of memory. - void* MemAlloc(_In_ size_t sizeInBytes, _In_ AllocScenario scenario) noexcept; - - // Free the previously allocated memory. - void MemFree(_In_ void* mem, _In_ AllocScenario scenario) noexcept; - - // Add memory pressure to the runtime's GC calculations. - HRESULT AddMemoryPressureForExternal(_In_ UINT64 memoryInBytes) noexcept; - - // Remove memory pressure from the runtime's GC calculations. - HRESULT RemoveMemoryPressureForExternal(_In_ UINT64 memoryInBytes) noexcept; - - enum class GcRequest - { - Default, - FullBlocking // This is an expensive GC request, akin to a Gen2/"stop the world" GC. - }; - - // Request a GC from the runtime. - HRESULT RequestGarbageCollectionForExternal(_In_ GcRequest req) noexcept; - - // Wait for the runtime's finalizer to clean up objects. - HRESULT WaitForRuntimeFinalizerForExternal() noexcept; - - // Release objects associated with the current thread. - HRESULT ReleaseExternalObjectsFromCurrentThread() noexcept; - - // Delete Object instance handle. - void DeleteObjectInstanceHandle(_In_ InteropLib::OBJECTHANDLE handle) noexcept; - // Check if Object instance handle still points at an Object. bool HasValidTarget(_In_ InteropLib::OBJECTHANDLE handle) noexcept; + void DestroyHandle(_In_ InteropLib::OBJECTHANDLE handle) noexcept; + + bool IsObjectPromoted(_In_ InteropLib::OBJECTHANDLE handle) noexcept; + // Get the current global pegging state. bool GetGlobalPeggingState() noexcept; @@ -54,26 +22,17 @@ namespace InteropLibImports void SetGlobalPeggingState(_In_ bool state) noexcept; // Get next External Object Context from the Runtime calling context. - // S_OK - Context is valid. - // S_FALSE - Iterator has reached end and context out parameter is set to NULL. - HRESULT IteratorNext( + bool IteratorNext( _In_ RuntimeCallContext* runtimeContext, - _Outptr_result_maybenull_ void** extObjContext) noexcept; + _Outptr_result_maybenull_ void** trackerTarget, + _Outptr_result_maybenull_ InteropLib::OBJECTHANDLE* proxyObject) noexcept; // Tell the runtime a reference path between the External Object Context and // OBJECTHANDLE was found. HRESULT FoundReferencePath( _In_ RuntimeCallContext* runtimeContext, - _In_ void* extObjContext, - _In_ InteropLib::OBJECTHANDLE handle) noexcept; - - // Get or create an IReferenceTrackerTarget instance for the supplied - // external object. - HRESULT GetOrCreateTrackerTargetForExternal( - _In_ IUnknown* externalComObject, - _In_ InteropLib::Com::CreateObjectFlags externalObjectFlags, - _In_ InteropLib::Com::CreateComInterfaceFlags trackerTargetFlags, - _Outptr_ void** trackerTarget) noexcept; + _In_ InteropLib::OBJECTHANDLE sourceHandle, + _In_ InteropLib::OBJECTHANDLE targetHandle) noexcept; // The enum describes the value of System.Runtime.InteropServices.CustomQueryInterfaceResult // and the case where the object doesn't support ICustomQueryInterface. diff --git a/src/runtime/src/coreclr/interop/interoplib.cpp b/src/runtime/src/coreclr/interop/interoplib.cpp index 452df3cce39..b86842bcc3f 100644 --- a/src/runtime/src/coreclr/interop/interoplib.cpp +++ b/src/runtime/src/coreclr/interop/interoplib.cpp @@ -3,6 +3,7 @@ #include "platform.h" #include +#include #include #ifdef FEATURE_COMWRAPPERS @@ -18,65 +19,6 @@ namespace InteropLib // Exposed COM related API namespace Com { - HRESULT CreateWrapperForObject( - _In_ OBJECTHANDLE instance, - _In_ INT32 vtableCount, - _In_ void* vtablesRaw, - _In_ enum CreateComInterfaceFlags flags, - _Outptr_ IUnknown** wrapper) noexcept - { - _ASSERTE(instance != nullptr && wrapper != nullptr); - - // Validate the supplied vtable data is valid with a - // reasonable count. - if ((vtablesRaw == nullptr && vtableCount != 0) || vtableCount < 0) - return E_INVALIDARG; - - HRESULT hr; - - // Convert input to appropriate types. - auto vtables = static_cast<::ABI::ComInterfaceEntry*>(vtablesRaw); - - ManagedObjectWrapper* mow; - RETURN_IF_FAILED(ManagedObjectWrapper::Create(flags, instance, vtableCount, vtables, &mow)); - - *wrapper = static_cast(mow->As(IID_IUnknown)); - return S_OK; - } - - void DestroyWrapperForObject(_In_ void* wrapperMaybe) noexcept - { - ManagedObjectWrapper* wrapper = ManagedObjectWrapper::MapFromIUnknownWithQueryInterface(static_cast(wrapperMaybe)); - - // A caller should not be destroying a wrapper without knowing if the wrapper is valid. - _ASSERTE(wrapper != nullptr); - - ManagedObjectWrapper::Destroy(wrapper); - } - - HRESULT IsWrapperRooted(_In_ IUnknown* wrapperMaybe) noexcept - { - ManagedObjectWrapper* wrapper = ManagedObjectWrapper::MapFromIUnknown(wrapperMaybe); - if (wrapper == nullptr) - return E_INVALIDARG; - - return wrapper->IsRooted() ? S_OK : S_FALSE; - } - - HRESULT GetObjectForWrapper(_In_ IUnknown* wrapper, _Outptr_result_maybenull_ OBJECTHANDLE* object) noexcept - { - _ASSERTE(wrapper != nullptr && object != nullptr); - *object = nullptr; - - // Attempt to get the managed object wrapper. - ManagedObjectWrapper *mow = ManagedObjectWrapper::MapFromIUnknownWithQueryInterface(wrapper); - if (mow == nullptr) - return E_INVALIDARG; - - *object = mow->Target; - return S_OK; - } - HRESULT MarkComActivated(_In_ IUnknown* wrapperMaybe) noexcept { ManagedObjectWrapper* wrapper = ManagedObjectWrapper::MapFromIUnknownWithQueryInterface(wrapperMaybe); @@ -87,143 +29,52 @@ namespace InteropLib return S_OK; } - HRESULT IsComActivated(_In_ IUnknown* wrapperMaybe) noexcept + void GetIUnknownImpl( + _Out_ void** fpQueryInterface, + _Out_ void** fpAddRef, + _Out_ void** fpRelease) noexcept { - ManagedObjectWrapper* wrapper = ManagedObjectWrapper::MapFromIUnknownWithQueryInterface(wrapperMaybe); - if (wrapper == nullptr) - return E_INVALIDARG; - - return wrapper->IsSet(CreateComInterfaceFlagsEx::IsComActivated) ? S_OK : S_FALSE; + ManagedObjectWrapper::GetIUnknownImpl(fpQueryInterface, fpAddRef, fpRelease); } - HRESULT DetermineIdentityAndInnerForExternal( - _In_ IUnknown* external, - _In_ enum CreateObjectFlags flags, - _Outptr_ IUnknown** identity, - _Inout_ IUnknown** innerMaybe) noexcept + void const* GetTaggedCurrentVersionImpl() noexcept { - _ASSERTE(external != nullptr && identity != nullptr && innerMaybe != nullptr); - - IUnknown* checkForIdentity = external; - - // Check if the flags indicate we are creating - // an object for an external IReferenceTracker instance - // that we are aggregating with. - bool refTrackerInnerScenario = (flags & CreateObjectFlags_TrackerObject) - && (flags & CreateObjectFlags_Aggregated); - - ComHolder trackerObject; - if (refTrackerInnerScenario) - { - // We are checking the supplied external value - // for IReferenceTracker since in .NET 5 this could - // actually be the inner and we want the true identity - // not the inner . This is a trick since the only way - // to get identity from an inner is through a non-IUnknown - // interface QI. Once we have the IReferenceTracker - // instance we can be sure the QI for IUnknown will really - // be the true identity. - HRESULT hr = external->QueryInterface(IID_IReferenceTracker, (void**)&trackerObject); - if (SUCCEEDED(hr)) - checkForIdentity = trackerObject.p; - } - - HRESULT hr; - - IUnknown* identityLocal; - RETURN_IF_FAILED(checkForIdentity->QueryInterface(IID_IUnknown, (void **)&identityLocal)); - - // Set the inner if scenario dictates an update. - if (*innerMaybe == nullptr // User didn't supply inner - .NET 5 API scenario sanity check. - && checkForIdentity != external // Target of check was changed - .NET 5 API scenario sanity check. - && external != identityLocal // The supplied object doesn't match the computed identity. - && refTrackerInnerScenario) // The appropriate flags were set. - { - *innerMaybe = external; - } - - *identity = identityLocal; - return S_OK; + return ManagedObjectWrapper::GetTaggedCurrentVersionImpl(); } - HRESULT CreateWrapperForExternal( - _In_ IUnknown* external, - _In_opt_ IUnknown* inner, - _In_ enum CreateObjectFlags flags, - _In_ size_t contextSize, - _Out_ ExternalWrapperResult* result) noexcept + HRESULT BeginExternalObjectReferenceTracking(_In_ RuntimeCallContext* cxt) noexcept { - _ASSERTE(external != nullptr && result != nullptr); - - HRESULT hr; - - NativeObjectWrapperContext* wrapperContext; - RETURN_IF_FAILED(NativeObjectWrapperContext::Create(external, inner, flags, contextSize, &wrapperContext)); - - result->Context = wrapperContext->GetRuntimeContext(); - result->FromTrackerRuntime = (wrapperContext->GetReferenceTracker() != nullptr); - result->ManagedObjectWrapper = (ManagedObjectWrapper::MapFromIUnknownWithQueryInterface(external) != nullptr); - return S_OK; + return TrackerObjectManager::BeginReferenceTracking(cxt); } - void NotifyWrapperForExternalIsBeingCollected(_In_ void* contextMaybe) noexcept - { - NativeObjectWrapperContext* context = NativeObjectWrapperContext::MapFromRuntimeContext(contextMaybe); - - // A caller should not be destroying a context without knowing if the context is valid. - _ASSERTE(context != nullptr); - - // Check if the tracker object manager should be informed of collection. - IReferenceTracker* trackerMaybe = context->GetReferenceTracker(); - if (trackerMaybe != nullptr) - { - // We only call this during a GC so ignore the failure as - // there is no way we can handle it at this point. - HRESULT hr = TrackerObjectManager::BeforeWrapperFinalized(trackerMaybe); - _ASSERTE(SUCCEEDED(hr)); - (void)hr; - } + HRESULT EndExternalObjectReferenceTracking() noexcept + { + return TrackerObjectManager::EndReferenceTracking(); } - void DestroyWrapperForExternal(_In_ void* contextMaybe, _In_ bool notifyIsBeingCollected) noexcept + HRESULT DetachNonPromotedObjects(_In_ RuntimeCallContext* cxt) noexcept { - NativeObjectWrapperContext* context = NativeObjectWrapperContext::MapFromRuntimeContext(contextMaybe); - - // A caller should not be destroying a context without knowing if the context is valid. - _ASSERTE(context != nullptr); - - if (notifyIsBeingCollected) - NotifyWrapperForExternalIsBeingCollected(contextMaybe); - - NativeObjectWrapperContext::Destroy(context); - } + return TrackerObjectManager::DetachNonPromotedObjects(cxt); + } - void SeparateWrapperFromTrackerRuntime(_In_ void* contextMaybe) noexcept + void const* GetIReferenceTrackerTargetVftbl() noexcept { - NativeObjectWrapperContext* context = NativeObjectWrapperContext::MapFromRuntimeContext(contextMaybe); - - // A caller should not be separating a context without knowing if the context is valid. - _ASSERTE(context != nullptr); - - context->DisconnectTracker(); + return ManagedObjectWrapper::GetIReferenceTrackerTargetImpl(); } - void GetIUnknownImpl( - _Out_ void** fpQueryInterface, - _Out_ void** fpAddRef, - _Out_ void** fpRelease) noexcept + bool HasReferenceTrackerManager() noexcept { - ManagedObjectWrapper::GetIUnknownImpl(fpQueryInterface, fpAddRef, fpRelease); + return TrackerObjectManager::HasReferenceTrackerManager(); } - HRESULT BeginExternalObjectReferenceTracking(_In_ RuntimeCallContext* cxt) noexcept + bool TryRegisterReferenceTrackerManager(_In_ void* manager) noexcept { - return TrackerObjectManager::BeginReferenceTracking(cxt); + return TrackerObjectManager::TryRegisterReferenceTrackerManager((IReferenceTrackerManager*)manager); } - HRESULT EndExternalObjectReferenceTracking() noexcept + bool IsRooted(InteropLib::ABI::ManagedObjectWrapperLayout* mow) noexcept { - return TrackerObjectManager::EndReferenceTracking(); + return reinterpret_cast(mow)->IsRooted(); } } diff --git a/src/runtime/src/coreclr/interop/trackerobjectmanager.cpp b/src/runtime/src/coreclr/interop/trackerobjectmanager.cpp index 0df78164906..cc178d41871 100644 --- a/src/runtime/src/coreclr/interop/trackerobjectmanager.cpp +++ b/src/runtime/src/coreclr/interop/trackerobjectmanager.cpp @@ -9,148 +9,11 @@ using RuntimeCallContext = InteropLibImports::RuntimeCallContext; namespace { - // 29a71c6a-3c42-4416-a39d-e2825a07a773 - const GUID IID_IReferenceTrackerHost = { 0x29a71c6a, 0x3c42, 0x4416, { 0xa3, 0x9d, 0xe2, 0x82, 0x5a, 0x7, 0xa7, 0x73} }; - - // 3cf184b4-7ccb-4dda-8455-7e6ce99a3298 - const GUID IID_IReferenceTrackerManager = { 0x3cf184b4, 0x7ccb, 0x4dda, { 0x84, 0x55, 0x7e, 0x6c, 0xe9, 0x9a, 0x32, 0x98} }; - // 04b3486c-4687-4229-8d14-505ab584dd88 const GUID IID_IFindReferenceTargetsCallback = { 0x04b3486c, 0x4687, 0x4229, { 0x8d, 0x14, 0x50, 0x5a, 0xb5, 0x84, 0xdd, 0x88} }; - // In order to minimize the impact of a constructor running on module load, - // the HostServices class should have no instance fields. - class HostServices : public IReferenceTrackerHost - { - public: // IReferenceTrackerHost - STDMETHOD(DisconnectUnusedReferenceSources)(_In_ DWORD dwFlags); - STDMETHOD(ReleaseDisconnectedReferenceSources)(); - STDMETHOD(NotifyEndOfReferenceTrackingOnThread)(); - STDMETHOD(GetTrackerTarget)(_In_ IUnknown* obj, _Outptr_ IReferenceTrackerTarget** ppNewReference); - STDMETHOD(AddMemoryPressure)(_In_ UINT64 bytesAllocated); - STDMETHOD(RemoveMemoryPressure)(_In_ UINT64 bytesAllocated); - - public: // IUnknown - // Lifetime maintained by stack - we don't care about ref counts - STDMETHOD_(ULONG, AddRef)() { return 1; } - STDMETHOD_(ULONG, Release)() { return 1; } - - STDMETHOD(QueryInterface)( - /* [in] */ REFIID riid, - /* [iid_is][out] */ _COM_Outptr_ void __RPC_FAR* __RPC_FAR* ppvObject) - { - if (ppvObject == nullptr) - return E_POINTER; - - if (IsEqualIID(riid, IID_IReferenceTrackerHost)) - { - *ppvObject = static_cast(this); - } - else if (IsEqualIID(riid, IID_IUnknown)) - { - *ppvObject = static_cast(this); - } - else - { - *ppvObject = nullptr; - return E_NOINTERFACE; - } - - (void)AddRef(); - return S_OK; - } - }; - - // Global instance of host services. - HostServices g_HostServicesInstance; - - // Defined in windows.ui.xaml.hosting.referencetracker.h. - enum XAML_REFERENCETRACKER_DISCONNECT - { - // Indicates the disconnect is during a suspend and a GC can be trigger. - XAML_REFERENCETRACKER_DISCONNECT_SUSPEND = 0x00000001 - }; - - STDMETHODIMP HostServices::DisconnectUnusedReferenceSources(_In_ DWORD flags) - { - InteropLibImports::GcRequest type = InteropLibImports::GcRequest::Default; - - // Request a "stop the world" GC when a suspend is occurring. - if (flags & XAML_REFERENCETRACKER_DISCONNECT_SUSPEND) - type = InteropLibImports::GcRequest::FullBlocking; - - return InteropLibImports::RequestGarbageCollectionForExternal(type); - } - - STDMETHODIMP HostServices::ReleaseDisconnectedReferenceSources() - { - // We'd like to call InteropLibImports::WaitForRuntimeFinalizerForExternal() here, but this could - // lead to deadlock if the finalizer thread is trying to get back to this thread, because we are - // not pumping anymore. Disable this for now. See: https://github.com/dotnet/runtime/issues/109538. - return S_OK; - } - - STDMETHODIMP HostServices::NotifyEndOfReferenceTrackingOnThread() - { - return InteropLibImports::ReleaseExternalObjectsFromCurrentThread(); - } - - // Creates a proxy object (managed object wrapper) that points to the given IUnknown. - // The proxy represents the following: - // 1. Has a managed reference pointing to the external object - // and therefore forms a cycle that can be resolved by GC. - // 2. Forwards data binding requests. - // - // For example: - // - // Grid <---- NoCW Grid <-------- NoCW - // | ^ | ^ - // | | Becomes | | - // v | v | - // Rectangle Rectangle ----->Proxy - // - // Arguments - // obj - An IUnknown* where a NoCW points to (Grid, in this case) - // Notes: - // 1. We can either create a new NoCW or get back an old one from the cache. - // 2. This obj could be a regular tracker runtime object for data binding. - // ppNewReference - The IReferenceTrackerTarget* for the proxy created - // The tracker runtime will call IReferenceTrackerTarget to establish a reference. - // - STDMETHODIMP HostServices::GetTrackerTarget(_In_ IUnknown* obj, _Outptr_ IReferenceTrackerTarget** ppNewReference) - { - if (obj == nullptr || ppNewReference == nullptr) - return E_INVALIDARG; - - HRESULT hr; - - // QI for IUnknown to get the identity unknown - ComHolder identity; - RETURN_IF_FAILED(obj->QueryInterface(IID_IUnknown, (void**)&identity)); - - // Get or create an existing implementation for this external. - ComHolder target; - RETURN_IF_FAILED(InteropLibImports::GetOrCreateTrackerTargetForExternal( - identity, - InteropLib::Com::CreateObjectFlags_TrackerObject, - InteropLib::Com::CreateComInterfaceFlags_TrackerSupport, - (void**)&target)); - - return target->QueryInterface(IID_IReferenceTrackerTarget, (void**)ppNewReference); - } - - STDMETHODIMP HostServices::AddMemoryPressure(_In_ UINT64 bytesAllocated) - { - return InteropLibImports::AddMemoryPressureForExternal(bytesAllocated); - } - - STDMETHODIMP HostServices::RemoveMemoryPressure(_In_ UINT64 bytesAllocated) - { - return InteropLibImports::RemoveMemoryPressureForExternal(bytesAllocated); - } - VolatilePtr s_TrackerManager; // The one and only Tracker Manager instance - Volatile s_HasTrackingStarted = FALSE; + Volatile s_HasTrackingStarted = false; // Indicates if walking the external objects is needed. // (i.e. Have any IReferenceTracker instances been found?) @@ -160,17 +23,17 @@ namespace } // Callback implementation of IFindReferenceTargetsCallback - class FindDependentWrappersCallback : public IFindReferenceTargetsCallback + class FindDependentWrappersCallback final : public IFindReferenceTargetsCallback { - NativeObjectWrapperContext* _nowCxt; + OBJECTHANDLE _sourceHandle; RuntimeCallContext* _runtimeCallCxt; public: - FindDependentWrappersCallback(_In_ NativeObjectWrapperContext* nowCxt, _In_ RuntimeCallContext* runtimeCallCxt) - : _nowCxt{ nowCxt } + FindDependentWrappersCallback(_In_ OBJECTHANDLE sourceHandle, _In_ RuntimeCallContext* runtimeCallCxt) + : _sourceHandle{ sourceHandle } , _runtimeCallCxt{ runtimeCallCxt } { - _ASSERTE(_nowCxt != nullptr && runtimeCallCxt != nullptr); + _ASSERTE(_sourceHandle != nullptr && runtimeCallCxt != nullptr); } STDMETHOD(FoundTrackerTarget)(_In_ IReferenceTrackerTarget* target) @@ -189,8 +52,8 @@ namespace // Notify the runtime a reference path was found. RETURN_IF_FAILED(InteropLibImports::FoundReferencePath( _runtimeCallCxt, - _nowCxt->GetRuntimeContext(), - mow->Target)); + _sourceHandle, + mow->GetTarget())); return S_OK; } @@ -229,24 +92,19 @@ namespace { _ASSERTE(cxt != nullptr); - BOOL walkFailed = FALSE; - HRESULT hr; + bool walkFailed = false; + HRESULT hr = S_OK; - void* extObjContext = nullptr; - while (S_OK == (hr = InteropLibImports::IteratorNext(cxt, &extObjContext))) + IReferenceTracker* trackerTarget = nullptr; + OBJECTHANDLE proxyObject = nullptr; + while (InteropLibImports::IteratorNext(cxt, (void**)&trackerTarget, &proxyObject)) { - _ASSERTE(extObjContext != nullptr); - - NativeObjectWrapperContext* nowc = NativeObjectWrapperContext::MapFromRuntimeContext(extObjContext); - - // Check if the object is a tracker object. - IReferenceTracker* trackerMaybe = nowc->GetReferenceTracker(); - if (trackerMaybe == nullptr) + if (trackerTarget == nullptr) continue; // Ask the tracker instance to find all reference targets. - FindDependentWrappersCallback cb{ nowc, cxt }; - hr = trackerMaybe->FindTrackerTargets(&cb); + FindDependentWrappersCallback cb{ proxyObject, cxt }; + hr = trackerTarget->FindTrackerTargets(&cb); if (FAILED(hr)) break; } @@ -254,58 +112,26 @@ namespace if (FAILED(hr)) { // Remember the fact that we've failed and stop walking - walkFailed = TRUE; + walkFailed = true; InteropLibImports::SetGlobalPeggingState(true); } _ASSERTE(s_TrackerManager != nullptr); - (void)s_TrackerManager->FindTrackerTargetsCompleted(walkFailed); + (void)s_TrackerManager->FindTrackerTargetsCompleted(walkFailed ? TRUE : FALSE); return hr; } } -HRESULT TrackerObjectManager::OnIReferenceTrackerFound(_In_ IReferenceTracker* obj) +bool TrackerObjectManager::HasReferenceTrackerManager() { - _ASSERTE(obj != nullptr); - if (s_TrackerManager != nullptr) - return S_OK; - - // Retrieve IReferenceTrackerManager - HRESULT hr; - ComHolder trackerManager; - RETURN_IF_FAILED(obj->GetReferenceTrackerManager(&trackerManager)); - - ComHolder hostServices; - RETURN_IF_FAILED(g_HostServicesInstance.QueryInterface(IID_IReferenceTrackerHost, (void**)&hostServices)); - - // Attempt to set the tracker instance. - if (InterlockedCompareExchangePointer((void**)&s_TrackerManager, trackerManager.p, nullptr) == nullptr) - { - (void)trackerManager.Detach(); // Ownership has been transferred - RETURN_IF_FAILED(s_TrackerManager->SetReferenceTrackerHost(hostServices)); - } - - return S_OK; + return s_TrackerManager != nullptr; } -HRESULT TrackerObjectManager::AfterWrapperCreated(_In_ IReferenceTracker* obj) +bool TrackerObjectManager::TryRegisterReferenceTrackerManager(_In_ IReferenceTrackerManager* manager) { - _ASSERTE(obj != nullptr); - - HRESULT hr; - - // Notify tracker runtime that we've created a new wrapper for this object. - // To avoid surprises, we should notify them before we fire the first AddRefFromTrackerSource. - RETURN_IF_FAILED(obj->ConnectFromTrackerSource()); - - // Send out AddRefFromTrackerSource callbacks to notify tracker runtime we've done AddRef() - // for certain interfaces. We should do this *after* we made a AddRef() because we should never - // be in a state where report refs > actual refs - RETURN_IF_FAILED(obj->AddRefFromTrackerSource()); // IUnknown - RETURN_IF_FAILED(obj->AddRefFromTrackerSource()); // IReferenceTracker - - return S_OK; + _ASSERTE(manager != nullptr); + return InterlockedCompareExchangePointer((void**)&s_TrackerManager, manager, nullptr) == nullptr; } HRESULT TrackerObjectManager::BeforeWrapperFinalized(_In_ IReferenceTracker* obj) @@ -332,10 +158,10 @@ HRESULT TrackerObjectManager::BeginReferenceTracking(_In_ RuntimeCallContext* cx HRESULT hr; - _ASSERTE(s_HasTrackingStarted == FALSE); + _ASSERTE(s_HasTrackingStarted == false); _ASSERTE(InteropLibImports::GetGlobalPeggingState()); - s_HasTrackingStarted = TRUE; + s_HasTrackingStarted = true; // Let the tracker runtime know we are about to walk external objects so that // they can lock their reference cache. Note that the tracker runtime doesn't need to @@ -356,7 +182,7 @@ HRESULT TrackerObjectManager::BeginReferenceTracking(_In_ RuntimeCallContext* cx HRESULT TrackerObjectManager::EndReferenceTracking() { - if (s_HasTrackingStarted != TRUE + if (s_HasTrackingStarted != true || !ShouldWalkExternalObjects()) return S_FALSE; @@ -372,7 +198,31 @@ HRESULT TrackerObjectManager::EndReferenceTracking() _ASSERTE(SUCCEEDED(hr)); InteropLibImports::SetGlobalPeggingState(true); - s_HasTrackingStarted = FALSE; + s_HasTrackingStarted = false; return hr; } + +HRESULT TrackerObjectManager::DetachNonPromotedObjects(_In_ RuntimeCallContext* cxt) +{ + _ASSERTE(cxt != nullptr); + + HRESULT hr; + IReferenceTracker* trackerTarget = nullptr; + OBJECTHANDLE proxyObject = NULL; + while (InteropLibImports::IteratorNext(cxt, (void**)&trackerTarget, &proxyObject)) + { + if (trackerTarget == nullptr) + continue; + + if (proxyObject == nullptr) + continue; + + if (!InteropLibImports::IsObjectPromoted(proxyObject)) + { + RETURN_IF_FAILED(BeforeWrapperFinalized(trackerTarget)); + } + } + + return S_OK; +} diff --git a/src/runtime/src/coreclr/jit/codegenxarch.cpp b/src/runtime/src/coreclr/jit/codegenxarch.cpp index 69390fe6c34..1df74199425 100644 --- a/src/runtime/src/coreclr/jit/codegenxarch.cpp +++ b/src/runtime/src/coreclr/jit/codegenxarch.cpp @@ -10859,24 +10859,15 @@ void CodeGen::genFnEpilog(BasicBlock* block) * filter: rax = non-zero if the handler should handle the exception, zero otherwise (see GT_RETFILT) * finally/fault: none * - * First parameter (rcx/rdi) is a placeholder for establisher frame which is no longer used. - * * The AMD64 funclet prolog sequence is: * - * push ebp - * push callee-saved regs - * ; TODO-AMD64-CQ: We probably only need to save any callee-save registers that we actually use - * ; in the funclet. Currently, we save the same set of callee-saved regs calculated for - * ; the entire function. - * sub sp, XXX ; Establish the rest of the frame. + * sub sp, XXX ; Establish the frame. * ; XXX is determined by lvaOutgoingArgSpaceSize, aligned up to preserve stack alignment. * ; If we push an odd number of registers, we also generate this, to keep the stack aligned. * * The epilog sequence is then: * * add rsp, XXX - * pop callee-saved regs ; if necessary - * pop rbp * ret * * The funclet frame is thus: @@ -10888,10 +10879,6 @@ void CodeGen::genFnEpilog(BasicBlock* block) * +=======================+ <---- Caller's SP * | Return address | * |-----------------------| - * | Saved EBP | - * |-----------------------| - * |Callee saved registers | - * |-----------------------| * ~ possible 8 byte pad ~ * ~ for alignment ~ * |-----------------------| @@ -10902,10 +10889,6 @@ void CodeGen::genFnEpilog(BasicBlock* block) * | | downward | * V * - * TODO-AMD64-Bug?: the frame pointer should really point to the PSP slot (the debugger seems to assume this - * in DacDbiInterfaceImpl::InitParentFrameInfo()), or someplace above Initial-SP. There is an AMD64 - * UNWIND_INFO restriction that it must be within 240 bytes of Initial-SP. See jit64\amd64\inc\md.h - * "FRAMEPTR OFFSETS" for details. */ void CodeGen::genFuncletProlog(BasicBlock* block) @@ -10928,19 +10911,11 @@ void CodeGen::genFuncletProlog(BasicBlock* block) compiler->unwindBegProlog(); - // We need to push ebp, since it's callee-saved. - // We need to push the callee-saved registers. We only need to push the ones that we need, but we don't - // keep track of that on a per-funclet basis, so we push the same set as in the main function. + // We do not need to push callee-saved registers. The runtime takes care of preserving them. // We do not need to allocate fixed-size frame, since nothing else // is stored here (all temps are allocated in the parent frame). // We do need to allocate the outgoing argument space, in case there are calls here. - inst_RV(INS_push, REG_FPBASE, TYP_REF); - compiler->unwindPush(REG_FPBASE); - - // Callee saved int registers are pushed to stack. - genPushCalleeSavedRegisters(); - regMaskTP maskArgRegsLiveIn; if ((block->bbCatchTyp == BBCT_FINALLY) || (block->bbCatchTyp == BBCT_FAULT)) { @@ -10951,14 +10926,8 @@ void CodeGen::genFuncletProlog(BasicBlock* block) maskArgRegsLiveIn = RBM_ARG_0 | RBM_ARG_2; } - regNumber initReg = REG_EBP; // We already saved EBP, so it can be trashed - bool initRegZeroed = false; - - genAllocLclFrame(genFuncletInfo.fiSpDelta, initReg, &initRegZeroed, maskArgRegsLiveIn); - - // Callee saved float registers are copied to stack in their assigned stack slots - // after allocating space for them as part of funclet frame. - genPreserveCalleeSavedFltRegs(genFuncletInfo.fiSpDelta); + bool initRegZeroed = false; + genAllocLclFrame(genFuncletInfo.fiSpDelta, REG_NA, &initRegZeroed, maskArgRegsLiveIn); // This is the end of the OS-reported prolog for purposes of unwinding compiler->unwindEndProlog(); @@ -10982,12 +10951,7 @@ void CodeGen::genFuncletEpilog() ScopedSetVariable _setGeneratingEpilog(&compiler->compGeneratingEpilog, true); - // Restore callee saved XMM regs from their stack slots before modifying SP - // to position at callee saved int regs. - genRestoreCalleeSavedFltRegs(genFuncletInfo.fiSpDelta); inst_RV_IV(INS_add, REG_SPBASE, genFuncletInfo.fiSpDelta, EA_PTRSIZE); - genPopCalleeSavedRegisters(); - inst_RV(INS_pop, REG_EBP, TYP_I_IMPL); instGen_Return(0); } @@ -11009,7 +10973,6 @@ void CodeGen::genCaptureFuncletPrologEpilogInfo() assert(isFramePointerUsed()); assert(compiler->lvaDoneFrameLayout == Compiler::FINAL_FRAME_LAYOUT); // The frame size and offsets must be // finalized - assert(compiler->compCalleeFPRegsSavedMask != (regMaskTP)-1); // The float registers to be preserved is finalized assert(compiler->lvaOutgoingArgSpaceSize % REGSIZE_BYTES == 0); #ifndef UNIX_AMD64_ABI @@ -11023,29 +10986,12 @@ void CodeGen::genCaptureFuncletPrologEpilogInfo() // How much stack do we allocate in the funclet? // We need to 16-byte align the stack. - unsigned totalFrameSize = - REGSIZE_BYTES // return address - + REGSIZE_BYTES // pushed EBP - + (compiler->compCalleeRegsPushed * REGSIZE_BYTES); // pushed callee-saved int regs, not including EBP - - // Entire 128-bits of XMM register is saved to stack due to ABI encoding requirement. - // Copying entire XMM register to/from memory will be performant if SP is aligned at XMM_REGSIZE_BYTES boundary. - unsigned calleeFPRegsSavedSize = genCountBits(compiler->compCalleeFPRegsSavedMask) * XMM_REGSIZE_BYTES; - unsigned FPRegsPad = (calleeFPRegsSavedSize > 0) ? AlignmentPad(totalFrameSize, XMM_REGSIZE_BYTES) : 0; - - totalFrameSize += FPRegsPad // Padding before pushing entire xmm regs - + calleeFPRegsSavedSize // pushed callee-saved float regs - // below calculated 'pad' will go here - + compiler->lvaOutgoingArgSpaceSize // outgoing arg space - ; + unsigned totalFrameSize = REGSIZE_BYTES // return address + + compiler->lvaOutgoingArgSpaceSize; unsigned pad = AlignmentPad(totalFrameSize, 16); - genFuncletInfo.fiSpDelta = FPRegsPad // Padding to align SP on XMM_REGSIZE_BYTES boundary - + calleeFPRegsSavedSize // Callee saved xmm regs - + pad // padding - + compiler->lvaOutgoingArgSpaceSize // outgoing arg space - ; + genFuncletInfo.fiSpDelta = pad + compiler->lvaOutgoingArgSpaceSize; #ifdef DEBUG if (verbose) diff --git a/src/runtime/src/coreclr/nativeaot/Runtime/amd64/ExceptionHandling.S b/src/runtime/src/coreclr/nativeaot/Runtime/amd64/ExceptionHandling.S index cffacee7b35..9df1f73b3ab 100644 --- a/src/runtime/src/coreclr/nativeaot/Runtime/amd64/ExceptionHandling.S +++ b/src/runtime/src/coreclr/nativeaot/Runtime/amd64/ExceptionHandling.S @@ -245,6 +245,9 @@ NESTED_END RhpRethrow, _TEXT alloc_stack stack_alloc_size + // Mirror clearing of AVX state done by regular method prologs + vzeroupper + END_PROLOGUE .endm @@ -252,6 +255,9 @@ NESTED_END RhpRethrow, _TEXT // Epilogue of all funclet calling helpers (RhpCallXXXXFunclet) // .macro FUNCLET_CALL_EPILOGUE + // Mirror clearing of AVX state done by regular method epilogs + vzeroupper + free_stack stack_alloc_size pop_nonvol_reg rbp @@ -313,23 +319,6 @@ NESTED_ENTRY RhpCallCatchFunclet, _TEXT, NoHandler mov rax, [rdx + OFFSETOF__REGDISPLAY__pR15] mov r15, [rax] -#if 0 // _DEBUG // @TODO: temporarily removed because trashing RBP breaks the debugger - // trash the values at the old homes to make sure nobody uses them - mov rcx, 0xbaaddeed - mov rax, [rdx + OFFSETOF__REGDISPLAY__pRbx] - mov [rax], rcx - mov rax, [rdx + OFFSETOF__REGDISPLAY__pRbp] - mov [rax], rcx - mov rax, [rdx + OFFSETOF__REGDISPLAY__pR12] - mov [rax], rcx - mov rax, [rdx + OFFSETOF__REGDISPLAY__pR13] - mov [rax], rcx - mov rax, [rdx + OFFSETOF__REGDISPLAY__pR14] - mov [rax], rcx - mov rax, [rdx + OFFSETOF__REGDISPLAY__pR15] - mov [rax], rcx -#endif - mov rdi, [rsp + locArg0] // rsi <- exception object call qword ptr [rsp + locArg1] // call handler funclet @@ -452,42 +441,10 @@ NESTED_ENTRY RhpCallFinallyFunclet, _TEXT, NoHandler mov rax, [rsi + OFFSETOF__REGDISPLAY__pR15] mov r15, [rax] -#if 0 // _DEBUG // @TODO: temporarily removed because trashing RBP breaks the debugger - // trash the values at the old homes to make sure nobody uses them - mov rcx, 0xbaaddeed - mov rax, [rsi + OFFSETOF__REGDISPLAY__pRbx] - mov [rax], rcx - mov rax, [rsi + OFFSETOF__REGDISPLAY__pRbp] - mov [rax], rcx - mov rax, [rsi + OFFSETOF__REGDISPLAY__pR12] - mov [rax], rcx - mov rax, [rsi + OFFSETOF__REGDISPLAY__pR13] - mov [rax], rcx - mov rax, [rsi + OFFSETOF__REGDISPLAY__pR14] - mov [rax], rcx - mov rax, [rsi + OFFSETOF__REGDISPLAY__pR15] - mov [rax], rcx -#endif - call qword ptr [rsp + locArg0] // handler funclet address ALTERNATE_ENTRY RhpCallFinallyFunclet2 - mov rsi, [rsp + locArg1] // rsi <- regdisplay - - mov rax, [rsi + OFFSETOF__REGDISPLAY__pRbx] - mov [rax] , rbx - mov rax, [rsi + OFFSETOF__REGDISPLAY__pRbp] - mov [rax] , rbp - mov rax, [rsi + OFFSETOF__REGDISPLAY__pR12] - mov [rax] , r12 - mov rax, [rsi + OFFSETOF__REGDISPLAY__pR13] - mov [rax] , r13 - mov rax, [rsi + OFFSETOF__REGDISPLAY__pR14] - mov [rax] , r14 - mov rax, [rsi + OFFSETOF__REGDISPLAY__pR15] - mov [rax] , r15 - mov rax, [rsp + locThread] // rax <- Thread* lock or dword ptr [rax + OFFSETOF__Thread__m_ThreadStateFlags], TSF_DoNotTriggerGc @@ -585,23 +542,6 @@ NESTED_ENTRY RhpCallPropagateExceptionCallback, _TEXT, NoHandler mov rax, [rdx + OFFSETOF__REGDISPLAY__pR15] mov r15, [rax] -#if 0 // _DEBUG // @TODO: temporarily removed because trashing RBP breaks the debugger - // trash the values at the old homes to make sure nobody uses them - mov rcx, 0xbaaddeed - mov rax, [rdx + OFFSETOF__REGDISPLAY__pRbx] - mov [rax], rcx - mov rax, [rdx + OFFSETOF__REGDISPLAY__pRbp] - mov [rax], rcx - mov rax, [rdx + OFFSETOF__REGDISPLAY__pR12] - mov [rax], rcx - mov rax, [rdx + OFFSETOF__REGDISPLAY__pR13] - mov [rax], rcx - mov rax, [rdx + OFFSETOF__REGDISPLAY__pR14] - mov [rax], rcx - mov rax, [rdx + OFFSETOF__REGDISPLAY__pR15] - mov [rax], rcx -#endif - #ifdef _DEBUG // Call into some C++ code to validate the pop of the ExInfo. We only do this in debug because we // have to spill all the preserved registers and then refill them after the call. diff --git a/src/runtime/src/coreclr/nativeaot/Runtime/amd64/ExceptionHandling.asm b/src/runtime/src/coreclr/nativeaot/Runtime/amd64/ExceptionHandling.asm index 4d225ba4605..b8f0582b4f0 100644 --- a/src/runtime/src/coreclr/nativeaot/Runtime/amd64/ExceptionHandling.asm +++ b/src/runtime/src/coreclr/nativeaot/Runtime/amd64/ExceptionHandling.asm @@ -308,6 +308,9 @@ FUNCLET_CALL_PROLOGUE macro localsCount, alignStack alloc_stack stack_alloc_size + ;; Mirror clearing of AVX state done by regular method prologs + vzeroupper + save_xmm128_postrsp xmm6, (arguments_scratch_area_size + 0 * 10h) save_xmm128_postrsp xmm7, (arguments_scratch_area_size + 1 * 10h) save_xmm128_postrsp xmm8, (arguments_scratch_area_size + 2 * 10h) @@ -326,6 +329,9 @@ endm ;; Epilogue of all funclet calling helpers (RhpCallXXXXFunclet) ;; FUNCLET_CALL_EPILOGUE macro + ;; Mirror clearing of AVX state done by regular method epilogs + vzeroupper + movdqa xmm6, [rsp + arguments_scratch_area_size + 0 * 10h] movdqa xmm7, [rsp + arguments_scratch_area_size + 1 * 10h] movdqa xmm8, [rsp + arguments_scratch_area_size + 2 * 10h] @@ -401,27 +407,6 @@ NESTED_ENTRY RhpCallCatchFunclet, _TEXT mov rax, [r8 + OFFSETOF__REGDISPLAY__pR15] mov r15, [rax] -if 0 ;; _DEBUG ;; @TODO: temporarily removed because trashing RBP breaks the debugger - ;; trash the values at the old homes to make sure nobody uses them - mov r9, 0baaddeedh - mov rax, [r8 + OFFSETOF__REGDISPLAY__pRbx] - mov [rax], r9 - mov rax, [r8 + OFFSETOF__REGDISPLAY__pRbp] - mov [rax], r9 - mov rax, [r8 + OFFSETOF__REGDISPLAY__pRsi] - mov [rax], r9 - mov rax, [r8 + OFFSETOF__REGDISPLAY__pRdi] - mov [rax], r9 - mov rax, [r8 + OFFSETOF__REGDISPLAY__pR12] - mov [rax], r9 - mov rax, [r8 + OFFSETOF__REGDISPLAY__pR13] - mov [rax], r9 - mov rax, [r8 + OFFSETOF__REGDISPLAY__pR14] - mov [rax], r9 - mov rax, [r8 + OFFSETOF__REGDISPLAY__pR15] - mov [rax], r9 -endif - movdqa xmm6, [r8 + OFFSETOF__REGDISPLAY__Xmm + 0*10h] movdqa xmm7, [r8 + OFFSETOF__REGDISPLAY__Xmm + 1*10h] movdqa xmm8, [r8 + OFFSETOF__REGDISPLAY__Xmm + 2*10h] @@ -617,62 +602,10 @@ NESTED_ENTRY RhpCallFinallyFunclet, _TEXT movdqa xmm14,[rdx + OFFSETOF__REGDISPLAY__Xmm + 8*10h] movdqa xmm15,[rdx + OFFSETOF__REGDISPLAY__Xmm + 9*10h] -if 0 ;; _DEBUG ;; @TODO: temporarily removed because trashing RBP breaks the debugger - ;; trash the values at the old homes to make sure nobody uses them - mov r9, 0baaddeedh - mov rax, [rdx + OFFSETOF__REGDISPLAY__pRbx] - mov [rax], r9 - mov rax, [rdx + OFFSETOF__REGDISPLAY__pRbp] - mov [rax], r9 - mov rax, [rdx + OFFSETOF__REGDISPLAY__pRsi] - mov [rax], r9 - mov rax, [rdx + OFFSETOF__REGDISPLAY__pRdi] - mov [rax], r9 - mov rax, [rdx + OFFSETOF__REGDISPLAY__pR12] - mov [rax], r9 - mov rax, [rdx + OFFSETOF__REGDISPLAY__pR13] - mov [rax], r9 - mov rax, [rdx + OFFSETOF__REGDISPLAY__pR14] - mov [rax], r9 - mov rax, [rdx + OFFSETOF__REGDISPLAY__pR15] - mov [rax], r9 -endif - call qword ptr [rsp + rsp_offsetof_arguments + 0h] ;; handler funclet address ALTERNATE_ENTRY RhpCallFinallyFunclet2 - mov rdx, [rsp + rsp_offsetof_arguments + 8h] ;; rdx <- regdisplay - - mov rax, [rdx + OFFSETOF__REGDISPLAY__pRbx] - mov [rax] , rbx - mov rax, [rdx + OFFSETOF__REGDISPLAY__pRbp] - mov [rax] , rbp - mov rax, [rdx + OFFSETOF__REGDISPLAY__pRsi] - mov [rax] , rsi - mov rax, [rdx + OFFSETOF__REGDISPLAY__pRdi] - mov [rax] , rdi - mov rax, [rdx + OFFSETOF__REGDISPLAY__pR12] - mov [rax] , r12 - mov rax, [rdx + OFFSETOF__REGDISPLAY__pR13] - mov [rax] , r13 - mov rax, [rdx + OFFSETOF__REGDISPLAY__pR14] - mov [rax] , r14 - mov rax, [rdx + OFFSETOF__REGDISPLAY__pR15] - mov [rax] , r15 - - movdqa [rdx + OFFSETOF__REGDISPLAY__Xmm + 0*10h], xmm6 - movdqa [rdx + OFFSETOF__REGDISPLAY__Xmm + 1*10h], xmm7 - movdqa [rdx + OFFSETOF__REGDISPLAY__Xmm + 2*10h], xmm8 - movdqa [rdx + OFFSETOF__REGDISPLAY__Xmm + 3*10h], xmm9 - movdqa [rdx + OFFSETOF__REGDISPLAY__Xmm + 4*10h], xmm10 - - movdqa [rdx + OFFSETOF__REGDISPLAY__Xmm + 5*10h], xmm11 - movdqa [rdx + OFFSETOF__REGDISPLAY__Xmm + 6*10h], xmm12 - movdqa [rdx + OFFSETOF__REGDISPLAY__Xmm + 7*10h], xmm13 - movdqa [rdx + OFFSETOF__REGDISPLAY__Xmm + 8*10h], xmm14 - movdqa [rdx + OFFSETOF__REGDISPLAY__Xmm + 9*10h], xmm15 - mov rax, [rsp + rsp_offsetof_thread] ;; rax <- Thread* lock or dword ptr [rax + OFFSETOF__Thread__m_ThreadStateFlags], TSF_DoNotTriggerGc diff --git a/src/runtime/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj b/src/runtime/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj index d7f5454259e..f687c6bb354 100644 --- a/src/runtime/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj +++ b/src/runtime/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj @@ -158,6 +158,7 @@ + @@ -168,7 +169,6 @@ - @@ -277,9 +277,6 @@ Interop\Windows\Ole32\Interop.CoGetApartmentType.cs - - Interop\Windows\Ole32\Interop.CoGetContextToken.cs - Interop\Windows\OleAut32\Interop.VariantClear.cs @@ -575,11 +572,7 @@ - + diff --git a/src/runtime/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Diagnostics/Debugger.cs b/src/runtime/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Diagnostics/Debugger.cs index 2c23ff3a06e..5308b888c60 100644 --- a/src/runtime/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Diagnostics/Debugger.cs +++ b/src/runtime/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Diagnostics/Debugger.cs @@ -41,17 +41,6 @@ public static void NotifyOfCrossThreadDependency() // nothing to do...yet } - /// - /// Constants representing the importance level of messages to be logged. - /// - /// An attached debugger can enable or disable which messages will - /// actually be reported to the user through the CLR debugger - /// services API. This info is communicated to the runtime so only - /// desired events are actually reported to the debugger. - /// Constant representing the default category - /// - public static readonly string DefaultCategory; - /// /// Posts a message for the attached debugger. If there is no /// debugger attached, has no effect. The debugger may or may not diff --git a/src/runtime/src/coreclr/nativeaot/System.Private.CoreLib/src/System/GC.NativeAot.cs b/src/runtime/src/coreclr/nativeaot/System.Private.CoreLib/src/System/GC.NativeAot.cs index 67d09f8b246..6f6aec5df68 100644 --- a/src/runtime/src/coreclr/nativeaot/System.Private.CoreLib/src/System/GC.NativeAot.cs +++ b/src/runtime/src/coreclr/nativeaot/System.Private.CoreLib/src/System/GC.NativeAot.cs @@ -141,6 +141,11 @@ public static void Collect(int generation, GCCollectionMode mode, bool blocking) } public static void Collect(int generation, GCCollectionMode mode, bool blocking, bool compacting) + { + Collect(generation, mode, blocking, compacting, lowMemoryPressure: false); + } + + internal static void Collect(int generation, GCCollectionMode mode, bool blocking, bool compacting, bool lowMemoryPressure) { ArgumentOutOfRangeException.ThrowIfNegative(generation); @@ -186,7 +191,7 @@ public static void Collect(int generation, GCCollectionMode mode, bool blocking, iInternalModes |= (int)InternalGCCollectionMode.NonBlocking; } - RuntimeImports.RhCollect(generation, (InternalGCCollectionMode)iInternalModes); + RuntimeImports.RhCollect(generation, (InternalGCCollectionMode)iInternalModes, lowMemoryPressure); } /// diff --git a/src/runtime/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/InteropServices/ComAwareWeakReference.NativeAot.cs b/src/runtime/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/InteropServices/ComAwareWeakReference.NativeAot.cs new file mode 100644 index 00000000000..6e630e096fd --- /dev/null +++ b/src/runtime/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/InteropServices/ComAwareWeakReference.NativeAot.cs @@ -0,0 +1,27 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System; +using System.Runtime.CompilerServices; + +namespace System +{ + internal sealed partial class ComAwareWeakReference + { + internal static unsafe object? ComWeakRefToObject(IntPtr pComWeakRef, object? context) + { + return ComWeakRefToComWrappersObject(pComWeakRef, context); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + internal static unsafe bool PossiblyComObject(object target) + { + return PossiblyComWrappersObject(target); + } + + internal static unsafe IntPtr ObjectToComWeakRef(object target, out object? context) + { + return ComWrappersObjectToComWeakRef(target, out context); + } + } +} diff --git a/src/runtime/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.NativeAot.cs b/src/runtime/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.NativeAot.cs index 88f39236357..0cc40f0f46c 100644 --- a/src/runtime/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.NativeAot.cs +++ b/src/runtime/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.NativeAot.cs @@ -18,1461 +18,42 @@ namespace System.Runtime.InteropServices /// public abstract partial class ComWrappers { - private const int TrackerRefShift = 32; - private const ulong TrackerRefCounter = 1UL << TrackerRefShift; - private const ulong DestroySentinel = 0x0000000080000000UL; - private const ulong TrackerRefCountMask = 0xffffffff00000000UL; - private const ulong ComRefCountMask = 0x000000007fffffffUL; - private const int COR_E_ACCESSING_CCW = unchecked((int)0x80131544); - - internal static IntPtr DefaultIUnknownVftblPtr { get; } = CreateDefaultIUnknownVftbl(); - internal static IntPtr TaggedImplVftblPtr { get; } = CreateTaggedImplVftbl(); - internal static IntPtr DefaultIReferenceTrackerTargetVftblPtr { get; } = CreateDefaultIReferenceTrackerTargetVftbl(); - - internal static readonly Guid IID_IUnknown = new Guid(0x00000000, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46); - internal static readonly Guid IID_IReferenceTrackerTarget = new Guid(0x64bd43f8, 0xbfee, 0x4ec4, 0xb7, 0xeb, 0x29, 0x35, 0x15, 0x8d, 0xae, 0x21); - internal static readonly Guid IID_TaggedImpl = new Guid(0x5c13e51c, 0x4f32, 0x4726, 0xa3, 0xfd, 0xf3, 0xed, 0xd6, 0x3d, 0xa3, 0xa0); - internal static readonly Guid IID_IReferenceTracker = new Guid(0x11D3B13A, 0x180E, 0x4789, 0xA8, 0xBE, 0x77, 0x12, 0x88, 0x28, 0x93, 0xE6); - internal static readonly Guid IID_IReferenceTrackerHost = new Guid(0x29a71c6a, 0x3c42, 0x4416, 0xa3, 0x9d, 0xe2, 0x82, 0x5a, 0x7, 0xa7, 0x73); - internal static readonly Guid IID_IReferenceTrackerManager = new Guid(0x3cf184b4, 0x7ccb, 0x4dda, 0x84, 0x55, 0x7e, 0x6c, 0xe9, 0x9a, 0x32, 0x98); - internal static readonly Guid IID_IFindReferenceTargetsCallback = new Guid(0x04b3486c, 0x4687, 0x4229, 0x8d, 0x14, 0x50, 0x5a, 0xb5, 0x84, 0xdd, 0x88); - - private static readonly Guid IID_IInspectable = new Guid(0xAF86E2E0, 0xB12D, 0x4c6a, 0x9C, 0x5A, 0xD7, 0xAA, 0x65, 0x10, 0x1E, 0x90); - private static readonly Guid IID_IWeakReferenceSource = new Guid(0x00000038, 0, 0, 0xC0, 0, 0, 0, 0, 0, 0, 0x46); - - private static readonly ConditionalWeakTable s_nativeObjectWrapperTable = new ConditionalWeakTable(); - private static readonly GCHandleSet s_referenceTrackerNativeObjectWrapperCache = new GCHandleSet(); - - private readonly ConditionalWeakTable _managedObjectWrapperTable = new ConditionalWeakTable(); - private readonly RcwCache _rcwCache = new(); - - internal static bool TryGetComInstanceForIID(object obj, Guid iid, out IntPtr unknown, out long wrapperId) - { - if (obj == null - || !s_nativeObjectWrapperTable.TryGetValue(obj, out NativeObjectWrapper? wrapper)) - { - unknown = IntPtr.Zero; - wrapperId = 0; - return false; - } - - wrapperId = wrapper.ComWrappers.id; - return Marshal.QueryInterface(wrapper.ExternalComObject, iid, out unknown) == HResults.S_OK; - } - - public static unsafe bool TryGetComInstance(object obj, out IntPtr unknown) - { - unknown = IntPtr.Zero; - if (obj == null - || !s_nativeObjectWrapperTable.TryGetValue(obj, out NativeObjectWrapper? wrapper)) - { - return false; - } - - return Marshal.QueryInterface(wrapper.ExternalComObject, IID_IUnknown, out unknown) == HResults.S_OK; - } - - public static unsafe bool TryGetObject(IntPtr unknown, [NotNullWhen(true)] out object? obj) - { - obj = null; - if (unknown == IntPtr.Zero) - { - return false; - } - - ComInterfaceDispatch* comInterfaceDispatch = TryGetComInterfaceDispatch(unknown); - if (comInterfaceDispatch == null || - ComInterfaceDispatch.ToManagedObjectWrapper(comInterfaceDispatch)->MarkedToDestroy) - { - return false; - } - - obj = ComInterfaceDispatch.GetInstance(comInterfaceDispatch); - return true; - } - - /// - /// ABI for function dispatch of a COM interface. - /// - public unsafe partial struct ComInterfaceDispatch - { - /// - /// Given a from a generated Vtable, convert to the target type. - /// - /// Desired type. - /// Pointer supplied to Vtable function entry. - /// Instance of type associated with dispatched function call. - public static unsafe T GetInstance(ComInterfaceDispatch* dispatchPtr) where T : class - { - ManagedObjectWrapper* comInstance = ToManagedObjectWrapper(dispatchPtr); - return Unsafe.As(comInstance->Holder.WrappedObject); - } - - internal static unsafe ManagedObjectWrapper* ToManagedObjectWrapper(ComInterfaceDispatch* dispatchPtr) - { - InternalComInterfaceDispatch* dispatch = (InternalComInterfaceDispatch*)unchecked((nuint)dispatchPtr & (nuint)InternalComInterfaceDispatch.DispatchAlignmentMask); - return dispatch->_thisPtr; - } - } - - internal unsafe struct InternalComInterfaceDispatch - { -#if TARGET_64BIT - internal const int DispatchAlignment = 64; - internal const int NumEntriesInDispatchTable = DispatchAlignment / 8 /* sizeof(void*) */ - 1; -#else - internal const int DispatchAlignment = 16; - internal const int NumEntriesInDispatchTable = DispatchAlignment / 4 /* sizeof(void*) */ - 1; -#endif - internal const ulong DispatchAlignmentMask = unchecked((ulong)~(InternalComInterfaceDispatch.DispatchAlignment - 1)); - - internal ManagedObjectWrapper* _thisPtr; - - public DispatchTable Vtables; - - [InlineArray(NumEntriesInDispatchTable)] - internal unsafe struct DispatchTable - { - private IntPtr _element; - } - } - - internal enum CreateComInterfaceFlagsEx - { - None = 0, - - /// - /// The caller will provide an IUnknown Vtable. - /// - /// - /// This is useful in scenarios when the caller has no need to rely on an IUnknown instance - /// that is used when running managed code is not possible (i.e. during a GC). In traditional - /// COM scenarios this is common, but scenarios involving Reference Tracker hosting - /// calling of the IUnknown API during a GC is possible. - /// - CallerDefinedIUnknown = 1, - - /// - /// Flag used to indicate the COM interface should implement IReferenceTrackerTarget. - /// When this flag is passed, the resulting COM interface will have an internal implementation of IUnknown - /// and as such none should be supplied by the caller. - /// - TrackerSupport = 2, - - LacksICustomQueryInterface = 1 << 29, - IsComActivated = 1 << 30, - IsPegged = 1 << 31, - - InternalMask = IsPegged | IsComActivated | LacksICustomQueryInterface, - } - - internal unsafe struct ManagedObjectWrapper - { - public volatile IntPtr HolderHandle; // This is GC Handle - public ulong RefCount; - - public int UserDefinedCount; - public ComInterfaceEntry* UserDefined; - internal InternalComInterfaceDispatch* Dispatches; - - internal CreateComInterfaceFlagsEx Flags; - - public bool IsRooted - { - get - { - ulong refCount = Interlocked.Read(ref RefCount); - bool rooted = GetComCount(refCount) > 0; - if (!rooted) - { - rooted = GetTrackerCount(refCount) > 0 && - ((Flags & CreateComInterfaceFlagsEx.IsPegged) != 0 || TrackerObjectManager.s_isGlobalPeggingOn); - } - return rooted; - } - } - - public ManagedObjectWrapperHolder? Holder - { - get - { - IntPtr handle = HolderHandle; - if (handle == IntPtr.Zero) - return null; - else - return Unsafe.As(GCHandle.FromIntPtr(handle).Target); - } - } - - public readonly bool MarkedToDestroy => IsMarkedToDestroy(RefCount); - - public uint AddRef() - { - return GetComCount(Interlocked.Increment(ref RefCount)); - } - - public uint Release() - { - Debug.Assert(GetComCount(RefCount) != 0); - return GetComCount(Interlocked.Decrement(ref RefCount)); - } - - public uint AddRefFromReferenceTracker() - { - ulong prev; - ulong curr; - do - { - prev = RefCount; - curr = prev + TrackerRefCounter; - } while (Interlocked.CompareExchange(ref RefCount, curr, prev) != prev); - - return GetTrackerCount(curr); - } - - public uint ReleaseFromReferenceTracker() - { - Debug.Assert(GetTrackerCount(RefCount) != 0); - ulong prev; - ulong curr; - do - { - prev = RefCount; - curr = prev - TrackerRefCounter; - } - while (Interlocked.CompareExchange(ref RefCount, curr, prev) != prev); - - // If we observe the destroy sentinel, then this release - // must destroy the wrapper. - if (curr == DestroySentinel) - Destroy(); - - return GetTrackerCount(curr); - } - - public uint Peg() - { - SetFlag(CreateComInterfaceFlagsEx.IsPegged); - return HResults.S_OK; - } - - public uint Unpeg() - { - ResetFlag(CreateComInterfaceFlagsEx.IsPegged); - return HResults.S_OK; - } - - - public unsafe int QueryInterfaceForTracker(in Guid riid, out IntPtr ppvObject) - { - if (IsMarkedToDestroy(RefCount) || Holder is null) - { - ppvObject = IntPtr.Zero; - return COR_E_ACCESSING_CCW; - } - - return QueryInterface(in riid, out ppvObject); - } - - public unsafe int QueryInterface(in Guid riid, out IntPtr ppvObject) - { - ppvObject = AsRuntimeDefined(in riid); - if (ppvObject == IntPtr.Zero) - { - if ((Flags & CreateComInterfaceFlagsEx.LacksICustomQueryInterface) == 0) - { - var customQueryInterface = Holder.WrappedObject as ICustomQueryInterface; - if (customQueryInterface is null) - { - SetFlag(CreateComInterfaceFlagsEx.LacksICustomQueryInterface); - } - else - { - Guid riidLocal = riid; - switch (customQueryInterface.GetInterface(ref riidLocal, out ppvObject)) - { - case CustomQueryInterfaceResult.Handled: - return HResults.S_OK; - case CustomQueryInterfaceResult.NotHandled: - break; - case CustomQueryInterfaceResult.Failed: - return HResults.COR_E_INVALIDCAST; - } - } - } - - ppvObject = AsUserDefined(in riid); - if (ppvObject == IntPtr.Zero) - return HResults.COR_E_INVALIDCAST; - } - - AddRef(); - return HResults.S_OK; - } - - public IntPtr As(in Guid riid) - { - // Find target interface and return dispatcher or null if not found. - IntPtr typeMaybe = AsRuntimeDefined(in riid); - if (typeMaybe == IntPtr.Zero) - typeMaybe = AsUserDefined(in riid); - - return typeMaybe; - } - - /// true if actually destroyed - public unsafe bool Destroy() - { - Debug.Assert(GetComCount(RefCount) == 0 || HolderHandle == IntPtr.Zero); - - if (HolderHandle == IntPtr.Zero) - { - // We either were previously destroyed or multiple ManagedObjectWrapperHolder - // were created by the ConditionalWeakTable for the same object and we lost the race. - return true; - } - - ulong prev, refCount; - do - { - prev = RefCount; - refCount = prev | DestroySentinel; - } while (Interlocked.CompareExchange(ref RefCount, refCount, prev) != prev); - - if (refCount == DestroySentinel) - { - IntPtr handle = Interlocked.Exchange(ref HolderHandle, IntPtr.Zero); - if (handle != IntPtr.Zero) - { - RuntimeImports.RhHandleFree(handle); - } - return true; - } - else - { - return false; - } - } - - private unsafe IntPtr GetDispatchPointerAtIndex(int index) - { - InternalComInterfaceDispatch* dispatch = &Dispatches[index / InternalComInterfaceDispatch.NumEntriesInDispatchTable]; - IntPtr* vtables = (IntPtr*)(void*)&dispatch->Vtables; - return (IntPtr)(&vtables[index % InternalComInterfaceDispatch.NumEntriesInDispatchTable]); - } - - private unsafe IntPtr AsRuntimeDefined(in Guid riid) - { - // The order of interface lookup here is important. - // See CreateManagedObjectWrapper() for the expected order. - int i = UserDefinedCount; - if ((Flags & CreateComInterfaceFlagsEx.CallerDefinedIUnknown) == 0) - { - if (riid == IID_IUnknown) - { - return GetDispatchPointerAtIndex(i); - } - - i++; - } - - if ((Flags & CreateComInterfaceFlagsEx.TrackerSupport) != 0) - { - if (riid == IID_IReferenceTrackerTarget) - { - return GetDispatchPointerAtIndex(i); - } - - i++; - } - - { - if (riid == IID_TaggedImpl) - { - return GetDispatchPointerAtIndex(i); - } - } - - return IntPtr.Zero; - } - - private unsafe IntPtr AsUserDefined(in Guid riid) - { - for (int i = 0; i < UserDefinedCount; ++i) - { - if (UserDefined[i].IID == riid) - { - return GetDispatchPointerAtIndex(i); - } - } - - return IntPtr.Zero; - } - - private void SetFlag(CreateComInterfaceFlagsEx flag) - { - int setMask = (int)flag; - Interlocked.Or(ref Unsafe.As(ref Flags), setMask); - } - - private void ResetFlag(CreateComInterfaceFlagsEx flag) - { - int resetMask = ~(int)flag; - Interlocked.And(ref Unsafe.As(ref Flags), resetMask); - } - - private static uint GetTrackerCount(ulong c) - { - return (uint)((c & TrackerRefCountMask) >> TrackerRefShift); - } - - private static uint GetComCount(ulong c) - { - return (uint)(c & ComRefCountMask); - } - - private static bool IsMarkedToDestroy(ulong c) - { - return (c & DestroySentinel) != 0; - } - } - - internal sealed unsafe class ManagedObjectWrapperHolder - { - static ManagedObjectWrapperHolder() - { - delegate* unmanaged callback = &IsRootedCallback; - if (!RuntimeImports.RhRegisterRefCountedHandleCallback((nint)callback, MethodTable.Of())) - { - throw new OutOfMemoryException(); - } - } - - [UnmanagedCallersOnly] - private static bool IsRootedCallback(IntPtr pObj) - { - // We are paused in the GC, so this is safe. - ManagedObjectWrapperHolder* holder = (ManagedObjectWrapperHolder*)&pObj; - return holder->_wrapper->IsRooted; - } - - private readonly ManagedObjectWrapper* _wrapper; - private readonly ManagedObjectWrapperReleaser _releaser; - private readonly object _wrappedObject; - - public ManagedObjectWrapperHolder(ManagedObjectWrapper* wrapper, object wrappedObject) - { - _wrapper = wrapper; - _wrappedObject = wrappedObject; - _releaser = new ManagedObjectWrapperReleaser(wrapper); - _wrapper->HolderHandle = RuntimeImports.RhHandleAllocRefCounted(this); - } - - public unsafe IntPtr ComIp => _wrapper->As(in ComWrappers.IID_IUnknown); - - public object WrappedObject => _wrappedObject; - - public uint AddRef() => _wrapper->AddRef(); - } - - internal sealed unsafe class ManagedObjectWrapperReleaser - { - private ManagedObjectWrapper* _wrapper; - - public ManagedObjectWrapperReleaser(ManagedObjectWrapper* wrapper) - { - _wrapper = wrapper; - } - - ~ManagedObjectWrapperReleaser() - { - IntPtr refCountedHandle = _wrapper->HolderHandle; - if (refCountedHandle != IntPtr.Zero && RuntimeImports.RhHandleGet(refCountedHandle) != null) - { - // The ManagedObjectWrapperHolder has not been fully collected, so it is still - // potentially reachable via the Conditional Weak Table. - // Keep ourselves alive in case the wrapped object is resurrected. - GC.ReRegisterForFinalize(this); - return; - } - - // Release GC handle created when MOW was built. - if (_wrapper->Destroy()) - { - NativeMemory.AlignedFree(_wrapper); - _wrapper = null; - } - else - { - // There are still outstanding references on the COM side. - // This case should only be hit when an outstanding - // tracker refcount exists from AddRefFromReferenceTracker. - GC.ReRegisterForFinalize(this); - } - } - } - - internal unsafe class NativeObjectWrapper - { - private IntPtr _externalComObject; - private IntPtr _inner; - private ComWrappers _comWrappers; - private GCHandle _proxyHandle; - private GCHandle _proxyHandleTrackingResurrection; - private readonly bool _aggregatedManagedObjectWrapper; - private readonly bool _uniqueInstance; - - static NativeObjectWrapper() - { - // Registering the weak reference support callbacks to enable - // consulting ComWrappers when weak references are created - // for RCWs. - ComAwareWeakReference.InitializeCallbacks(&ComWeakRefToObject, &PossiblyComObject, &ObjectToComWeakRef); - } - - public static NativeObjectWrapper Create( - IntPtr externalComObject, - IntPtr inner, - ComWrappers comWrappers, - object comProxy, - CreateObjectFlags flags, - ref IntPtr referenceTrackerMaybe) - { - if (flags.HasFlag(CreateObjectFlags.TrackerObject)) - { - IntPtr trackerObject = referenceTrackerMaybe; - - // We're taking ownership of this reference tracker object, so reset the reference - referenceTrackerMaybe = IntPtr.Zero; - - // If we already have a reference tracker (that will be the case in aggregation scenarios), then reuse it. - // Otherwise, do the 'QueryInterface' call for it here. This allows us to only ever query for this IID once. - if (trackerObject != IntPtr.Zero || - Marshal.QueryInterface(externalComObject, IID_IReferenceTracker, out trackerObject) == HResults.S_OK) - { - return new ReferenceTrackerNativeObjectWrapper(externalComObject, inner, comWrappers, comProxy, flags, trackerObject); - } - } - - return new NativeObjectWrapper(externalComObject, inner, comWrappers, comProxy, flags); - } - - protected NativeObjectWrapper(IntPtr externalComObject, IntPtr inner, ComWrappers comWrappers, object comProxy, CreateObjectFlags flags) - { - _externalComObject = externalComObject; - _inner = inner; - _comWrappers = comWrappers; - _uniqueInstance = flags.HasFlag(CreateObjectFlags.UniqueInstance); - _proxyHandle = GCHandle.Alloc(comProxy, GCHandleType.Weak); - - // We have a separate handle tracking resurrection as we want to make sure - // we clean up the NativeObjectWrapper only after the RCW has been finalized - // due to it can access the native object in the finalizer. At the same time, - // we want other callers which are using ProxyHandle such as the reference tracker runtime - // to see the object as not alive once it is eligible for finalization. - _proxyHandleTrackingResurrection = GCHandle.Alloc(comProxy, GCHandleType.WeakTrackResurrection); - - // If this is an aggregation scenario and the identity object - // is a managed object wrapper, we need to call Release() to - // indicate this external object isn't rooted. In the event the - // object is passed out to native code an AddRef() must be called - // based on COM convention and will "fix" the count. - _aggregatedManagedObjectWrapper = flags.HasFlag(CreateObjectFlags.Aggregation) && TryGetComInterfaceDispatch(_externalComObject) != null; - if (_aggregatedManagedObjectWrapper) - { - Marshal.Release(externalComObject); - } - } - - internal IntPtr ExternalComObject => _externalComObject; - internal ComWrappers ComWrappers => _comWrappers; - internal GCHandle ProxyHandle => _proxyHandle; - internal bool IsUniqueInstance => _uniqueInstance; - internal bool IsAggregatedWithManagedObjectWrapper => _aggregatedManagedObjectWrapper; - - public virtual void Release() - { - if (!_uniqueInstance && _comWrappers is not null) - { - _comWrappers._rcwCache.Remove(_externalComObject, this); - _comWrappers = null; - } - - if (_proxyHandle.IsAllocated) - { - _proxyHandle.Free(); - } - - if (_proxyHandleTrackingResurrection.IsAllocated) - { - _proxyHandleTrackingResurrection.Free(); - } - - // If the inner was supplied, we need to release our reference. - if (_inner != IntPtr.Zero) - { - Marshal.Release(_inner); - _inner = IntPtr.Zero; - } - - _externalComObject = IntPtr.Zero; - } - - ~NativeObjectWrapper() - { - if (_proxyHandleTrackingResurrection.IsAllocated && _proxyHandleTrackingResurrection.Target != null) - { - // The RCW object has not been fully collected, so it still - // can make calls on the native object in its finalizer. - // Keep ourselves alive until it is finalized. - GC.ReRegisterForFinalize(this); - return; - } - - Release(); - } - } - - internal sealed class ReferenceTrackerNativeObjectWrapper : NativeObjectWrapper - { - private IntPtr _trackerObject; - private readonly bool _releaseTrackerObject; - private int _trackerObjectDisconnected; // Atomic boolean, so using int. - internal readonly IntPtr _contextToken; - internal readonly GCHandle _nativeObjectWrapperWeakHandle; - - public IntPtr TrackerObject => (_trackerObject == IntPtr.Zero || _trackerObjectDisconnected == 1) ? IntPtr.Zero : _trackerObject; - - public ReferenceTrackerNativeObjectWrapper( - nint externalComObject, - nint inner, - ComWrappers comWrappers, - object comProxy, - CreateObjectFlags flags, - IntPtr trackerObject) - : base(externalComObject, inner, comWrappers, comProxy, flags) - { - Debug.Assert(flags.HasFlag(CreateObjectFlags.TrackerObject)); - Debug.Assert(trackerObject != IntPtr.Zero); - - _trackerObject = trackerObject; - _releaseTrackerObject = true; - - TrackerObjectManager.OnIReferenceTrackerFound(_trackerObject); - TrackerObjectManager.AfterWrapperCreated(_trackerObject); - - if (flags.HasFlag(CreateObjectFlags.Aggregation)) - { - // Aggregation with an IReferenceTracker instance creates an extra AddRef() - // on the outer (e.g. MOW) so we clean up that issue here. - _releaseTrackerObject = false; - IReferenceTracker.ReleaseFromTrackerSource(_trackerObject); // IReferenceTracker - Marshal.Release(_trackerObject); - } - - _contextToken = GetContextToken(); - _nativeObjectWrapperWeakHandle = GCHandle.Alloc(this, GCHandleType.Weak); - } - - public override void Release() - { - // Remove the entry from the cache that keeps track of the active NativeObjectWrappers. - if (_nativeObjectWrapperWeakHandle.IsAllocated) - { - s_referenceTrackerNativeObjectWrapperCache.Remove(_nativeObjectWrapperWeakHandle); - _nativeObjectWrapperWeakHandle.Free(); - } - - DisconnectTracker(); - - base.Release(); - } - - public void DisconnectTracker() - { - // Return if already disconnected or the tracker isn't set. - if (_trackerObject == IntPtr.Zero || Interlocked.CompareExchange(ref _trackerObjectDisconnected, 1, 0) != 0) - { - return; - } - - // Always release the tracker source during a disconnect. - // This to account for the implied IUnknown ownership by the runtime. - IReferenceTracker.ReleaseFromTrackerSource(_trackerObject); // IUnknown - - // Disconnect from the tracker. - if (_releaseTrackerObject) - { - IReferenceTracker.ReleaseFromTrackerSource(_trackerObject); // IReferenceTracker - Marshal.Release(_trackerObject); - _trackerObject = IntPtr.Zero; - } - } - } - - /// - /// Globally registered instance of the ComWrappers class for reference tracker support. - /// - private static ComWrappers? s_globalInstanceForTrackerSupport; - - /// - /// Globally registered instance of the ComWrappers class for marshalling. - /// - private static ComWrappers? s_globalInstanceForMarshalling; - - private static long s_instanceCounter; - private readonly long id = Interlocked.Increment(ref s_instanceCounter); - - internal static object? GetOrCreateObjectFromWrapper(long wrapperId, IntPtr externalComObject) - { - if (s_globalInstanceForTrackerSupport != null && s_globalInstanceForTrackerSupport.id == wrapperId) - { - return s_globalInstanceForTrackerSupport.GetOrCreateObjectForComInstance(externalComObject, CreateObjectFlags.TrackerObject); - } - else if (s_globalInstanceForMarshalling != null && s_globalInstanceForMarshalling.id == wrapperId) - { - return ComObjectForInterface(externalComObject); - } - else - { - return null; - } - } - - // Custom type instead of a value tuple to avoid rooting 'ITuple' and other value tuple stuff - private struct GetOrCreateComInterfaceForObjectParameters - { - public ComWrappers? This; - public CreateComInterfaceFlags Flags; - } - - /// - /// Create a COM representation of the supplied object that can be passed to a non-managed environment. - /// - /// The managed object to expose outside the .NET runtime. - /// Flags used to configure the generated interface. - /// The generated COM interface that can be passed outside the .NET runtime. - /// - /// If a COM representation was previously created for the specified using - /// this instance, the previously created COM interface will be returned. - /// If not, a new one will be created. - /// - public unsafe IntPtr GetOrCreateComInterfaceForObject(object instance, CreateComInterfaceFlags flags) - { - ArgumentNullException.ThrowIfNull(instance); - - ManagedObjectWrapperHolder managedObjectWrapper = _managedObjectWrapperTable.GetOrAdd(instance, static (c, items) => - { - ManagedObjectWrapper* value = items.This!.CreateManagedObjectWrapper(c, items.Flags); - return new ManagedObjectWrapperHolder(value, c); - }, new GetOrCreateComInterfaceForObjectParameters { This = this, Flags = flags }); - - managedObjectWrapper.AddRef(); - return managedObjectWrapper.ComIp; - } - - private static nuint AlignUp(nuint value, nuint alignment) - { - nuint alignMask = alignment - 1; - return (nuint)((value + alignMask) & ~alignMask); - } - - private unsafe ManagedObjectWrapper* CreateManagedObjectWrapper(object instance, CreateComInterfaceFlags flags) - { - ComInterfaceEntry* userDefined = ComputeVtables(instance, flags, out int userDefinedCount); - if ((userDefined == null && userDefinedCount != 0) || userDefinedCount < 0) - { - throw new ArgumentException(); - } - - // Maximum number of runtime supplied vtables. - Span runtimeDefinedVtable = stackalloc IntPtr[3]; - int runtimeDefinedCount = 0; - - // Check if the caller will provide the IUnknown table. - if ((flags & CreateComInterfaceFlags.CallerDefinedIUnknown) == CreateComInterfaceFlags.None) - { - runtimeDefinedVtable[runtimeDefinedCount++] = DefaultIUnknownVftblPtr; - } - - if ((flags & CreateComInterfaceFlags.TrackerSupport) != 0) - { - runtimeDefinedVtable[runtimeDefinedCount++] = DefaultIReferenceTrackerTargetVftblPtr; - } - - { - runtimeDefinedVtable[runtimeDefinedCount++] = TaggedImplVftblPtr; - } - - // Compute size for ManagedObjectWrapper instance. - int totalDefinedCount = runtimeDefinedCount + userDefinedCount; - - int numSections = totalDefinedCount / InternalComInterfaceDispatch.NumEntriesInDispatchTable; - if (totalDefinedCount % InternalComInterfaceDispatch.NumEntriesInDispatchTable != 0) - { - // Account for a trailing partial section to fit all of the defined interfaces. - numSections++; - } - - nuint headerSize = AlignUp((nuint)sizeof(ManagedObjectWrapper), InternalComInterfaceDispatch.DispatchAlignment); - - // Instead of allocating a full section even when we have a trailing one, we'll allocate only - // as much space as we need to store all of our dispatch tables. - nuint dispatchSectionSize = (nuint)totalDefinedCount * (nuint)sizeof(void*) + (nuint)numSections * (nuint)sizeof(void*); - - // Allocate memory for the ManagedObjectWrapper with the correct alignment for our dispatch tables. - IntPtr wrapperMem = (IntPtr)NativeMemory.AlignedAlloc( - headerSize + dispatchSectionSize, - InternalComInterfaceDispatch.DispatchAlignment); - - // Dispatches follow the ManagedObjectWrapper. - InternalComInterfaceDispatch* pDispatches = (InternalComInterfaceDispatch*)((nuint)wrapperMem + headerSize); - Span dispatches = new Span(pDispatches, numSections); - for (int i = 0; i < dispatches.Length; i++) - { - dispatches[i]._thisPtr = (ManagedObjectWrapper*)wrapperMem; - Span dispatchVtables = dispatches[i].Vtables; - for (int j = 0; j < dispatchVtables.Length; j++) - { - int index = i * dispatchVtables.Length + j; - if (index >= totalDefinedCount) - { - break; - } - dispatchVtables[j] = (index < userDefinedCount) ? userDefined[index].Vtable : runtimeDefinedVtable[index - userDefinedCount]; - } - } - - ManagedObjectWrapper* mow = (ManagedObjectWrapper*)wrapperMem; - mow->HolderHandle = IntPtr.Zero; - mow->RefCount = 0; - mow->UserDefinedCount = userDefinedCount; - mow->UserDefined = userDefined; - mow->Flags = (CreateComInterfaceFlagsEx)flags; - mow->Dispatches = pDispatches; - return mow; - } - - /// - /// Get the currently registered managed object or creates a new managed object and registers it. - /// - /// Object to import for usage into the .NET runtime. - /// Flags used to describe the external object. - /// Returns a managed object associated with the supplied external COM object. - /// - /// If a managed object was previously created for the specified - /// using this instance, the previously created object will be returned. - /// If not, a new one will be created. - /// - public object GetOrCreateObjectForComInstance(IntPtr externalComObject, CreateObjectFlags flags) - { - object? obj; - if (!TryGetOrCreateObjectForComInstanceInternal(externalComObject, IntPtr.Zero, flags, null, out obj)) - throw new ArgumentNullException(nameof(externalComObject)); - - return obj; - } - - /// - /// Get the currently registered managed object or uses the supplied managed object and registers it. - /// - /// Object to import for usage into the .NET runtime. - /// Flags used to describe the external object. - /// The to be used as the wrapper for the external object - /// Returns a managed object associated with the supplied external COM object. - /// - /// If the instance already has an associated external object a will be thrown. - /// - public object GetOrRegisterObjectForComInstance(IntPtr externalComObject, CreateObjectFlags flags, object wrapper) - { - return GetOrRegisterObjectForComInstance(externalComObject, flags, wrapper, IntPtr.Zero); - } - - /// - /// Get the currently registered managed object or uses the supplied managed object and registers it. - /// - /// Object to import for usage into the .NET runtime. - /// Flags used to describe the external object. - /// The to be used as the wrapper for the external object - /// Inner for COM aggregation scenarios - /// Returns a managed object associated with the supplied external COM object. - /// - /// This method override is for registering an aggregated COM instance with its associated inner. The inner - /// will be released when the associated wrapper is eventually freed. Note that it will be released on a thread - /// in an unknown apartment state. If the supplied inner is not known to be a free-threaded instance then - /// it is advised to not supply the inner. - /// - /// If the instance already has an associated external object a will be thrown. - /// - public object GetOrRegisterObjectForComInstance(IntPtr externalComObject, CreateObjectFlags flags, object wrapper, IntPtr inner) - { - ArgumentNullException.ThrowIfNull(wrapper); - - object? obj; - if (!TryGetOrCreateObjectForComInstanceInternal(externalComObject, inner, flags, wrapper, out obj)) - throw new ArgumentNullException(nameof(externalComObject)); - - return obj; - } - - private static unsafe ComInterfaceDispatch* TryGetComInterfaceDispatch(IntPtr comObject) - { - // If the first Vtable entry is part of a ManagedObjectWrapper impl, - // we know how to interpret the IUnknown. - IntPtr knownQI = ((IntPtr*)((IntPtr*)comObject)[0])[0]; - if (knownQI != ((IntPtr*)DefaultIUnknownVftblPtr)[0] - || knownQI != ((IntPtr*)DefaultIReferenceTrackerTargetVftblPtr)[0]) - { - // It is possible the user has defined their own IUnknown impl so - // we fallback to the tagged interface approach to be sure. - if (0 != Marshal.QueryInterface(comObject, IID_TaggedImpl, out nint implMaybe)) - { - return null; - } - - IntPtr currentVersion = (IntPtr)(delegate* unmanaged)&ITaggedImpl_IsCurrentVersion; - int hr = ((delegate* unmanaged)(*(*(void***)implMaybe + 3 /* ITaggedImpl.IsCurrentVersion slot */)))(implMaybe, currentVersion); - Marshal.Release(implMaybe); - if (hr != 0) - { - return null; - } - } - - return (ComInterfaceDispatch*)comObject; - } - - private static void DetermineIdentityAndInner( - IntPtr externalComObject, - IntPtr innerMaybe, - CreateObjectFlags flags, - out IntPtr identity, - out IntPtr inner, - out IntPtr referenceTrackerMaybe) - { - inner = innerMaybe; - - IntPtr checkForIdentity = externalComObject; - - // Check if the flags indicate we are creating - // an object for an external IReferenceTracker instance - // that we are aggregating with. - bool refTrackerInnerScenario = flags.HasFlag(CreateObjectFlags.TrackerObject) - && flags.HasFlag(CreateObjectFlags.Aggregation); - if (refTrackerInnerScenario && - Marshal.QueryInterface(externalComObject, IID_IReferenceTracker, out IntPtr referenceTrackerPtr) == HResults.S_OK) - { - // We are checking the supplied external value - // for IReferenceTracker since in .NET 5 API usage scenarios - // this could actually be the inner and we want the true identity - // not the inner . This is a trick since the only way - // to get identity from an inner is through a non-IUnknown - // interface QI. Once we have the IReferenceTracker - // instance we can be sure the QI for IUnknown will really - // be the true identity. This allows us to keep the reference tracker - // reference alive, so we can reuse it later. - checkForIdentity = referenceTrackerPtr; - referenceTrackerMaybe = referenceTrackerPtr; - Marshal.ThrowExceptionForHR(Marshal.QueryInterface(checkForIdentity, IID_IUnknown, out identity)); - } - else - { - referenceTrackerMaybe = IntPtr.Zero; - Marshal.ThrowExceptionForHR(Marshal.QueryInterface(externalComObject, IID_IUnknown, out identity)); - } - - // Set the inner if scenario dictates an update. - if (innerMaybe == IntPtr.Zero && // User didn't supply inner - .NET 5 API scenario sanity check. - checkForIdentity != externalComObject && // Target of check was changed - .NET 5 API scenario sanity check. - externalComObject != identity && // The supplied object doesn't match the computed identity. - refTrackerInnerScenario) // The appropriate flags were set. - { - inner = externalComObject; - } - } - - /// - /// Get the currently registered managed object or creates a new managed object and registers it. - /// - /// Object to import for usage into the .NET runtime. - /// The inner instance if aggregation is involved - /// Flags used to describe the external object. - /// The to be used as the wrapper for the external object. - /// The managed object associated with the supplied external COM object or null if it could not be created. - /// Returns true if a managed object could be retrieved/created, false otherwise - private unsafe bool TryGetOrCreateObjectForComInstanceInternal( - IntPtr externalComObject, - IntPtr innerMaybe, - CreateObjectFlags flags, - object? wrapperMaybe, - [NotNullWhen(true)] out object? retValue) - { - if (externalComObject == IntPtr.Zero) - throw new ArgumentNullException(nameof(externalComObject)); - - if (innerMaybe != IntPtr.Zero && !flags.HasFlag(CreateObjectFlags.Aggregation)) - throw new InvalidOperationException(SR.InvalidOperation_SuppliedInnerMustBeMarkedAggregation); - - DetermineIdentityAndInner( - externalComObject, - innerMaybe, - flags, - out IntPtr identity, - out IntPtr inner, - out IntPtr referenceTrackerMaybe); - - try - { - // If the user has requested a unique instance, - // we will immediately create the object, register it, - // and return. - if (flags.HasFlag(CreateObjectFlags.UniqueInstance)) - { - retValue = CreateAndRegisterObjectForComInstance(identity, inner, flags, ref referenceTrackerMaybe); - return retValue is not null; - } - - // If we have a live cached wrapper currently, - // return that. - if (_rcwCache.FindProxyForComInstance(identity) is object liveCachedWrapper) - { - retValue = liveCachedWrapper; - return true; - } - - // If the user tried to provide a pre-created managed wrapper, try to register - // that object as the wrapper. - if (wrapperMaybe is not null) - { - retValue = RegisterObjectForComInstance(identity, inner, wrapperMaybe, flags, ref referenceTrackerMaybe); - return retValue is not null; - } - - // Check if the provided COM instance is actually a managed object wrapper from this - // ComWrappers instance, and use it if it is. - if (flags.HasFlag(CreateObjectFlags.Unwrap)) - { - ComInterfaceDispatch* comInterfaceDispatch = TryGetComInterfaceDispatch(identity); - if (comInterfaceDispatch != null) - { - // If we found a managed object wrapper in this ComWrappers instance - // and it has the same identity pointer as the one we're creating a NativeObjectWrapper for, - // unwrap it. We don't AddRef the wrapper as we don't take a reference to it. - // - // A managed object can have multiple managed object wrappers, with a max of one per context. - // Let's say we have a managed object A and ComWrappers instances C1 and C2. Let B1 and B2 be the - // managed object wrappers for A created with C1 and C2 respectively. - // If we are asked to create an EOC for B1 with the unwrap flag on the C2 ComWrappers instance, - // we will create a new wrapper. In this scenario, we'll only unwrap B2. - object unwrapped = ComInterfaceDispatch.GetInstance(comInterfaceDispatch); - if (_managedObjectWrapperTable.TryGetValue(unwrapped, out ManagedObjectWrapperHolder? unwrappedWrapperInThisContext)) - { - // The unwrapped object has a CCW in this context. Compare with identity - // so we can see if it's the CCW for the unwrapped object in this context. - if (unwrappedWrapperInThisContext.ComIp == identity) - { - retValue = unwrapped; - return true; - } - } - } - } - - // If the user didn't provide a wrapper and couldn't unwrap a managed object wrapper, - // create a new wrapper. - retValue = CreateAndRegisterObjectForComInstance(identity, inner, flags, ref referenceTrackerMaybe); - return retValue is not null; - } - finally - { - // Releasing a native object can never throw (it's a native call, so exceptions can't - // go through the ABI, it'd just crash the whole process). So we can use a single - // 'finally' block to release both native pointers we're holding in this scope. - Marshal.Release(identity); - - if (referenceTrackerMaybe != IntPtr.Zero) - { - Marshal.Release(referenceTrackerMaybe); - } - } - } - - private object? CreateAndRegisterObjectForComInstance( - IntPtr identity, - IntPtr inner, - CreateObjectFlags flags, - ref IntPtr referenceTrackerMaybe) - { - object? retValue = CreateObject(identity, flags); - if (retValue is null) - { - // If ComWrappers instance cannot create wrapper, we can do nothing here. - return null; - } - - return RegisterObjectForComInstance(identity, inner, retValue, flags, ref referenceTrackerMaybe); - } - - private object RegisterObjectForComInstance( - IntPtr identity, - IntPtr inner, - object comProxy, - CreateObjectFlags flags, - ref IntPtr referenceTrackerMaybe) - { - NativeObjectWrapper nativeObjectWrapper = NativeObjectWrapper.Create( - identity, - inner, - this, - comProxy, - flags, - ref referenceTrackerMaybe); - - object actualProxy = comProxy; - NativeObjectWrapper actualWrapper = nativeObjectWrapper; - if (!nativeObjectWrapper.IsUniqueInstance) - { - // Add our entry to the cache here, using an already existing entry if someone else beat us to it. - (actualWrapper, actualProxy) = _rcwCache.GetOrAddProxyForComInstance(identity, nativeObjectWrapper, comProxy); - if (actualWrapper != nativeObjectWrapper) - { - // We raced with another thread to map identity to nativeObjectWrapper - // and lost the race. We will use the other thread's nativeObjectWrapper, so we can release ours. - nativeObjectWrapper.Release(); - } - } - - // At this point, actualProxy is the RCW object for the identity - // and actualWrapper is the NativeObjectWrapper that is in the RCW cache (if not unique) that associates the identity with actualProxy. - // Register the NativeObjectWrapper to handle lifetime tracking of the references to the COM object. - RegisterWrapperForObject(actualWrapper, actualProxy); - - return actualProxy; - } - - private void RegisterWrapperForObject(NativeObjectWrapper wrapper, object comProxy) - { - // When we call into RegisterWrapperForObject, there is only one valid non-"unique instance" wrapper for a given - // COM instance, which is already registered in the RCW cache. - // If we find a wrapper in the table that is a different NativeObjectWrapper instance - // then it must be for a different COM instance. - // It's possible that we could race here with another thread that is trying to register the same comProxy - // for the same COM instance, but in that case we'll be passed the same NativeObjectWrapper instance - // for both threads. In that case, it doesn't matter which thread adds the entry to the NativeObjectWrapper table - // as the entry is always the same pair. - Debug.Assert(wrapper.ProxyHandle.Target == comProxy); - Debug.Assert(wrapper.IsUniqueInstance || _rcwCache.FindProxyForComInstance(wrapper.ExternalComObject) == comProxy); - - // Add the input wrapper bound to the COM proxy, if there isn't one already. If another thread raced - // against this one and this lost, we'd get the wrapper added from that thread instead. - NativeObjectWrapper registeredWrapper = s_nativeObjectWrapperTable.GetOrAdd(comProxy, wrapper); - - // We lost the race, so we cannot register the incoming wrapper with the target object - if (registeredWrapper != wrapper) - { - Debug.Assert(registeredWrapper.ExternalComObject != wrapper.ExternalComObject); - wrapper.Release(); - throw new NotSupportedException(); - } - - // Always register our wrapper to the reference tracker handle cache here. - // We may not be the thread that registered the handle, but we need to ensure that the wrapper - // is registered before we return to user code. Otherwise the wrapper won't be walked by the - // TrackerObjectManager and we could end up missing a section of the object graph. - // This cache deduplicates, so it is okay that the wrapper will be registered multiple times. - AddWrapperToReferenceTrackerHandleCache(registeredWrapper); - } - - private static void AddWrapperToReferenceTrackerHandleCache(NativeObjectWrapper wrapper) - { - if (wrapper is ReferenceTrackerNativeObjectWrapper referenceTrackerNativeObjectWrapper) - { - s_referenceTrackerNativeObjectWrapperCache.Add(referenceTrackerNativeObjectWrapper._nativeObjectWrapperWeakHandle); - } - } - - private sealed class RcwCache - { - private readonly Lock _lock = new Lock(useTrivialWaits: true); - private readonly Dictionary _cache = []; - - /// - /// Gets the current RCW proxy object for if it exists in the cache or inserts a new entry with . - /// - /// The com instance we want to get or record an RCW for. - /// The for . - /// The proxy object that is associated with . - /// The proxy object currently in the cache for or the proxy object owned by if no entry exists and the corresponding native wrapper. - public (NativeObjectWrapper actualWrapper, object actualProxy) GetOrAddProxyForComInstance(IntPtr comPointer, NativeObjectWrapper wrapper, object comProxy) - { - lock (_lock) - { - Debug.Assert(wrapper.ProxyHandle.Target == comProxy); - ref GCHandle rcwEntry = ref CollectionsMarshal.GetValueRefOrAddDefault(_cache, comPointer, out bool exists); - if (!exists) - { - // Someone else didn't beat us to adding the entry to the cache. - // Add our entry here. - rcwEntry = GCHandle.Alloc(wrapper, GCHandleType.Weak); - } - else if (rcwEntry.Target is not (NativeObjectWrapper cachedWrapper)) - { - Debug.Assert(rcwEntry.IsAllocated); - // The target was collected, so we need to update the cache entry. - rcwEntry.Target = wrapper; - } - else - { - object? existingProxy = cachedWrapper.ProxyHandle.Target; - // The target NativeObjectWrapper was not collected, but we need to make sure - // that the proxy object is still alive. - if (existingProxy is not null) - { - // The existing proxy object is still alive, we will use that. - return (cachedWrapper, existingProxy); - } - - // The proxy object was collected, so we need to update the cache entry. - rcwEntry.Target = wrapper; - } - - // We either added an entry to the cache or updated an existing entry that was dead. - // Return our target object. - return (wrapper, comProxy); - } - } - - public object? FindProxyForComInstance(IntPtr comPointer) - { - lock (_lock) - { - if (_cache.TryGetValue(comPointer, out GCHandle existingHandle)) - { - if (existingHandle.Target is NativeObjectWrapper { ProxyHandle.Target: object cachedProxy }) - { - // The target exists and is still alive. Return it. - return cachedProxy; - } - - // The target was collected, so we need to remove the entry from the cache. - _cache.Remove(comPointer); - existingHandle.Free(); - } - - return null; - } - } - - public void Remove(IntPtr comPointer, NativeObjectWrapper wrapper) - { - lock (_lock) - { - // TryGetOrCreateObjectForComInstanceInternal may have put a new entry into the cache - // in the time between the GC cleared the contents of the GC handle but before the - // NativeObjectWrapper finalizer ran. - // Only remove the entry if the target of the GC handle is the NativeObjectWrapper - // or is null (indicating that the corresponding NativeObjectWrapper has been scheduled for finalization). - if (_cache.TryGetValue(comPointer, out GCHandle cachedRef) - && (wrapper == cachedRef.Target - || cachedRef.Target is null)) - { - _cache.Remove(comPointer); - cachedRef.Free(); - } - } - } - } - - /// - /// Register a instance to be used as the global instance for reference tracker support. - /// - /// Instance to register - /// - /// This function can only be called a single time. Subsequent calls to this function will result - /// in a being thrown. - /// - /// Scenarios where this global instance may be used are: - /// * Object tracking via the and flags. - /// - public static void RegisterForTrackerSupport(ComWrappers instance) - { - ArgumentNullException.ThrowIfNull(instance); - - if (null != Interlocked.CompareExchange(ref s_globalInstanceForTrackerSupport, instance, null)) - { - throw new InvalidOperationException(SR.InvalidOperation_ResetGlobalComWrappersInstance); - } - } - - /// - /// Register a instance to be used as the global instance for marshalling in the runtime. - /// - /// Instance to register - /// - /// This function can only be called a single time. Subsequent calls to this function will result - /// in a being thrown. - /// - /// Scenarios where this global instance may be used are: - /// * Usage of COM-related Marshal APIs - /// * P/Invokes with COM-related types - /// * COM activation - /// - [SupportedOSPlatformAttribute("windows")] - public static void RegisterForMarshalling(ComWrappers instance) - { - ArgumentNullException.ThrowIfNull(instance); - - if (null != Interlocked.CompareExchange(ref s_globalInstanceForMarshalling, instance, null)) - { - throw new InvalidOperationException(SR.InvalidOperation_ResetGlobalComWrappersInstance); - } - } - - /// - /// Get the runtime provided IUnknown implementation. - /// - /// Function pointer to QueryInterface. - /// Function pointer to AddRef. - /// Function pointer to Release. - public static unsafe void GetIUnknownImpl(out IntPtr fpQueryInterface, out IntPtr fpAddRef, out IntPtr fpRelease) - { - fpQueryInterface = (IntPtr)(delegate* unmanaged)&ComWrappers.IUnknown_QueryInterface; - fpAddRef = (IntPtr)(delegate*)&RuntimeImports.RhIUnknown_AddRef; // Implemented in C/C++ to avoid GC transitions - fpRelease = (IntPtr)(delegate* unmanaged)&ComWrappers.IUnknown_Release; - } - - internal static IntPtr ComInterfaceForObject(object instance) - { - if (s_globalInstanceForMarshalling == null) - { - throw new NotSupportedException(SR.InvalidOperation_ComInteropRequireComWrapperInstance); - } - - return s_globalInstanceForMarshalling.GetOrCreateComInterfaceForObject(instance, CreateComInterfaceFlags.None); - } - - internal static unsafe IntPtr ComInterfaceForObject(object instance, Guid targetIID) - { - IntPtr unknownPtr = ComInterfaceForObject(instance); - IntPtr comObjectInterface; - ManagedObjectWrapper* wrapper = ComInterfaceDispatch.ToManagedObjectWrapper((ComInterfaceDispatch*)unknownPtr); - int resultCode = wrapper->QueryInterface(in targetIID, out comObjectInterface); - // We no longer need IUnknownPtr, release reference - Marshal.Release(unknownPtr); - if (resultCode != 0) - { - throw new InvalidCastException(); - } - - return comObjectInterface; - } - - internal static object ComObjectForInterface(IntPtr externalComObject) - { - if (s_globalInstanceForMarshalling == null) - { - throw new NotSupportedException(SR.InvalidOperation_ComInteropRequireComWrapperInstance); - } - - // TrackerObject support and unwrapping matches the built-in semantics that the global marshalling scenario mimics. - return s_globalInstanceForMarshalling.GetOrCreateObjectForComInstance(externalComObject, CreateObjectFlags.TrackerObject | CreateObjectFlags.Unwrap); - } - - internal static IntPtr GetOrCreateTrackerTarget(IntPtr externalComObject) - { - if (s_globalInstanceForTrackerSupport == null) - { - throw new NotSupportedException(SR.InvalidOperation_ComInteropRequireComWrapperTrackerInstance); - } - - object obj = s_globalInstanceForTrackerSupport.GetOrCreateObjectForComInstance(externalComObject, CreateObjectFlags.TrackerObject); - return s_globalInstanceForTrackerSupport.GetOrCreateComInterfaceForObject(obj, CreateComInterfaceFlags.TrackerSupport); - } - - internal static void ReleaseExternalObjectsFromCurrentThread() + internal sealed unsafe partial class ManagedObjectWrapperHolder { - if (s_globalInstanceForTrackerSupport == null) - { - throw new NotSupportedException(SR.InvalidOperation_ComInteropRequireComWrapperTrackerInstance); - } - - IntPtr contextToken = GetContextToken(); - - List objects = new List(); - - // Here we aren't part of a GC callback, so other threads can still be running - // who are adding and removing from the collection. This means we can possibly race - // with a handle being removed and freed and we can end up accessing a freed handle. - // To avoid this, we take a lock on modifications to the collection while we gather - // the objects. - using (s_referenceTrackerNativeObjectWrapperCache.ModificationLock.EnterScope()) + private static void RegisterIsRootedCallback() { - foreach (GCHandle weakNativeObjectWrapperHandle in s_referenceTrackerNativeObjectWrapperCache) + delegate* unmanaged callback = &IsRootedCallback; + if (!RuntimeImports.RhRegisterRefCountedHandleCallback((nint)callback, MethodTable.Of())) { - ReferenceTrackerNativeObjectWrapper? nativeObjectWrapper = Unsafe.As(weakNativeObjectWrapperHandle.Target); - if (nativeObjectWrapper != null && - nativeObjectWrapper._contextToken == contextToken) - { - object? target = nativeObjectWrapper.ProxyHandle.Target; - if (target != null) - { - objects.Add(target); - } - - // Separate the wrapper from the tracker runtime prior to - // passing them. - nativeObjectWrapper.DisconnectTracker(); - } + throw new OutOfMemoryException(); } } - s_globalInstanceForTrackerSupport.ReleaseObjects(objects); - } - - // Used during GC callback - internal static unsafe void WalkExternalTrackerObjects() - { - bool walkFailed = false; - - foreach (GCHandle weakNativeObjectWrapperHandle in s_referenceTrackerNativeObjectWrapperCache) + [UnmanagedCallersOnly] + private static bool IsRootedCallback(IntPtr pObj) { - ReferenceTrackerNativeObjectWrapper? nativeObjectWrapper = Unsafe.As(weakNativeObjectWrapperHandle.Target); - if (nativeObjectWrapper != null && - nativeObjectWrapper.TrackerObject != IntPtr.Zero) - { - FindReferenceTargetsCallback.s_currentRootObjectHandle = nativeObjectWrapper.ProxyHandle; - if (IReferenceTracker.FindTrackerTargets(nativeObjectWrapper.TrackerObject, TrackerObjectManager.s_findReferencesTargetCallback) != HResults.S_OK) - { - walkFailed = true; - FindReferenceTargetsCallback.s_currentRootObjectHandle = default; - break; - } - FindReferenceTargetsCallback.s_currentRootObjectHandle = default; - } + // We are paused in the GC, so this is safe. + ManagedObjectWrapperHolder* holder = (ManagedObjectWrapperHolder*)&pObj; + return holder->_wrapper->IsRooted; } - // Report whether walking failed or not. - if (walkFailed) + private static IntPtr AllocateRefCountedHandle(ManagedObjectWrapperHolder holder) { - TrackerObjectManager.s_isGlobalPeggingOn = true; + return RuntimeImports.RhHandleAllocRefCounted(holder); } - IReferenceTrackerManager.FindTrackerTargetsCompleted(TrackerObjectManager.s_trackerManager, walkFailed); } - // Used during GC callback - internal static void DetachNonPromotedObjects() + /// + /// Get the runtime provided IUnknown implementation. + /// + /// Function pointer to QueryInterface. + /// Function pointer to AddRef. + /// Function pointer to Release. + public static unsafe void GetIUnknownImpl(out IntPtr fpQueryInterface, out IntPtr fpAddRef, out IntPtr fpRelease) { - foreach (GCHandle weakNativeObjectWrapperHandle in s_referenceTrackerNativeObjectWrapperCache) - { - ReferenceTrackerNativeObjectWrapper? nativeObjectWrapper = Unsafe.As(weakNativeObjectWrapperHandle.Target); - if (nativeObjectWrapper != null && - nativeObjectWrapper.TrackerObject != IntPtr.Zero && - !RuntimeImports.RhIsPromoted(nativeObjectWrapper.ProxyHandle.Target)) - { - // Notify the wrapper it was not promoted and is being collected. - TrackerObjectManager.BeforeWrapperFinalized(nativeObjectWrapper.TrackerObject); - } - } + fpQueryInterface = (IntPtr)(delegate* unmanaged)&ComWrappers.IUnknown_QueryInterface; + fpAddRef = (IntPtr)(delegate*)&RuntimeImports.RhIUnknown_AddRef; // Implemented in C/C++ to avoid GC transitions + fpRelease = (IntPtr)(delegate* unmanaged)&ComWrappers.IUnknown_Release; } [UnmanagedCallersOnly] @@ -1490,530 +71,129 @@ internal static unsafe uint IUnknown_Release(IntPtr pThis) return refcount; } - [UnmanagedCallersOnly] - internal static unsafe int IReferenceTrackerTarget_QueryInterface(IntPtr pThis, Guid* guid, IntPtr* ppObject) - { - ManagedObjectWrapper* wrapper = ComInterfaceDispatch.ToManagedObjectWrapper((ComInterfaceDispatch*)pThis); - return wrapper->QueryInterfaceForTracker(in *guid, out *ppObject); - } - - [UnmanagedCallersOnly] - internal static unsafe uint IReferenceTrackerTarget_AddRefFromReferenceTracker(IntPtr pThis) - { - ManagedObjectWrapper* wrapper = ComInterfaceDispatch.ToManagedObjectWrapper((ComInterfaceDispatch*)pThis); - return wrapper->AddRefFromReferenceTracker(); - } - - [UnmanagedCallersOnly] - internal static unsafe uint IReferenceTrackerTarget_ReleaseFromReferenceTracker(IntPtr pThis) - { - ManagedObjectWrapper* wrapper = ComInterfaceDispatch.ToManagedObjectWrapper((ComInterfaceDispatch*)pThis); - return wrapper->ReleaseFromReferenceTracker(); - } - - [UnmanagedCallersOnly] - internal static unsafe uint IReferenceTrackerTarget_Peg(IntPtr pThis) - { - ManagedObjectWrapper* wrapper = ComInterfaceDispatch.ToManagedObjectWrapper((ComInterfaceDispatch*)pThis); - return wrapper->Peg(); - } - - [UnmanagedCallersOnly] - internal static unsafe uint IReferenceTrackerTarget_Unpeg(IntPtr pThis) - { - ManagedObjectWrapper* wrapper = ComInterfaceDispatch.ToManagedObjectWrapper((ComInterfaceDispatch*)pThis); - return wrapper->Unpeg(); - } - - [UnmanagedCallersOnly] - internal static unsafe int ITaggedImpl_IsCurrentVersion(IntPtr pThis, IntPtr version) - { - return version == (IntPtr)(delegate* unmanaged)&ITaggedImpl_IsCurrentVersion - ? HResults.S_OK - : HResults.E_FAIL; - } - - private static unsafe IntPtr CreateDefaultIUnknownVftbl() - { - IntPtr* vftbl = (IntPtr*)RuntimeHelpers.AllocateTypeAssociatedMemory(typeof(ComWrappers), 3 * sizeof(IntPtr)); - GetIUnknownImpl(out vftbl[0], out vftbl[1], out vftbl[2]); - return (IntPtr)vftbl; - } - - // This IID represents an internal interface we define to tag any ManagedObjectWrappers we create. - // This interface type and GUID do not correspond to any public interface; it is an internal implementation detail. - private static unsafe IntPtr CreateTaggedImplVftbl() - { - IntPtr* vftbl = (IntPtr*)RuntimeHelpers.AllocateTypeAssociatedMemory(typeof(ComWrappers), 4 * sizeof(IntPtr)); - GetIUnknownImpl(out vftbl[0], out vftbl[1], out vftbl[2]); - vftbl[3] = (IntPtr)(delegate* unmanaged)&ITaggedImpl_IsCurrentVersion; - return (IntPtr)vftbl; - } - - private static unsafe IntPtr CreateDefaultIReferenceTrackerTargetVftbl() - { - IntPtr* vftbl = (IntPtr*)RuntimeHelpers.AllocateTypeAssociatedMemory(typeof(ComWrappers), 7 * sizeof(IntPtr)); - vftbl[0] = (IntPtr)(delegate* unmanaged)&ComWrappers.IReferenceTrackerTarget_QueryInterface; - GetIUnknownImpl(out _, out vftbl[1], out vftbl[2]); - vftbl[3] = (IntPtr)(delegate* unmanaged)&ComWrappers.IReferenceTrackerTarget_AddRefFromReferenceTracker; - vftbl[4] = (IntPtr)(delegate* unmanaged)&ComWrappers.IReferenceTrackerTarget_ReleaseFromReferenceTracker; - vftbl[5] = (IntPtr)(delegate* unmanaged)&ComWrappers.IReferenceTrackerTarget_Peg; - vftbl[6] = (IntPtr)(delegate* unmanaged)&ComWrappers.IReferenceTrackerTarget_Unpeg; - return (IntPtr)vftbl; - } - - [UnmanagedCallersOnly] - internal static unsafe int IReferenceTrackerHost_DisconnectUnusedReferenceSources(IntPtr pThis, uint flags) - { - try - { - // Defined in windows.ui.xaml.hosting.referencetracker.h. - const uint XAML_REFERENCETRACKER_DISCONNECT_SUSPEND = 0x00000001; - - if ((flags & XAML_REFERENCETRACKER_DISCONNECT_SUSPEND) != 0) - { - RuntimeImports.RhCollect(2, InternalGCCollectionMode.Blocking | InternalGCCollectionMode.Optimized, true); - } - else - { - GC.Collect(); - } - return HResults.S_OK; - } - catch (Exception e) - { - return Marshal.GetHRForException(e); - } - - } - - [UnmanagedCallersOnly] - internal static unsafe int IReferenceTrackerHost_ReleaseDisconnectedReferenceSources(IntPtr pThis) - { - // We'd like to call GC.WaitForPendingFinalizers() here, but this could lead to deadlock - // if the finalizer thread is trying to get back to this thread, because we are not pumping - // anymore. Disable this for now. See: https://github.com/dotnet/runtime/issues/109538. - return HResults.S_OK; - } - - [UnmanagedCallersOnly] - internal static unsafe int IReferenceTrackerHost_NotifyEndOfReferenceTrackingOnThread(IntPtr pThis) - { - try - { - ReleaseExternalObjectsFromCurrentThread(); - return HResults.S_OK; - } - catch (Exception e) - { - return Marshal.GetHRForException(e); - } - - } - - // Creates a proxy object (managed object wrapper) that points to the given IUnknown. - // The proxy represents the following: - // 1. Has a managed reference pointing to the external object - // and therefore forms a cycle that can be resolved by GC. - // 2. Forwards data binding requests. - // - // For example: - // NoCW = Native Object Com Wrapper also known as RCW - // - // Grid <---- NoCW Grid <-------- NoCW - // | ^ | ^ - // | | Becomes | | - // v | v | - // Rectangle Rectangle ----->Proxy - // - // Arguments - // obj - An IUnknown* where a NoCW points to (Grid, in this case) - // Notes: - // 1. We can either create a new NoCW or get back an old one from the cache. - // 2. This obj could be a regular tracker runtime object for data binding. - // ppNewReference - The IReferenceTrackerTarget* for the proxy created - // The tracker runtime will call IReferenceTrackerTarget to establish a reference. - // - [UnmanagedCallersOnly] - internal static unsafe int IReferenceTrackerHost_GetTrackerTarget(IntPtr pThis, IntPtr punk, IntPtr* ppNewReference) - { - if (punk == IntPtr.Zero) - { - return HResults.E_INVALIDARG; - } - - if (Marshal.QueryInterface(punk, IID_IUnknown, out IntPtr ppv) != HResults.S_OK) - { - return HResults.COR_E_INVALIDCAST; - } - - try - { - using ComHolder identity = new ComHolder(ppv); - using ComHolder trackerTarget = new ComHolder(GetOrCreateTrackerTarget(identity.Ptr)); - return Marshal.QueryInterface(trackerTarget.Ptr, IID_IReferenceTrackerTarget, out *ppNewReference); - } - catch (Exception e) - { - return Marshal.GetHRForException(e); - } - } - - [UnmanagedCallersOnly] - internal static unsafe int IReferenceTrackerHost_AddMemoryPressure(IntPtr pThis, long bytesAllocated) - { - try - { - GC.AddMemoryPressure(bytesAllocated); - return HResults.S_OK; - } - catch (Exception e) - { - return Marshal.GetHRForException(e); - } - } - - [UnmanagedCallersOnly] - internal static unsafe int IReferenceTrackerHost_RemoveMemoryPressure(IntPtr pThis, long bytesAllocated) - { - try - { - GC.RemoveMemoryPressure(bytesAllocated); - return HResults.S_OK; - } - catch (Exception e) - { - return Marshal.GetHRForException(e); - } - } - - // Lifetime maintained by stack - we don't care about ref counts - [UnmanagedCallersOnly] - internal static unsafe uint Untracked_AddRef(IntPtr pThis) - { - return 1; - } - - [UnmanagedCallersOnly] - internal static unsafe uint Untracked_Release(IntPtr pThis) - { - return 1; - } - - [UnmanagedCallersOnly] - internal static unsafe int IReferenceTrackerHost_QueryInterface(IntPtr pThis, Guid* guid, IntPtr* ppObject) - { - if (*guid == IID_IReferenceTrackerHost || *guid == IID_IUnknown) - { - *ppObject = pThis; - return 0; - } - else - { - return HResults.COR_E_INVALIDCAST; - } - } - - internal static unsafe IntPtr CreateDefaultIReferenceTrackerHostVftbl() - { - IntPtr* vftbl = (IntPtr*)RuntimeHelpers.AllocateTypeAssociatedMemory(typeof(ComWrappers), 9 * sizeof(IntPtr)); - vftbl[0] = (IntPtr)(delegate* unmanaged)&ComWrappers.IReferenceTrackerHost_QueryInterface; - vftbl[1] = (IntPtr)(delegate* unmanaged)&ComWrappers.Untracked_AddRef; - vftbl[2] = (IntPtr)(delegate* unmanaged)&ComWrappers.Untracked_Release; - vftbl[3] = (IntPtr)(delegate* unmanaged)&ComWrappers.IReferenceTrackerHost_DisconnectUnusedReferenceSources; - vftbl[4] = (IntPtr)(delegate* unmanaged)&ComWrappers.IReferenceTrackerHost_ReleaseDisconnectedReferenceSources; - vftbl[5] = (IntPtr)(delegate* unmanaged)&ComWrappers.IReferenceTrackerHost_NotifyEndOfReferenceTrackingOnThread; - vftbl[6] = (IntPtr)(delegate* unmanaged)&ComWrappers.IReferenceTrackerHost_GetTrackerTarget; - vftbl[7] = (IntPtr)(delegate* unmanaged)&ComWrappers.IReferenceTrackerHost_AddMemoryPressure; - vftbl[8] = (IntPtr)(delegate* unmanaged)&ComWrappers.IReferenceTrackerHost_RemoveMemoryPressure; - return (IntPtr)vftbl; - } - - private static IntPtr GetContextToken() - { -#if TARGET_WINDOWS - Interop.Ole32.CoGetContextToken(out IntPtr contextToken); - return contextToken; -#else - return IntPtr.Zero; -#endif - } - - // Wrapper for IWeakReference - private static unsafe class IWeakReference + private static IntPtr GetTaggedImplCurrentVersion() { - public static int Resolve(IntPtr pThis, Guid guid, out IntPtr inspectable) + unsafe { - fixed (IntPtr* inspectablePtr = &inspectable) - return (*(delegate* unmanaged**)pThis)[3](pThis, &guid, inspectablePtr); + return (IntPtr)(delegate* unmanaged)&VtableImplementations.ITaggedImpl_IsCurrentVersion; } } - // Wrapper for IWeakReferenceSource - private static unsafe class IWeakReferenceSource - { - public static int GetWeakReference(IntPtr pThis, out IntPtr weakReference) - { - fixed (IntPtr* weakReferencePtr = &weakReference) - return (*(delegate* unmanaged**)pThis)[3](pThis, weakReferencePtr); - } - } + internal static unsafe IntPtr DefaultIUnknownVftblPtr => (IntPtr)Unsafe.AsPointer(in VtableImplementations.IUnknown); + internal static unsafe IntPtr TaggedImplVftblPtr => (IntPtr)Unsafe.AsPointer(in VtableImplementations.ITaggedImpl); + internal static unsafe IntPtr DefaultIReferenceTrackerTargetVftblPtr => (IntPtr)Unsafe.AsPointer(in VtableImplementations.IReferenceTrackerTarget); - private static object? ComWeakRefToObject(IntPtr pComWeakRef, long wrapperId) + /// + /// Define the vtable layout for the COM interfaces we provide. + /// + /// + /// This is defined as a nested class to ensure that the vtable types are the only things initialized in the class's static constructor. + /// As long as that's the case, we can easily guarantee that they are pre-initialized and that we don't end up having startup code + /// needed to set up the vtable layouts. + /// + private static class VtableImplementations { - if (wrapperId == 0) + public unsafe struct IUnknownVftbl { - return null; - } - - // Using the IWeakReference*, get ahold of the target native COM object's IInspectable*. If this resolve fails or - // returns null, then we assume that the underlying native COM object is no longer alive, and thus we cannot create a - // new RCW for it. - if (IWeakReference.Resolve(pComWeakRef, IID_IInspectable, out IntPtr targetPtr) == HResults.S_OK && - targetPtr != IntPtr.Zero) - { - using ComHolder target = new ComHolder(targetPtr); - if (Marshal.QueryInterface(target.Ptr, IID_IUnknown, out IntPtr targetIdentityPtr) == HResults.S_OK) - { - using ComHolder targetIdentity = new ComHolder(targetIdentityPtr); - return GetOrCreateObjectFromWrapper(wrapperId, targetIdentity.Ptr); - } + public delegate* unmanaged QueryInterface; + public delegate* unmanaged AddRef; + public delegate* unmanaged Release; } - return null; - } - - private static unsafe bool PossiblyComObject(object target) - { - // If the RCW is an aggregated RCW, then the managed object cannot be recreated from the IUnknown - // as the outer IUnknown wraps the managed object. In this case, don't create a weak reference backed - // by a COM weak reference. - return s_nativeObjectWrapperTable.TryGetValue(target, out NativeObjectWrapper? wrapper) && !wrapper.IsAggregatedWithManagedObjectWrapper; - } - - private static unsafe IntPtr ObjectToComWeakRef(object target, out long wrapperId) - { - if (TryGetComInstanceForIID( - target, - IID_IWeakReferenceSource, - out IntPtr weakReferenceSourcePtr, - out wrapperId)) + public unsafe struct IReferenceTrackerTargetVftbl { - using ComHolder weakReferenceSource = new ComHolder(weakReferenceSourcePtr); - if (IWeakReferenceSource.GetWeakReference(weakReferenceSource.Ptr, out IntPtr weakReference) == HResults.S_OK) - { - return weakReference; - } + public delegate* unmanaged QueryInterface; + public delegate* unmanaged AddRef; + public delegate* unmanaged Release; + public delegate* unmanaged AddRefFromReferenceTracker; + public delegate* unmanaged ReleaseFromReferenceTracker; + public delegate* unmanaged Peg; + public delegate* unmanaged Unpeg; } - return IntPtr.Zero; - } - } - - // This is a GCHandle HashSet implementation based on LowLevelDictionary. - // It uses no locking for readers. While for writers (add / remove), - // it handles the locking itself. - // This implementation specifically makes sure that any readers of this - // collection during GC aren't impacted by other threads being - // frozen while in the middle of an write. It makes no guarantees on - // whether you will observe the element being added / removed, but does - // make sure the collection is in a good state and doesn't run into issues - // while iterating. - internal sealed class GCHandleSet : IEnumerable - { - private const int DefaultSize = 7; - - private Entry?[] _buckets = new Entry[DefaultSize]; - private int _numEntries; - private readonly Lock _lock = new Lock(useTrivialWaits: true); - - public Lock ModificationLock => _lock; - - public void Add(GCHandle handle) - { - using (_lock.EnterScope()) + public unsafe struct ITaggedImplVftbl { - int bucket = GetBucket(handle, _buckets.Length); - Entry? prev = null; - Entry? entry = _buckets[bucket]; - while (entry != null) - { - // Handle already exists, nothing to add. - if (handle.Equals(entry.m_value)) - { - return; - } - - prev = entry; - entry = entry.m_next; - } - - Entry newEntry = new Entry() - { - m_value = handle - }; - - if (prev == null) - { - _buckets[bucket] = newEntry; - } - else - { - prev.m_next = newEntry; - } - - // _numEntries is only maintained for the purposes of deciding whether to - // expand the bucket and is not used during iteration to handle the - // scenario where element is in bucket but _numEntries hasn't been incremented - // yet. - _numEntries++; - if (_numEntries > (_buckets.Length * 2)) - { - ExpandBuckets(); - } + public delegate* unmanaged QueryInterface; + public delegate* unmanaged AddRef; + public delegate* unmanaged Release; + public delegate* unmanaged IsCurrentVersion; } - } - - private void ExpandBuckets() - { - int newNumBuckets = _buckets.Length * 2 + 1; - Entry?[] newBuckets = new Entry[newNumBuckets]; - for (int i = 0; i < _buckets.Length; i++) - { - Entry? entry = _buckets[i]; - while (entry != null) - { - Entry? nextEntry = entry.m_next; - int bucket = GetBucket(entry.m_value, newNumBuckets); + [FixedAddressValueType] + public static readonly IUnknownVftbl IUnknown; - // We are allocating new entries for the bucket to ensure that - // if there is an enumeration already in progress, we don't - // modify what it observes by changing next in existing instances. - Entry newEntry = new Entry() - { - m_value = entry.m_value, - m_next = newBuckets[bucket], - }; - newBuckets[bucket] = newEntry; + [FixedAddressValueType] + public static readonly IReferenceTrackerTargetVftbl IReferenceTrackerTarget; - entry = nextEntry; - } - } - _buckets = newBuckets; - } + [FixedAddressValueType] + public static readonly ITaggedImplVftbl ITaggedImpl; - public void Remove(GCHandle handle) - { - using (_lock.EnterScope()) + [UnmanagedCallersOnly] + internal static unsafe int IReferenceTrackerTarget_QueryInterface(IntPtr pThis, Guid* guid, IntPtr* ppObject) { - int bucket = GetBucket(handle, _buckets.Length); - Entry? prev = null; - Entry? entry = _buckets[bucket]; - while (entry != null) - { - if (handle.Equals(entry.m_value)) - { - if (prev == null) - { - _buckets[bucket] = entry.m_next; - } - else - { - prev.m_next = entry.m_next; - } - _numEntries--; - return; - } - - prev = entry; - entry = entry.m_next; - } + ManagedObjectWrapper* wrapper = ComInterfaceDispatch.ToManagedObjectWrapper((ComInterfaceDispatch*)pThis); + return wrapper->QueryInterfaceForTracker(in *guid, out *ppObject); } - } - - private static int GetBucket(GCHandle handle, int numBuckets) - { - int h = handle.GetHashCode(); - return (int)((uint)h % (uint)numBuckets); - } - - public Enumerator GetEnumerator() => new Enumerator(this); - IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); - - IEnumerator IEnumerable.GetEnumerator() => ((IEnumerable)this).GetEnumerator(); - - private sealed class Entry - { - public GCHandle m_value; - public Entry? m_next; - } - - public struct Enumerator : IEnumerator - { - private readonly Entry?[] _buckets; - private int _currentIdx; - private Entry? _currentEntry; - - public Enumerator(GCHandleSet set) + [UnmanagedCallersOnly] + internal static unsafe uint IReferenceTrackerTarget_AddRefFromReferenceTracker(IntPtr pThis) { - // We hold onto the buckets of the set rather than the set itself - // so that if it is ever expanded, we are not impacted by that during - // enumeration. - _buckets = set._buckets; - Reset(); + ManagedObjectWrapper* wrapper = ComInterfaceDispatch.ToManagedObjectWrapper((ComInterfaceDispatch*)pThis); + return wrapper->AddRefFromReferenceTracker(); } - public GCHandle Current + [UnmanagedCallersOnly] + internal static unsafe uint IReferenceTrackerTarget_ReleaseFromReferenceTracker(IntPtr pThis) { - get - { - if (_currentEntry == null) - { - throw new InvalidOperationException("InvalidOperation_EnumOpCantHappen"); - } - - return _currentEntry.m_value; - } + ManagedObjectWrapper* wrapper = ComInterfaceDispatch.ToManagedObjectWrapper((ComInterfaceDispatch*)pThis); + return wrapper->ReleaseFromReferenceTracker(); } - object IEnumerator.Current => Current; - - public void Dispose() + [UnmanagedCallersOnly] + internal static unsafe uint IReferenceTrackerTarget_Peg(IntPtr pThis) { + ManagedObjectWrapper* wrapper = ComInterfaceDispatch.ToManagedObjectWrapper((ComInterfaceDispatch*)pThis); + return wrapper->Peg(); } - public bool MoveNext() + [UnmanagedCallersOnly] + internal static unsafe uint IReferenceTrackerTarget_Unpeg(IntPtr pThis) { - if (_currentEntry != null) - { - _currentEntry = _currentEntry.m_next; - } - - if (_currentEntry == null) - { - // Certain buckets might be empty, so loop until we find - // one with an entry. - while (++_currentIdx != _buckets.Length) - { - _currentEntry = _buckets[_currentIdx]; - if (_currentEntry != null) - { - return true; - } - } - - return false; - } - - return true; + ManagedObjectWrapper* wrapper = ComInterfaceDispatch.ToManagedObjectWrapper((ComInterfaceDispatch*)pThis); + return wrapper->Unpeg(); } - public void Reset() - { - _currentIdx = -1; - _currentEntry = null; + [UnmanagedCallersOnly] + internal static unsafe int ITaggedImpl_IsCurrentVersion(IntPtr pThis, IntPtr version) + { + return version == (IntPtr)(delegate* unmanaged)&ITaggedImpl_IsCurrentVersion + ? HResults.S_OK + : HResults.E_FAIL; + } + + static unsafe VtableImplementations() + { + // Use the "pre-inited vtable" pattern to ensure that ILC can pre-compile these vtables. + GetIUnknownImpl( + fpQueryInterface: out *(nint*)&((IUnknownVftbl*)Unsafe.AsPointer(ref IUnknown))->QueryInterface, + fpAddRef: out *(nint*)&((IUnknownVftbl*)Unsafe.AsPointer(ref IUnknown))->AddRef, + fpRelease: out *(nint*)&((IUnknownVftbl*)Unsafe.AsPointer(ref IUnknown))->Release); + + IReferenceTrackerTarget.QueryInterface = (delegate* unmanaged)&IReferenceTrackerTarget_QueryInterface; + GetIUnknownImpl( + fpQueryInterface: out _, + fpAddRef: out *(nint*)&((IReferenceTrackerTargetVftbl*)Unsafe.AsPointer(ref IReferenceTrackerTarget))->AddRef, + fpRelease: out *(nint*)&((IReferenceTrackerTargetVftbl*)Unsafe.AsPointer(ref IReferenceTrackerTarget))->Release); + IReferenceTrackerTarget.AddRefFromReferenceTracker = (delegate* unmanaged)&IReferenceTrackerTarget_AddRefFromReferenceTracker; + IReferenceTrackerTarget.ReleaseFromReferenceTracker = (delegate* unmanaged)&IReferenceTrackerTarget_ReleaseFromReferenceTracker; + IReferenceTrackerTarget.Peg = (delegate* unmanaged)&IReferenceTrackerTarget_Peg; + IReferenceTrackerTarget.Unpeg = (delegate* unmanaged)&IReferenceTrackerTarget_Unpeg; + + GetIUnknownImpl( + fpQueryInterface: out *(nint*)&((ITaggedImplVftbl*)Unsafe.AsPointer(ref ITaggedImpl))->QueryInterface, + fpAddRef: out *(nint*)&((ITaggedImplVftbl*)Unsafe.AsPointer(ref ITaggedImpl))->AddRef, + fpRelease: out *(nint*)&((ITaggedImplVftbl*)Unsafe.AsPointer(ref ITaggedImpl))->Release); + ITaggedImpl.IsCurrentVersion = (delegate* unmanaged)&ITaggedImpl_IsCurrentVersion; } } } diff --git a/src/runtime/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/InteropServices/TrackerObjectManager.NativeAot.cs b/src/runtime/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/InteropServices/TrackerObjectManager.NativeAot.cs index 2e2674fb0e1..f846ca65ce9 100644 --- a/src/runtime/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/InteropServices/TrackerObjectManager.NativeAot.cs +++ b/src/runtime/src/coreclr/nativeaot/System.Private.CoreLib/src/System/Runtime/InteropServices/TrackerObjectManager.NativeAot.cs @@ -10,10 +10,10 @@ namespace System.Runtime.InteropServices { - internal static class TrackerObjectManager + internal static partial class TrackerObjectManager { - internal static readonly IntPtr s_findReferencesTargetCallback = FindReferenceTargetsCallback.CreateFindReferenceTargetsCallback(); - internal static readonly IntPtr s_globalHostServices = CreateHostServices(); + [FixedAddressValueType] + internal static readonly unsafe IntPtr s_findReferencesTargetCallback = (IntPtr)Unsafe.AsPointer(in FindReferenceTargetsCallback.Vftbl); internal static volatile IntPtr s_trackerManager; internal static volatile bool s_hasTrackingStarted; @@ -29,49 +29,6 @@ public static bool ShouldWalkExternalObjects() return s_trackerManager != IntPtr.Zero; } - // Called when an IReferenceTracker instance is found. - public static void OnIReferenceTrackerFound(IntPtr referenceTracker) - { - Debug.Assert(referenceTracker != IntPtr.Zero); - if (s_trackerManager != IntPtr.Zero) - { - return; - } - - IReferenceTracker.GetReferenceTrackerManager(referenceTracker, out IntPtr referenceTrackerManager); - - // Attempt to set the tracker instance. - // If set, the ownership of referenceTrackerManager has been transferred - if (Interlocked.CompareExchange(ref s_trackerManager, referenceTrackerManager, IntPtr.Zero) == IntPtr.Zero) - { - IReferenceTrackerManager.SetReferenceTrackerHost(s_trackerManager, s_globalHostServices); - - // Our GC callbacks are used only for reference walk of tracker objects, so register it here - // when we find our first tracker object. - RegisterGCCallbacks(); - } - else - { - Marshal.Release(referenceTrackerManager); - } - } - - // Called after wrapper has been created. - public static void AfterWrapperCreated(IntPtr referenceTracker) - { - Debug.Assert(referenceTracker != IntPtr.Zero); - - // Notify tracker runtime that we've created a new wrapper for this object. - // To avoid surprises, we should notify them before we fire the first AddRefFromTrackerSource. - IReferenceTracker.ConnectFromTrackerSource(referenceTracker); - - // Send out AddRefFromTrackerSource callbacks to notify tracker runtime we've done AddRef() - // for certain interfaces. We should do this *after* we made a AddRef() because we should never - // be in a state where report refs > actual refs - IReferenceTracker.AddRefFromTrackerSource(referenceTracker); // IUnknown - IReferenceTracker.AddRefFromTrackerSource(referenceTracker); // IReferenceTracker - } - // Used during GC callback // Called before wrapper is about to be finalized (the same lifetime as short weak handle). public static void BeforeWrapperFinalized(IntPtr referenceTracker) @@ -134,24 +91,36 @@ public static void EndReferenceTracking() s_isGlobalPeggingOn = true; s_hasTrackingStarted = false; } - - public static unsafe void RegisterGCCallbacks() + public static bool AddReferencePath(object target, object foundReference) { - delegate* unmanaged gcStartCallback = &GCStartCollection; - delegate* unmanaged gcStopCallback = &GCStopCollection; - delegate* unmanaged gcAfterMarkCallback = &GCAfterMarkPhase; + return s_referenceCache.AddDependentHandle(target, foundReference); + } - if (!RuntimeImports.RhRegisterGcCallout(RuntimeImports.GcRestrictedCalloutKind.StartCollection, (IntPtr)gcStartCallback) || - !RuntimeImports.RhRegisterGcCallout(RuntimeImports.GcRestrictedCalloutKind.EndCollection, (IntPtr)gcStopCallback) || - !RuntimeImports.RhRegisterGcCallout(RuntimeImports.GcRestrictedCalloutKind.AfterMarkPhase, (IntPtr)gcAfterMarkCallback)) - { - throw new OutOfMemoryException(); - } + private static bool HasReferenceTrackerManager + => s_trackerManager != IntPtr.Zero; + + private static bool TryRegisterReferenceTrackerManager(IntPtr referenceTrackerManager) + { + return Interlocked.CompareExchange(ref s_trackerManager, referenceTrackerManager, IntPtr.Zero) == IntPtr.Zero; } - public static bool AddReferencePath(object target, object foundReference) + internal static bool IsGlobalPeggingEnabled => s_isGlobalPeggingOn; + + private static void RegisterGCCallbacks() { - return s_referenceCache.AddDependentHandle(target, foundReference); + unsafe + { + delegate* unmanaged gcStartCallback = &GCStartCollection; + delegate* unmanaged gcStopCallback = &GCStopCollection; + delegate* unmanaged gcAfterMarkCallback = &GCAfterMarkPhase; + + if (!RuntimeImports.RhRegisterGcCallout(RuntimeImports.GcRestrictedCalloutKind.StartCollection, (IntPtr)gcStartCallback) || + !RuntimeImports.RhRegisterGcCallout(RuntimeImports.GcRestrictedCalloutKind.EndCollection, (IntPtr)gcStopCallback) || + !RuntimeImports.RhRegisterGcCallout(RuntimeImports.GcRestrictedCalloutKind.AfterMarkPhase, (IntPtr)gcAfterMarkCallback)) + { + throw new OutOfMemoryException(); + } + } } // Used during GC callback @@ -183,80 +152,50 @@ private static void GCAfterMarkPhase(int condemnedGeneration) DetachNonPromotedObjects(); } - private static unsafe IntPtr CreateHostServices() - { - IntPtr* wrapperMem = (IntPtr*)NativeMemory.Alloc((nuint)sizeof(IntPtr)); - wrapperMem[0] = CreateDefaultIReferenceTrackerHostVftbl(); - return (IntPtr)wrapperMem; - } - } - - // Wrapper for IReferenceTrackerManager - internal static unsafe class IReferenceTrackerManager - { - // Used during GC callback - public static int ReferenceTrackingStarted(IntPtr pThis) - { - return (*(delegate* unmanaged**)pThis)[3](pThis); - } - - // Used during GC callback - public static int FindTrackerTargetsCompleted(IntPtr pThis, bool walkFailed) - { - return (*(delegate* unmanaged**)pThis)[4](pThis, walkFailed); - } - // Used during GC callback - public static int ReferenceTrackingCompleted(IntPtr pThis) + internal static unsafe void WalkExternalTrackerObjects() { - return (*(delegate* unmanaged**)pThis)[5](pThis); - } - - public static void SetReferenceTrackerHost(IntPtr pThis, IntPtr referenceTrackerHost) - { - Marshal.ThrowExceptionForHR((*(delegate* unmanaged**)pThis)[6](pThis, referenceTrackerHost)); - } - } + bool walkFailed = false; - // Wrapper for IReferenceTracker - internal static unsafe class IReferenceTracker - { - public static void ConnectFromTrackerSource(IntPtr pThis) - { - Marshal.ThrowExceptionForHR((*(delegate* unmanaged**)pThis)[3](pThis)); - } + foreach (GCHandle weakNativeObjectWrapperHandle in s_referenceTrackerNativeObjectWrapperCache) + { + ReferenceTrackerNativeObjectWrapper? nativeObjectWrapper = Unsafe.As(weakNativeObjectWrapperHandle.Target); + if (nativeObjectWrapper != null && + nativeObjectWrapper.TrackerObject != IntPtr.Zero) + { + FindReferenceTargetsCallback.s_currentRootObjectHandle = nativeObjectWrapper.ProxyHandle; + if (IReferenceTracker.FindTrackerTargets(nativeObjectWrapper.TrackerObject, (IntPtr)Unsafe.AsPointer(in s_findReferencesTargetCallback)) != HResults.S_OK) + { + walkFailed = true; + FindReferenceTargetsCallback.s_currentRootObjectHandle = default; + break; + } + FindReferenceTargetsCallback.s_currentRootObjectHandle = default; + } + } - // Used during GC callback - public static int DisconnectFromTrackerSource(IntPtr pThis) - { - return (*(delegate* unmanaged**)pThis)[4](pThis); + // Report whether walking failed or not. + if (walkFailed) + { + s_isGlobalPeggingOn = true; + } + IReferenceTrackerManager.FindTrackerTargetsCompleted(s_trackerManager, walkFailed); } // Used during GC callback - public static int FindTrackerTargets(IntPtr pThis, IntPtr findReferenceTargetsCallback) + internal static void DetachNonPromotedObjects() { - return (*(delegate* unmanaged**)pThis)[5](pThis, findReferenceTargetsCallback); - } - - public static void GetReferenceTrackerManager(IntPtr pThis, out IntPtr referenceTrackerManager) - { - fixed (IntPtr* ptr = &referenceTrackerManager) - Marshal.ThrowExceptionForHR((*(delegate* unmanaged**)pThis)[6](pThis, ptr)); - } - - public static void AddRefFromTrackerSource(IntPtr pThis) - { - Marshal.ThrowExceptionForHR((*(delegate* unmanaged**)pThis)[7](pThis)); - } - - public static void ReleaseFromTrackerSource(IntPtr pThis) - { - Marshal.ThrowExceptionForHR((*(delegate* unmanaged**)pThis)[8](pThis)); - } - - public static void PegFromTrackerSource(IntPtr pThis) - { - Marshal.ThrowExceptionForHR((*(delegate* unmanaged**)pThis)[9](pThis)); + foreach (GCHandle weakNativeObjectWrapperHandle in s_referenceTrackerNativeObjectWrapperCache) + { + ReferenceTrackerNativeObjectWrapper? nativeObjectWrapper = Unsafe.As(weakNativeObjectWrapperHandle.Target); + if (nativeObjectWrapper != null && + nativeObjectWrapper.TrackerObject != IntPtr.Zero && + !RuntimeImports.RhIsPromoted(nativeObjectWrapper.ProxyHandle.Target)) + { + // Notify the wrapper it was not promoted and is being collected. + BeforeWrapperFinalized(nativeObjectWrapper.TrackerObject); + } + } } } @@ -306,28 +245,26 @@ private static unsafe IntPtr CreateDefaultIFindReferenceTargetsCallbackVftbl() return (IntPtr)vftbl; } - internal static unsafe IntPtr CreateFindReferenceTargetsCallback() + internal struct ReferenceTargetsVftbl { - IntPtr* wrapperMem = (IntPtr*)NativeMemory.Alloc((nuint)sizeof(IntPtr)); - wrapperMem[0] = CreateDefaultIFindReferenceTargetsCallbackVftbl(); - return (IntPtr)wrapperMem; + public delegate* unmanaged QueryInterface; + public delegate* unmanaged AddRef; + public delegate* unmanaged Release; + public delegate* unmanaged FoundTrackerTarget; } - } - internal readonly struct ComHolder : IDisposable - { - private readonly IntPtr _ptr; - - internal readonly IntPtr Ptr => _ptr; - - public ComHolder(IntPtr ptr) - { - _ptr = ptr; - } + [FixedAddressValueType] + internal static readonly ReferenceTargetsVftbl Vftbl; - public readonly void Dispose() +#pragma warning disable CA1810 // Initialize reference type static fields inline + // We want this to be explicitly written out to ensure we match the "pre-inited vtable" pattern. + static FindReferenceTargetsCallback() +#pragma warning restore CA1810 // Initialize reference type static fields inline { - Marshal.Release(_ptr); + Vftbl.AddRef = &Untracked_AddRef; + Vftbl.Release = &Untracked_Release; + Vftbl.QueryInterface = &IFindReferenceTargetsCallback_QueryInterface; + Vftbl.FoundTrackerTarget = &IFindReferenceTargetsCallback_FoundTrackerTarget; } } diff --git a/src/runtime/src/coreclr/vm/CMakeLists.txt b/src/runtime/src/coreclr/vm/CMakeLists.txt index 306fa3fa229..c3eb6e1c8bb 100644 --- a/src/runtime/src/coreclr/vm/CMakeLists.txt +++ b/src/runtime/src/coreclr/vm/CMakeLists.txt @@ -162,6 +162,7 @@ set(VM_HEADERS_DAC_AND_WKS_COMMON codeman.h codeman.inl codeversion.h + conditionalweaktable.h contractimpl.h crst.h debugdebugger.h @@ -275,6 +276,7 @@ endif(FEATURE_JIT_PITCHING) set(VM_SOURCES_DAC ${VM_SOURCES_DAC_AND_WKS_COMMON} + conditionalweaktable.cpp # The usage of conditionalweaktable is only in the DAC, but we put the headers in the VM to enable validation. threaddebugblockinginfo.cpp ) diff --git a/src/runtime/src/coreclr/vm/amd64/AsmHelpers.asm b/src/runtime/src/coreclr/vm/amd64/AsmHelpers.asm index cb1156e38b3..b80a2e51c69 100644 --- a/src/runtime/src/coreclr/vm/amd64/AsmHelpers.asm +++ b/src/runtime/src/coreclr/vm/amd64/AsmHelpers.asm @@ -509,6 +509,60 @@ LEAF_ENTRY ThisPtrRetBufPrecodeWorker, _TEXT jmp METHODDESC_REGISTER LEAF_END ThisPtrRetBufPrecodeWorker, _TEXT +;; +;; Prologue of all funclet calling helpers (CallXXXXFunclet) +;; +FUNCLET_CALL_PROLOGUE macro localsCount, alignStack + PUSH_CALLEE_SAVED_REGISTERS + + arguments_scratch_area_size = 20h + xmm_save_area_size = 10 * 10h ;; xmm6..xmm15 save area + stack_alloc_size = arguments_scratch_area_size + localsCount * 8 + alignStack * 8 + xmm_save_area_size + rsp_offsetof_arguments = stack_alloc_size + 8*8h + 8h + rsp_offsetof_locals = arguments_scratch_area_size + xmm_save_area_size + + alloc_stack stack_alloc_size + + ;; Mirror clearing of AVX state done by regular method prologs + vzeroupper + + save_xmm128_postrsp xmm6, (arguments_scratch_area_size + 0 * 10h) + save_xmm128_postrsp xmm7, (arguments_scratch_area_size + 1 * 10h) + save_xmm128_postrsp xmm8, (arguments_scratch_area_size + 2 * 10h) + save_xmm128_postrsp xmm9, (arguments_scratch_area_size + 3 * 10h) + save_xmm128_postrsp xmm10, (arguments_scratch_area_size + 4 * 10h) + save_xmm128_postrsp xmm11, (arguments_scratch_area_size + 5 * 10h) + save_xmm128_postrsp xmm12, (arguments_scratch_area_size + 6 * 10h) + save_xmm128_postrsp xmm13, (arguments_scratch_area_size + 7 * 10h) + save_xmm128_postrsp xmm14, (arguments_scratch_area_size + 8 * 10h) + save_xmm128_postrsp xmm15, (arguments_scratch_area_size + 9 * 10h) + + END_PROLOGUE +endm + +;; +;; Epilogue of all funclet calling helpers (CallXXXXFunclet) +;; +FUNCLET_CALL_EPILOGUE macro + ;; Mirror clearing of AVX state done by regular method epilogs + vzeroupper + + movdqa xmm6, [rsp + arguments_scratch_area_size + 0 * 10h] + movdqa xmm7, [rsp + arguments_scratch_area_size + 1 * 10h] + movdqa xmm8, [rsp + arguments_scratch_area_size + 2 * 10h] + movdqa xmm9, [rsp + arguments_scratch_area_size + 3 * 10h] + movdqa xmm10, [rsp + arguments_scratch_area_size + 4 * 10h] + movdqa xmm11, [rsp + arguments_scratch_area_size + 5 * 10h] + movdqa xmm12, [rsp + arguments_scratch_area_size + 6 * 10h] + movdqa xmm13, [rsp + arguments_scratch_area_size + 7 * 10h] + movdqa xmm14, [rsp + arguments_scratch_area_size + 8 * 10h] + movdqa xmm15, [rsp + arguments_scratch_area_size + 9 * 10h] + + add rsp, stack_alloc_size + + POP_CALLEE_SAVED_REGISTERS +endm + ; This helper enables us to call into a funclet after restoring Fp register NESTED_ENTRY CallEHFunclet, _TEXT ; On entry: @@ -519,19 +573,35 @@ NESTED_ENTRY CallEHFunclet, _TEXT ; R9 = address of the location where the SP of funclet's caller (i.e. this helper) should be saved. ; - push_nonvol_reg rbp - alloc_stack 20h ; argument scratch space for the call - END_PROLOGUE + FUNCLET_CALL_PROLOGUE 0, 1 - ; Restore RBP + ; Restore RBX, RBP, RSI, RDI, R12, R13, R14, R15 from CONTEXT mov rbp, [r8 + OFFSETOF__CONTEXT__Rbp - OFFSETOF__CONTEXT__Rbx] - ; Save the SP of this function. + mov rsi, [r8 + OFFSETOF__CONTEXT__Rsi - OFFSETOF__CONTEXT__Rbx] + mov rdi, [r8 + OFFSETOF__CONTEXT__Rdi - OFFSETOF__CONTEXT__Rbx] + mov r12, [r8 + OFFSETOF__CONTEXT__R12 - OFFSETOF__CONTEXT__Rbx] + mov r13, [r8 + OFFSETOF__CONTEXT__R13 - OFFSETOF__CONTEXT__Rbx] + mov r14, [r8 + OFFSETOF__CONTEXT__R14 - OFFSETOF__CONTEXT__Rbx] + mov r15, [r8 + OFFSETOF__CONTEXT__R15 - OFFSETOF__CONTEXT__Rbx] + + ; Restore XMM registers from CONTEXT + movdqa xmm6, [r8 + OFFSETOF__CONTEXT__Xmm6 - OFFSETOF__CONTEXT__Rbx] + movdqa xmm7, [r8 + OFFSETOF__CONTEXT__Xmm7 - OFFSETOF__CONTEXT__Rbx] + movdqa xmm8, [r8 + OFFSETOF__CONTEXT__Xmm8 - OFFSETOF__CONTEXT__Rbx] + movdqa xmm9, [r8 + OFFSETOF__CONTEXT__Xmm9 - OFFSETOF__CONTEXT__Rbx] + movdqa xmm10, [r8 + OFFSETOF__CONTEXT__Xmm10 - OFFSETOF__CONTEXT__Rbx] + movdqa xmm11, [r8 + OFFSETOF__CONTEXT__Xmm11 - OFFSETOF__CONTEXT__Rbx] + movdqa xmm12, [r8 + OFFSETOF__CONTEXT__Xmm12 - OFFSETOF__CONTEXT__Rbx] + movdqa xmm13, [r8 + OFFSETOF__CONTEXT__Xmm13 - OFFSETOF__CONTEXT__Rbx] + movdqa xmm14, [r8 + OFFSETOF__CONTEXT__Xmm14 - OFFSETOF__CONTEXT__Rbx] + movdqa xmm15, [r8 + OFFSETOF__CONTEXT__Xmm15 - OFFSETOF__CONTEXT__Rbx] + + ; Save the SP of this function. mov [r9], rsp ; Invoke the funclet call rdx - add rsp, 20h - pop rbp + FUNCLET_CALL_EPILOGUE ret NESTED_END CallEHFunclet, _TEXT @@ -546,9 +616,7 @@ NESTED_ENTRY CallEHFilterFunclet, _TEXT ; R9 = address of the location where the SP of funclet's caller (i.e. this helper) should be saved. ; - push_nonvol_reg rbp - alloc_stack 20h ; argument scratch space for the call - END_PROLOGUE + FUNCLET_CALL_PROLOGUE 0, 1 ; Save the SP of this function mov [r9], rsp @@ -557,9 +625,8 @@ NESTED_ENTRY CallEHFilterFunclet, _TEXT ; Invoke the filter funclet call r8 - add rsp, 20h - pop rbp + FUNCLET_CALL_EPILOGUE ret NESTED_END CallEHFilterFunclet, _TEXT - end \ No newline at end of file + end diff --git a/src/runtime/src/coreclr/vm/amd64/asmhelpers.S b/src/runtime/src/coreclr/vm/amd64/asmhelpers.S index 08a2db5cae3..c90c535a493 100644 --- a/src/runtime/src/coreclr/vm/amd64/asmhelpers.S +++ b/src/runtime/src/coreclr/vm/amd64/asmhelpers.S @@ -363,6 +363,44 @@ LEAF_ENTRY ThisPtrRetBufPrecodeWorker, _TEXT jmp METHODDESC_REGISTER LEAF_END ThisPtrRetBufPrecodeWorker, _TEXT +// +// Prologue of all funclet calling helpers (CallXXXXFunclet) +// +.macro FUNCLET_CALL_PROLOGUE localsCount, alignStack + push_nonvol_reg r15 // save preserved regs for OS stackwalker + push_nonvol_reg r14 // ... + push_nonvol_reg r13 // ... + push_nonvol_reg r12 // ... + push_nonvol_reg rbx // ... + push_nonvol_reg rbp // ... + + stack_alloc_size = \localsCount * 8 + \alignStack * 8 + + alloc_stack stack_alloc_size + + // Mirror clearing of AVX state done by regular method prologs + vzeroupper + + END_PROLOGUE +.endm + +// +// Epilogue of all funclet calling helpers (CallXXXXFunclet) +// +.macro FUNCLET_CALL_EPILOGUE + // Mirror clearing of AVX state done by regular method epilogs + vzeroupper + + free_stack stack_alloc_size + + pop_nonvol_reg rbp + pop_nonvol_reg rbx + pop_nonvol_reg r12 + pop_nonvol_reg r13 + pop_nonvol_reg r14 + pop_nonvol_reg r15 +.endm + // This helper enables us to call into a funclet after restoring Fp register NESTED_ENTRY CallEHFunclet, _TEXT, NoHandler // On entry: @@ -373,16 +411,21 @@ NESTED_ENTRY CallEHFunclet, _TEXT, NoHandler // RCX = address of the location where the SP of funclet's caller (i.e. this helper) should be saved. // - push_nonvol_reg rbp + FUNCLET_CALL_PROLOGUE 0, 1 - // Restore RBP + // Restore RBX, RBP, R12, R13, R14, R15 from CONTEXT mov rbp, [rdx + OFFSETOF__CONTEXT__Rbp - OFFSETOF__CONTEXT__Rbx] + mov r12, [rdx + OFFSETOF__CONTEXT__R12 - OFFSETOF__CONTEXT__Rbx] + mov r13, [rdx + OFFSETOF__CONTEXT__R13 - OFFSETOF__CONTEXT__Rbx] + mov r14, [rdx + OFFSETOF__CONTEXT__R14 - OFFSETOF__CONTEXT__Rbx] + mov r15, [rdx + OFFSETOF__CONTEXT__R15 - OFFSETOF__CONTEXT__Rbx] + // Save the SP of this function. mov [rcx], rsp // Invoke the funclet call rsi - pop_nonvol_reg rbp + FUNCLET_CALL_EPILOGUE ret NESTED_END CallEHFunclet, _TEXT @@ -397,7 +440,7 @@ NESTED_ENTRY CallEHFilterFunclet, _TEXT, NoHandler // RCX = address of the location where the SP of funclet's caller (i.e. this helper) should be saved. // - push_nonvol_reg rbp + FUNCLET_CALL_PROLOGUE 0, 1 // Restore RBP mov rbp, rsi @@ -406,6 +449,6 @@ NESTED_ENTRY CallEHFilterFunclet, _TEXT, NoHandler // Invoke the filter funclet call rdx - pop_nonvol_reg rbp + FUNCLET_CALL_EPILOGUE ret NESTED_END CallEHFilterFunclet, _TEXT diff --git a/src/runtime/src/coreclr/vm/binder.cpp b/src/runtime/src/coreclr/vm/binder.cpp index a686f2d11b9..069da001a7b 100644 --- a/src/runtime/src/coreclr/vm/binder.cpp +++ b/src/runtime/src/coreclr/vm/binder.cpp @@ -21,6 +21,8 @@ #include "sigbuilder.h" #include "olevariant.h" #include "configuration.h" +#include "conditionalweaktable.h" +#include "interoplibinterface_comwrappers.h" // // Retrieve structures from ID. diff --git a/src/runtime/src/coreclr/vm/comutilnative.cpp b/src/runtime/src/coreclr/vm/comutilnative.cpp index 93992773a4a..58764432a16 100644 --- a/src/runtime/src/coreclr/vm/comutilnative.cpp +++ b/src/runtime/src/coreclr/vm/comutilnative.cpp @@ -853,7 +853,7 @@ extern "C" INT64 QCALLTYPE GCInterface_GetTotalMemory() **Arguments: args->generation: The maximum generation to collect **Exceptions: Argument exception if args->generation is < 0 or > GetMaxGeneration(); ==============================================================================*/ -extern "C" void QCALLTYPE GCInterface_Collect(INT32 generation, INT32 mode) +extern "C" void QCALLTYPE GCInterface_Collect(INT32 generation, INT32 mode, CLR_BOOL lowMemoryPressure) { QCALL_CONTRACT; @@ -865,7 +865,7 @@ extern "C" void QCALLTYPE GCInterface_Collect(INT32 generation, INT32 mode) //We don't need to check the top end because the GC will take care of that. GCX_COOP(); - GCHeapUtilities::GetGCHeap()->GarbageCollect(generation, false, mode); + GCHeapUtilities::GetGCHeap()->GarbageCollect(generation, lowMemoryPressure, mode); END_QCALL; } diff --git a/src/runtime/src/coreclr/vm/comutilnative.h b/src/runtime/src/coreclr/vm/comutilnative.h index 8f229352b43..d78d349edca 100644 --- a/src/runtime/src/coreclr/vm/comutilnative.h +++ b/src/runtime/src/coreclr/vm/comutilnative.h @@ -210,7 +210,7 @@ extern "C" void QCALLTYPE GCInterface_AllocateNewArray(void* typeHandlePtr, INT3 extern "C" INT64 QCALLTYPE GCInterface_GetTotalMemory(); -extern "C" void QCALLTYPE GCInterface_Collect(INT32 generation, INT32 mode); +extern "C" void QCALLTYPE GCInterface_Collect(INT32 generation, INT32 mode, CLR_BOOL lowMemoryPressure); extern "C" void* QCALLTYPE GCInterface_GetNextFinalizableObject(QCall::ObjectHandleOnStack pObj); diff --git a/src/runtime/src/coreclr/vm/conditionalweaktable.cpp b/src/runtime/src/coreclr/vm/conditionalweaktable.cpp new file mode 100644 index 00000000000..03b7798fcde --- /dev/null +++ b/src/runtime/src/coreclr/vm/conditionalweaktable.cpp @@ -0,0 +1,38 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// + +#include "conditionalweaktable.h" +#include "gchandleutilities.h" +#include "../debug/daccess/gcinterface.dac.h" + +bool ConditionalWeakTableContainerObject::TryGetValue(OBJECTREF key, OBJECTREF* value) +{ + STANDARD_VM_CONTRACT; + SUPPORTS_DAC; + _ASSERTE(key != nullptr && value != nullptr); + + INT32 hashCode = key->TryGetHashCode(); + + if (hashCode == 0) + { + *value = nullptr; + return false; + } + + hashCode &= INT32_MAX; + int bucket = hashCode & (_buckets->GetNumComponents() - 1); + PTR_int32_t buckets = _buckets->GetDirectPointerToNonObjectElements(); + DPTR(Entry) entries = _entries->GetDirectPointerToNonObjectElements(); + for (int entriesIndex = buckets[bucket]; entriesIndex != -1; entriesIndex = entries[entriesIndex].Next) + { + if (entries[entriesIndex].HashCode == hashCode && ObjectFromHandle(entries[entriesIndex].depHnd) == key) + { + *value = HndGetHandleExtraInfo(entries[entriesIndex].depHnd); + return true; + } + } + + *value = nullptr; + return false; +} diff --git a/src/runtime/src/coreclr/vm/conditionalweaktable.h b/src/runtime/src/coreclr/vm/conditionalweaktable.h new file mode 100644 index 00000000000..24885ea1707 --- /dev/null +++ b/src/runtime/src/coreclr/vm/conditionalweaktable.h @@ -0,0 +1,76 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// + +#ifndef CONDITIONAL_WEAK_TABLE_H +#define CONDITIONAL_WEAK_TABLE_H + +#include "object.h" + +class ConditionalWeakTableContainerObject; +class ConditionalWeakTableObject; + +#ifdef USE_CHECKED_OBJECTREFS +typedef REF CONDITIONAL_WEAK_TABLE_CONTAINER_REF; +typedef REF CONDITIONAL_WEAK_TABLE_REF; +#else +typedef DPTR(ConditionalWeakTableContainerObject) CONDITIONAL_WEAK_TABLE_CONTAINER_REF; +typedef DPTR(ConditionalWeakTableObject) CONDITIONAL_WEAK_TABLE_REF; +#endif + +class ConditionalWeakTableContainerObject final : public Object +{ + friend class CoreLibBinder; + struct Entry + { + int32_t HashCode; + int32_t Next; + OBJECTHANDLE depHnd; + }; + +#ifdef USE_CHECKED_OBJECTREFS + using ENTRYARRAYREF = REF>; +#else + using ENTRYARRAYREF = DPTR(Array); +#endif + + CONDITIONAL_WEAK_TABLE_REF _parent; + I4ARRAYREF _buckets; + ENTRYARRAYREF _entries; + +public: +#ifdef DACCESS_COMPILE + bool TryGetValue(OBJECTREF key, OBJECTREF* value); +#endif +}; + +class ConditionalWeakTableObject final : public Object +{ + friend class CoreLibBinder; + OBJECTREF _lock; + VolatilePtr _container; +public: +#ifdef DACCESS_COMPILE + // Currently, we only use this for access from the DAC, so we don't need to worry about + // locking or tracking the active enumerator count. + // If we need to use this in a context where the runtime isn't suspended, we need to add + // the locking and tracking support. + template + bool TryGetValue(TKey key, TValue* value) + { + LIMITED_METHOD_CONTRACT; + _ASSERTE(key != nullptr && value != nullptr); + *value = nullptr; + OBJECTREF valueObj = nullptr; + bool found = _container->TryGetValue((OBJECTREF)key, &valueObj); + if (found) + { + *value = (TValue)valueObj; + } + + return found; + } +#endif +}; + +#endif // CONDITIONAL_WEAK_TABLE_H diff --git a/src/runtime/src/coreclr/vm/corelib.cpp b/src/runtime/src/coreclr/vm/corelib.cpp index 1e28694d8c5..f335fb26172 100644 --- a/src/runtime/src/coreclr/vm/corelib.cpp +++ b/src/runtime/src/coreclr/vm/corelib.cpp @@ -37,6 +37,7 @@ #include "proftoeeinterfaceimpl.h" #include "appdomainnative.hpp" +#include "conditionalweaktable.h" #include "runtimehandles.h" #include "reflectioninvocation.h" #include "managedmdimport.hpp" @@ -49,6 +50,10 @@ #include "variant.h" #endif // FEATURE_COMINTEROP +#if defined(FEATURE_COMWRAPPERS) +#include "interoplibinterface_comwrappers.h" +#endif + #include "interoplibinterface.h" #include "stubhelpers.h" diff --git a/src/runtime/src/coreclr/vm/corelib.h b/src/runtime/src/coreclr/vm/corelib.h index ba3c64b7e08..a9b3b552bcc 100644 --- a/src/runtime/src/coreclr/vm/corelib.h +++ b/src/runtime/src/coreclr/vm/corelib.h @@ -452,13 +452,34 @@ END_ILLINK_FEATURE_SWITCH() #ifdef FEATURE_COMWRAPPERS DEFINE_CLASS(COMWRAPPERS, Interop, ComWrappers) -DEFINE_CLASS(CREATECOMINTERFACEFLAGS, Interop, CreateComInterfaceFlags) DEFINE_CLASS(CREATEOBJECTFLAGS, Interop, CreateObjectFlags) -DEFINE_CLASS(COMWRAPPERSSCENARIO, Interop, ComWrappersScenario) -DEFINE_METHOD(COMWRAPPERS, COMPUTE_VTABLES, CallComputeVtables, SM_Scenario_ComWrappers_Obj_CreateFlags_RefInt_RetPtrVoid) -DEFINE_METHOD(COMWRAPPERS, CREATE_OBJECT, CallCreateObject, SM_Scenario_ComWrappers_IntPtr_CreateFlags_RetObj) -DEFINE_METHOD(COMWRAPPERS, RELEASE_OBJECTS, CallReleaseObjects, SM_ComWrappers_IEnumerable_RetVoid) -DEFINE_METHOD(COMWRAPPERS, CALL_ICUSTOMQUERYINTERFACE, CallICustomQueryInterface, SM_Obj_RefGuid_RefIntPtr_RetInt) +DEFINE_CLASS(MANAGED_OBJECT_WRAPPER_HOLDER,Interop, ComWrappers+ManagedObjectWrapperHolder) +DEFINE_CLASS(NATIVE_OBJECT_WRAPPER, Interop, ComWrappers+NativeObjectWrapper) +DEFINE_METHOD(COMWRAPPERS, CALL_ICUSTOMQUERYINTERFACE, CallICustomQueryInterface, SM_ManagedObjectWrapperHolder_RefGuid_RefIntPtr_RetInt) +DEFINE_METHOD(COMWRAPPERS, GET_OR_CREATE_COM_INTERFACE_FOR_OBJECT_WITH_GLOBAL_MARSHALLING_INSTANCE, GetOrCreateComInterfaceForObjectWithGlobalMarshallingInstance, SM_Obj_RetIntPtr) +DEFINE_METHOD(COMWRAPPERS, GET_OR_CREATE_OBJECT_FOR_COM_INSTANCE_WITH_GLOBAL_MARSHALLING_INSTANCE, GetOrCreateObjectForComInstanceWithGlobalMarshallingInstance, SM_IntPtr_CreateObjectFlags_RetObj) +DEFINE_FIELD(COMWRAPPERS, NAITVE_OBJECT_WRAPPER_TABLE, s_nativeObjectWrapperTable) +DEFINE_FIELD(COMWRAPPERS, ALL_MANAGED_OBJECT_WRAPPER_TABLE, s_allManagedObjectWrapperTable) + +DEFINE_CLASS_U(Interop, ComWrappers+ManagedObjectWrapperHolder, ManagedObjectWrapperHolderObject) +DEFINE_FIELD_U(_wrapper, ManagedObjectWrapperHolderObject, ManagedObjectWrapper) +DEFINE_CLASS_U(Interop, ComWrappers+NativeObjectWrapper, NativeObjectWrapperObject) +DEFINE_FIELD_U(_comWrappers, NativeObjectWrapperObject, _comWrappers) +DEFINE_FIELD_U(_externalComObject, NativeObjectWrapperObject, _externalComObject) +DEFINE_FIELD_U(_inner, NativeObjectWrapperObject, _inner) +DEFINE_FIELD_U(_aggregatedManagedObjectWrapper, NativeObjectWrapperObject, _aggregatedManagedObjectWrapper) +DEFINE_FIELD_U(_uniqueInstance, NativeObjectWrapperObject, _uniqueInstance) +DEFINE_FIELD_U(_proxyHandle, NativeObjectWrapperObject, _proxyHandle) +DEFINE_FIELD_U(_proxyHandleTrackingResurrection, NativeObjectWrapperObject, _proxyHandleTrackingResurrection) +DEFINE_CLASS_U(Interop, ComWrappers+ReferenceTrackerNativeObjectWrapper, ReferenceTrackerNativeObjectWrapperObject) +DEFINE_FIELD_U(_trackerObject, ReferenceTrackerNativeObjectWrapperObject, _trackerObject) +DEFINE_FIELD_U(_contextToken, ReferenceTrackerNativeObjectWrapperObject, _contextToken) +DEFINE_FIELD_U(_trackerObjectDisconnected, ReferenceTrackerNativeObjectWrapperObject, _trackerObjectDisconnected) +DEFINE_CLASS_U(Interop, GCHandleSet+Entry, GCHandleSetEntryObject) +DEFINE_FIELD_U(_next, GCHandleSetEntryObject, _next) +DEFINE_FIELD_U(_value, GCHandleSetEntryObject, _value) +DEFINE_CLASS_U(Interop, GCHandleSet, NoClass) +DEFINE_FIELD_U(_buckets, GCHandleSetObject, _buckets) #endif //FEATURE_COMWRAPPERS #ifdef FEATURE_OBJCMARSHAL @@ -780,6 +801,20 @@ DEFINE_METHOD(INTERLOCKED, COMPARE_EXCHANGE_USHRT, CompareExchange, SM_ DEFINE_METHOD(INTERLOCKED, COMPARE_EXCHANGE_INT, CompareExchange, SM_RefInt_Int_Int_RetInt) DEFINE_METHOD(INTERLOCKED, COMPARE_EXCHANGE_LONG, CompareExchange, SM_RefLong_Long_Long_RetLong) +DEFINE_CLASS_U(CompilerServices, ConditionalWeakTable`2, NoClass) +DEFINE_FIELD_U(_lock, ConditionalWeakTableObject, _lock) +DEFINE_FIELD_U(_container, ConditionalWeakTableObject, _container) + +DEFINE_CLASS_U(CompilerServices, ConditionalWeakTable`2+Container, NoClass) +DEFINE_FIELD_U(_parent, ConditionalWeakTableContainerObject, _parent) +DEFINE_FIELD_U(_buckets, ConditionalWeakTableContainerObject, _buckets) +DEFINE_FIELD_U(_entries, ConditionalWeakTableContainerObject, _entries) + +DEFINE_CLASS_U(CompilerServices, ConditionalWeakTable`2+Entry, ConditionalWeakTableContainerObject::Entry) +DEFINE_FIELD_U(depHnd, ConditionalWeakTableContainerObject::Entry, depHnd) +DEFINE_FIELD_U(HashCode, ConditionalWeakTableContainerObject::Entry, HashCode) +DEFINE_FIELD_U(Next, ConditionalWeakTableContainerObject::Entry, Next) + DEFINE_CLASS(RAW_DATA, CompilerServices, RawData) DEFINE_FIELD(RAW_DATA, DATA, Data) @@ -1172,6 +1207,10 @@ DEFINE_CLASS(IREADONLYDICTIONARYGENERIC,CollectionsGeneric, IReadOnlyDictionary` DEFINE_CLASS(IDICTIONARYGENERIC, CollectionsGeneric, IDictionary`2) DEFINE_CLASS(KEYVALUEPAIRGENERIC, CollectionsGeneric, KeyValuePair`2) +DEFINE_CLASS(LISTGENERIC, CollectionsGeneric, List`1) +DEFINE_FIELD(LISTGENERIC, ITEMS, _items) +DEFINE_FIELD(LISTGENERIC, SIZE, _size) + DEFINE_CLASS(ICOMPARABLEGENERIC, System, IComparable`1) DEFINE_METHOD(ICOMPARABLEGENERIC, COMPARE_TO, CompareTo, NoSig) diff --git a/src/runtime/src/coreclr/vm/ecalllist.h b/src/runtime/src/coreclr/vm/ecalllist.h index f3102c0f4ac..fab56cdf642 100644 --- a/src/runtime/src/coreclr/vm/ecalllist.h +++ b/src/runtime/src/coreclr/vm/ecalllist.h @@ -370,10 +370,6 @@ FCFuncStart(gGCHandleFuncs) FCFuncElement("InternalCompareExchange", MarshalNative::GCHandleInternalCompareExchange) FCFuncEnd() -FCFuncStart(gComAwareWeakReferenceFuncs) - FCFuncElement("HasInteropInfo", ComAwareWeakReferenceNative::HasInteropInfo) -FCFuncEnd() - // // // Class definitions @@ -387,7 +383,6 @@ FCClassElement("Array", "System", gArrayFuncs) FCClassElement("AssemblyLoadContext", "System.Runtime.Loader", gAssemblyLoadContextFuncs) FCClassElement("Buffer", "System", gBufferFuncs) FCClassElement("CastHelpers", "System.Runtime.CompilerServices", gCastHelpers) -FCClassElement("ComAwareWeakReference", "System", gComAwareWeakReferenceFuncs) FCClassElement("Delegate", "System", gDelegateFuncs) FCClassElement("DependentHandle", "System.Runtime", gDependentHandleFuncs) FCClassElement("Environment", "System", gEnvironmentFuncs) diff --git a/src/runtime/src/coreclr/vm/gcenv.ee.cpp b/src/runtime/src/coreclr/vm/gcenv.ee.cpp index 6482ee4886f..ed476d073ee 100644 --- a/src/runtime/src/coreclr/vm/gcenv.ee.cpp +++ b/src/runtime/src/coreclr/vm/gcenv.ee.cpp @@ -388,8 +388,10 @@ bool GCToEEInterface::RefCountedHandleCallbacks(Object * pObject) #endif #ifdef FEATURE_COMWRAPPERS bool isRooted = false; - if (ComWrappersNative::HasManagedObjectComWrapper((OBJECTREF)pObject, &isRooted)) + if (ComWrappersNative::IsManagedObjectComWrapper((OBJECTREF)pObject, &isRooted)) + { return isRooted; + } #endif #ifdef FEATURE_OBJCMARSHAL bool isReferenced = false; @@ -1832,4 +1834,4 @@ void GCToEEInterface::LogErrorToHost(const char *message) uint64_t GCToEEInterface::GetThreadOSThreadId(Thread* thread) { return thread->GetOSThreadId64(); -} \ No newline at end of file +} diff --git a/src/runtime/src/coreclr/vm/interoplibinterface.h b/src/runtime/src/coreclr/vm/interoplibinterface.h index c4f23ce6540..fb77e7b30c5 100644 --- a/src/runtime/src/coreclr/vm/interoplibinterface.h +++ b/src/runtime/src/coreclr/vm/interoplibinterface.h @@ -9,108 +9,7 @@ #define _INTEROPLIBINTERFACE_H_ #ifdef FEATURE_COMWRAPPERS - -namespace InteropLibInterface -{ - // Base definition of the external object context. - struct ExternalObjectContextBase - { - PTR_VOID Identity; - DWORD SyncBlockIndex; - }; -} - -// Native calls for the managed ComWrappers API -class ComWrappersNative -{ -public: - static const INT64 InvalidWrapperId = 0; -public: // Lifetime management for COM Wrappers - static void DestroyManagedObjectComWrapper(_In_ void* wrapper); - static void DestroyExternalComObjectContext(_In_ void* context); - static void MarkExternalComObjectContextCollected(_In_ void* context); - -public: // COM activation - static void MarkWrapperAsComActivated(_In_ IUnknown* wrapperMaybe); - -public: // Unwrapping support - static IUnknown* GetIdentityForObject(_In_ OBJECTREF* objectPROTECTED, _In_ REFIID riid, _Out_ INT64* wrapperId, _Out_ bool* isAggregated); - static bool HasManagedObjectComWrapper(_In_ OBJECTREF object, _Out_ bool* isActive); - -public: // GC interaction - static void OnFullGCStarted(); - static void OnFullGCFinished(); - static void AfterRefCountedHandleCallbacks(); -}; -// Native QCalls for the abstract ComWrappers managed type. -extern "C" void QCALLTYPE ComWrappers_GetIUnknownImpl( - _Out_ void** fpQueryInterface, - _Out_ void** fpAddRef, - _Out_ void** fpRelease); - -extern "C" BOOL QCALLTYPE ComWrappers_TryGetComInstance( - _In_ QCall::ObjectHandleOnStack wrapperMaybe, - _Out_ void** externalComObject); - -extern "C" BOOL QCALLTYPE ComWrappers_TryGetObject( - _In_ void* wrapperMaybe, - _Inout_ QCall::ObjectHandleOnStack instance); - -extern "C" BOOL QCALLTYPE ComWrappers_TryGetOrCreateComInterfaceForObject( - _In_ QCall::ObjectHandleOnStack comWrappersImpl, - _In_ INT64 wrapperId, - _In_ QCall::ObjectHandleOnStack instance, - _In_ INT32 flags, - _Outptr_ void** wrapperRaw); - -extern "C" BOOL QCALLTYPE ComWrappers_TryGetOrCreateObjectForComInstance( - _In_ QCall::ObjectHandleOnStack comWrappersImpl, - _In_ INT64 wrapperId, - _In_ void* externalComObject, - _In_opt_ void* innerMaybe, - _In_ INT32 flags, - _In_ QCall::ObjectHandleOnStack wrapperMaybe, - _Inout_ QCall::ObjectHandleOnStack retValue); - -// Native QCall for the ComWrappers managed type to indicate a global instance -// is registered for marshalling. This should be set if the private static member -// representing the global instance for marshalling on ComWrappers is non-null. -extern "C" void QCALLTYPE ComWrappers_SetGlobalInstanceRegisteredForMarshalling(_In_ INT64 id); -// Native QCall for the ComWrappers managed type to indicate a global instance -// is registered for tracker support. This should be set if the private static member -// representing the global instance for tracker support on ComWrappers is non-null. -extern "C" void QCALLTYPE ComWrappers_SetGlobalInstanceRegisteredForTrackerSupport(_In_ INT64 id); - -class GlobalComWrappersForMarshalling -{ -public: // Functions operating on a registered global instance for marshalling - static bool IsRegisteredInstance(_In_ INT64 id); - - static bool TryGetOrCreateComInterfaceForObject( - _In_ OBJECTREF instance, - _Outptr_ void** wrapperRaw); - - static bool TryGetOrCreateObjectForComInstance( - _In_ IUnknown* externalComObject, - _In_ INT32 objFromComIPFlags, - _Out_ OBJECTREF* objRef); -}; - - -class GlobalComWrappersForTrackerSupport -{ -public: // Functions operating on a registered global instance for tracker support - static bool IsRegisteredInstance(_In_ INT64 id); - - static bool TryGetOrCreateComInterfaceForObject( - _In_ OBJECTREF instance, - _Outptr_ void** wrapperRaw); - - static bool TryGetOrCreateObjectForComInstance( - _In_ IUnknown* externalComObject, - _Out_ OBJECTREF* objRef); -}; - +#include "interoplibinterface_comwrappers.h" #endif // FEATURE_COMWRAPPERS #ifdef FEATURE_OBJCMARSHAL diff --git a/src/runtime/src/coreclr/vm/interoplibinterface_comwrappers.cpp b/src/runtime/src/coreclr/vm/interoplibinterface_comwrappers.cpp index 4b41b68b8e6..833e842bf26 100644 --- a/src/runtime/src/coreclr/vm/interoplibinterface_comwrappers.cpp +++ b/src/runtime/src/coreclr/vm/interoplibinterface_comwrappers.cpp @@ -13,2001 +13,498 @@ #include "finalizerthread.h" // Interop library header +#include #include #include "interoplibinterface.h" using CreateObjectFlags = InteropLib::Com::CreateObjectFlags; -using CreateComInterfaceFlags = InteropLib::Com::CreateComInterfaceFlags; namespace { - void* GetCurrentCtxCookieWrapper() - { - STATIC_CONTRACT_WRAPPER; - - #ifdef FEATURE_COMINTEROP_APARTMENT_SUPPORT - return GetCurrentCtxCookie(); - #else - return NULL; - #endif // FEATURE_COMINTEROP_APARTMENT_SUPPORT - } - - // This class is used to track the external object within the runtime. - struct ExternalObjectContext : public InteropLibInterface::ExternalObjectContextBase - { - static const DWORD InvalidSyncBlockIndex; - - void* ThreadContext; - INT64 WrapperId; - - enum - { - Flags_None = 0, - - // The EOC has been collected and is no longer visible from managed code. - Flags_Collected = 1, - - Flags_ReferenceTracker = 2, - Flags_InCache = 4, - - // The EOC is "detached" and no longer used to map between identity and a managed object. - // This will only be set if the EOC was inserted into the cache. - Flags_Detached = 8, - - // This EOC is an aggregated instance - Flags_Aggregated = 16 - }; - DWORD Flags; - - static void Construct( - _Out_ ExternalObjectContext* cxt, - _In_ IUnknown* identity, - _In_opt_ void* threadContext, - _In_ DWORD syncBlockIndex, - _In_ INT64 wrapperId, - _In_ DWORD flags) - { - CONTRACTL - { - NOTHROW; - GC_NOTRIGGER; - MODE_ANY; - PRECONDITION(cxt != NULL); - PRECONDITION(threadContext != NULL); - PRECONDITION(syncBlockIndex != InvalidSyncBlockIndex); - } - CONTRACTL_END; - - cxt->Identity = (void*)identity; - cxt->ThreadContext = threadContext; - cxt->SyncBlockIndex = syncBlockIndex; - cxt->WrapperId = wrapperId; - cxt->Flags = flags; - } - - bool IsSet(_In_ DWORD f) const - { - return ((Flags & f) == f); - } - - bool IsActive() const - { - return !IsSet(Flags_Collected) - && (SyncBlockIndex != InvalidSyncBlockIndex); - } - - void MarkCollected() - { - _ASSERTE(GCHeapUtilities::IsGCInProgress()); - SyncBlockIndex = InvalidSyncBlockIndex; - Flags |= Flags_Collected; - } - - void MarkDetached() - { - _ASSERTE(GCHeapUtilities::IsGCInProgress()); - Flags |= Flags_Detached; - } - - void MarkNotInCache() - { - ::InterlockedAnd((LONG*)&Flags, (~Flags_InCache)); - } - - OBJECTREF GetObjectRef() - { - CONTRACTL - { - NOTHROW; - GC_NOTRIGGER; - MODE_COOPERATIVE; - } - CONTRACTL_END; - - _ASSERTE(IsActive()); - return ObjectToOBJECTREF(g_pSyncTable[SyncBlockIndex].m_Object); - } - - struct Key - { - public: - Key(void* identity, INT64 wrapperId) - : _identity { identity } - , _wrapperId { wrapperId } - { - _ASSERTE(identity != NULL); - _ASSERTE(wrapperId != ComWrappersNative::InvalidWrapperId); - } - - DWORD Hash() const - { - DWORD hash = (_wrapperId >> 32) ^ (_wrapperId & 0xFFFFFFFF); -#if POINTER_BITS == 32 - return hash ^ (DWORD)_identity; -#else - INT64 identityInt64 = (INT64)_identity; - return hash ^ (identityInt64 >> 32) ^ (identityInt64 & 0xFFFFFFFF); -#endif - } - - bool operator==(const Key & rhs) const { return _identity == rhs._identity && _wrapperId == rhs._wrapperId; } - - private: - void* _identity; - INT64 _wrapperId; - }; - - Key GetKey() const - { - return Key(Identity, WrapperId); - } - }; - - const DWORD ExternalObjectContext::InvalidSyncBlockIndex = 0; // See syncblk.h - - static_assert((sizeof(ExternalObjectContext) % sizeof(void*)) == 0, "Keep context pointer size aligned"); - - // Holder for a External Wrapper Result - struct ExternalWrapperResultHolder - { - InteropLib::Com::ExternalWrapperResult Result; - ExternalWrapperResultHolder() - : Result{} - { } - ~ExternalWrapperResultHolder() - { - if (Result.Context != NULL) - { - GCX_PREEMP(); - // We also request collection notification since this holder is presently - // only used for new activation of wrappers therefore the notification won't occur - // at the typical time of before finalization. - InteropLib::Com::DestroyWrapperForExternal(Result.Context, /* notifyIsBeingCollected */ true); - } - } - InteropLib::Com::ExternalWrapperResult* operator&() - { - return &Result; - } - ExternalObjectContext* GetContext() - { - return static_cast(Result.Context); - } - ExternalObjectContext* DetachContext() - { - ExternalObjectContext* t = GetContext(); - Result.Context = NULL; - return t; - } - }; - - using ExtObjCxtRefCache = RCWRefCache; - - class ExtObjCxtCache - { - static Volatile g_Instance; - - public: // static - static ExtObjCxtCache* GetInstanceNoThrow() noexcept - { - CONTRACT(ExtObjCxtCache*) - { - NOTHROW; - GC_NOTRIGGER; - POSTCONDITION(CheckPointer(RETVAL, NULL_OK)); - } - CONTRACT_END; - - RETURN g_Instance; - } - - static ExtObjCxtCache* GetInstance() - { - CONTRACT(ExtObjCxtCache*) - { - THROWS; - GC_NOTRIGGER; - POSTCONDITION(RETVAL != NULL); - } - CONTRACT_END; - - if (g_Instance.Load() == NULL) - { - ExtObjCxtCache* instMaybe = new ExtObjCxtCache(); - - // Attempt to set the global instance. - if (NULL != InterlockedCompareExchangeT(&g_Instance, instMaybe, NULL)) - delete instMaybe; - } - - RETURN g_Instance; - } - - public: // Inner class definitions - class Traits : public DefaultSHashTraits - { - public: - using key_t = ExternalObjectContext::Key; - static const key_t GetKey(_In_ element_t e) { LIMITED_METHOD_CONTRACT; return e->GetKey(); } - static count_t Hash(_In_ key_t key) { LIMITED_METHOD_CONTRACT; return (count_t)key.Hash(); } - static bool Equals(_In_ key_t lhs, _In_ key_t rhs) { LIMITED_METHOD_CONTRACT; return lhs == rhs; } - }; - - // Alias some useful types - using Element = SHash::element_t; - using Iterator = SHash::Iterator; - - class ReaderLock final - { - SimpleReadLockHolder _lock; - public: - ReaderLock(_In_ ExtObjCxtCache* cache) - : _lock{ &cache->_lock } - { } - - ~ReaderLock() = default; - }; - - class WriterLock final - { - SimpleWriteLockHolder _lock; - public: - WriterLock(_In_ ExtObjCxtCache* cache) - : _lock{ &cache->_lock } - { } - - ~WriterLock() = default; - }; - - private: - friend struct InteropLibImports::RuntimeCallContext; - SHash _hashMap; - SimpleRWLock _lock; - ExtObjCxtRefCache* _refCache; - - ExtObjCxtCache() - : _lock(COOPERATIVE, LOCK_TYPE_DEFAULT) - , _refCache(GetAppDomain()->GetRCWRefCache()) - { } - ~ExtObjCxtCache() = default; - - public: -#if _DEBUG - bool IsLockHeld() - { - WRAPPER_NO_CONTRACT; - return (_lock.LockTaken() != FALSE); - } -#endif // _DEBUG - - // Get the associated reference cache with this external object cache. - ExtObjCxtRefCache* GetRefCache() - { - WRAPPER_NO_CONTRACT; - return _refCache; - } - - // Create a managed IEnumerable instance for this collection. - // The collection should respect the supplied arguments. - // withFlags - If Flag_None, then ignore. Otherwise objects must have these flags. - // threadContext - The object must be associated with the supplied thread context. - OBJECTREF CreateManagedEnumerable(_In_ DWORD withFlags, _In_opt_ void* threadContext) - { - CONTRACT(OBJECTREF) - { - THROWS; - GC_TRIGGERS; - MODE_COOPERATIVE; - PRECONDITION(!IsLockHeld()); - PRECONDITION(!(withFlags & ExternalObjectContext::Flags_Collected)); - PRECONDITION(!(withFlags & ExternalObjectContext::Flags_Detached)); - POSTCONDITION(RETVAL != NULL); - } - CONTRACT_END; - - struct - { - PTRARRAYREF arrRefTmp; - PTRARRAYREF arrRef; - } gc; - gc.arrRefTmp = NULL; - gc.arrRef = NULL; - GCPROTECT_BEGIN(gc); - - // Only add objects that are in the correct thread - // context, haven't been detached from the cache, and have - // the appropriate flags set. - // Define a macro predicate since it used in multiple places. - // If an instance is in the hashmap, it is active. This invariant - // holds because the GC is what marks and removes from the cache. -#define SELECT_OBJECT(XX) XX->ThreadContext == threadContext \ - && !XX->IsSet(ExternalObjectContext::Flags_Detached) \ - && (withFlags == ExternalObjectContext::Flags_None || XX->IsSet(withFlags)) - - // Determine the count of objects to return. - SIZE_T objCountMax = 0; - { - ReaderLock lock(this); - Iterator end = _hashMap.End(); - for (Iterator curr = _hashMap.Begin(); curr != end; ++curr) - { - ExternalObjectContext* inst = *curr; - if (SELECT_OBJECT(inst)) - { - objCountMax++; - } - } - } - - // Allocate enumerable type to return. - gc.arrRef = (PTRARRAYREF)AllocateObjectArray((DWORD)objCountMax, g_pObjectClass); - - CQuickArrayList localList; - - // Iterate over the hashmap again while populating the above array - // using the same predicate as before and holding onto context instances. - SIZE_T objCount = 0; - if (0 < objCountMax) - { - ReaderLock lock(this); - Iterator end = _hashMap.End(); - for (Iterator curr = _hashMap.Begin(); curr != end; ++curr) - { - ExternalObjectContext* inst = *curr; - if (SELECT_OBJECT(inst)) - { - localList.Push(inst); - - gc.arrRef->SetAt(objCount, inst->GetObjectRef()); - objCount++; - - STRESS_LOG1(LF_INTEROP, LL_INFO1000, "Add EOC to Enumerable: 0x%p\n", inst); - } - - // There is a chance more objects were added to the hash while the - // lock was released during array allocation. Once we hit the computed max - // we stop to avoid looking longer than needed. - if (objCount == objCountMax) - break; - } - } - -#undef SELECT_OBJECT - - // During the allocation of the array to return, a GC could have - // occurred and objects detached from this cache. In order to avoid - // having null array elements we will allocate a new array. - // This subsequent allocation is okay because the array we are - // replacing extends all object lifetimes. - if (objCount < objCountMax) - { - gc.arrRefTmp = (PTRARRAYREF)AllocateObjectArray((DWORD)objCount, g_pObjectClass); - - void* dest = gc.arrRefTmp->GetDataPtr(); - void* src = gc.arrRef->GetDataPtr(); - SIZE_T elementSize = gc.arrRef->GetComponentSize(); - - memmoveGCRefs(dest, src, objCount * elementSize); - gc.arrRef = gc.arrRefTmp; - } - - // All objects are now referenced from the array so won't be collected - // at this point. This means we can safely iterate over the ExternalObjectContext - // instances. - { - // Separate the wrapper from the tracker runtime prior to - // passing them onto the caller. This call is okay to make - // even if the instance isn't from the tracker runtime. - // We switch to Preemptive mode since separating a wrapper - // requires us to call out to non-runtime code which could - // call back into the runtime and/or trigger a GC. - GCX_PREEMP(); - for (SIZE_T i = 0; i < localList.Size(); i++) - { - ExternalObjectContext* inst = localList[i]; - InteropLib::Com::SeparateWrapperFromTrackerRuntime(inst); - } - } - - GCPROTECT_END(); - - RETURN gc.arrRef; - } - - ExternalObjectContext* Find(_In_ const ExternalObjectContext::Key& key) - { - CONTRACT(ExternalObjectContext*) - { - NOTHROW; - GC_NOTRIGGER; - MODE_COOPERATIVE; - PRECONDITION(IsLockHeld()); - POSTCONDITION(CheckPointer(RETVAL, NULL_OK)); - } - CONTRACT_END; - - // Forbid the GC from messing with the hash table. - GCX_FORBID(); - - RETURN _hashMap.Lookup(key); - } - - ExternalObjectContext* Add(_In_ ExternalObjectContext* cxt) - { - CONTRACT(ExternalObjectContext*) - { - THROWS; - GC_NOTRIGGER; - MODE_COOPERATIVE; - PRECONDITION(IsLockHeld()); - PRECONDITION(!Traits::IsNull(cxt) && !Traits::IsDeleted(cxt)); - PRECONDITION(cxt->Identity != NULL); - PRECONDITION(Find(cxt->GetKey()) == NULL); - POSTCONDITION(RETVAL == cxt); - } - CONTRACT_END; - - _hashMap.Add(cxt); - RETURN cxt; - } - - ExternalObjectContext* FindOrAdd(_In_ const ExternalObjectContext::Key& key, _In_ ExternalObjectContext* newCxt) - { - CONTRACT(ExternalObjectContext*) - { - THROWS; - GC_NOTRIGGER; - MODE_COOPERATIVE; - PRECONDITION(IsLockHeld()); - PRECONDITION(!Traits::IsNull(newCxt) && !Traits::IsDeleted(newCxt)); - PRECONDITION(key == newCxt->GetKey()); - POSTCONDITION(CheckPointer(RETVAL)); - } - CONTRACT_END; - - // Forbid the GC from messing with the hash table. - GCX_FORBID(); - - ExternalObjectContext* cxt = Find(key); - if (cxt == NULL) - cxt = Add(newCxt); - - RETURN cxt; - } - - void Remove(_In_ ExternalObjectContext* cxt) - { - CONTRACTL - { - NOTHROW; - GC_NOTRIGGER; - MODE_ANY; - PRECONDITION(!Traits::IsNull(cxt) && !Traits::IsDeleted(cxt)); - PRECONDITION(cxt->Identity != NULL); - - // The GC thread doesn't have to take the lock - // since all other threads access in cooperative mode - PRECONDITION( - (IsLockHeld() && GetThread()->PreemptiveGCDisabled()) - || Debug_IsLockedViaThreadSuspension()); - } - CONTRACTL_END; - - _hashMap.Remove(cxt->GetKey()); - } - - void DetachNotPromotedEOCs() - { - CONTRACTL - { - NOTHROW; - GC_NOTRIGGER; - MODE_ANY; - PRECONDITION(GCHeapUtilities::IsGCInProgress()); // GC is in progress and the runtime is suspended - } - CONTRACTL_END; - - Iterator curr = _hashMap.Begin(); - Iterator end = _hashMap.End(); - - ExternalObjectContext* cxt; - for (; curr != end; ++curr) - { - cxt = *curr; - if (!cxt->IsSet(ExternalObjectContext::Flags_Detached) - && !GCHeapUtilities::GetGCHeap()->IsPromoted(OBJECTREFToObject(cxt->GetObjectRef()))) - { - // Indicate the wrapper entry has been detached. - cxt->MarkDetached(); - - // Notify the wrapper it was not promoted and is being collected. - InteropLib::Com::NotifyWrapperForExternalIsBeingCollected(cxt); - } - } - } - }; - - // Global instance of the external object cache - Volatile ExtObjCxtCache::g_Instance; - - // Indicator for if a ComWrappers implementation is globally registered - INT64 g_marshallingGlobalInstanceId = ComWrappersNative::InvalidWrapperId; - INT64 g_trackerSupportGlobalInstanceId = ComWrappersNative::InvalidWrapperId; - - // Defined handle types for the specific object uses. - const HandleType InstanceHandleType{ HNDTYPE_REFCOUNTED }; - - // Scenarios for ComWrappers usage. - // These values should match the managed definition in ComWrappers. - enum class ComWrappersScenario - { - Instance = 0, - TrackerSupportGlobalInstance = 1, - MarshallingGlobalInstance = 2, - }; - - void* CallComputeVTables( - _In_ ComWrappersScenario scenario, - _In_ OBJECTREF* implPROTECTED, - _In_ OBJECTREF* instancePROTECTED, - _In_ INT32 flags, - _Out_ DWORD* vtableCount) - { - CONTRACTL - { - THROWS; - MODE_COOPERATIVE; - PRECONDITION(implPROTECTED != NULL); - PRECONDITION(instancePROTECTED != NULL); - PRECONDITION(vtableCount != NULL); - } - CONTRACTL_END; - - void* vtables = NULL; - - PREPARE_NONVIRTUAL_CALLSITE(METHOD__COMWRAPPERS__COMPUTE_VTABLES); - DECLARE_ARGHOLDER_ARRAY(args, 5); - args[ARGNUM_0] = DWORD_TO_ARGHOLDER(scenario); - args[ARGNUM_1] = OBJECTREF_TO_ARGHOLDER(*implPROTECTED); - args[ARGNUM_2] = OBJECTREF_TO_ARGHOLDER(*instancePROTECTED); - args[ARGNUM_3] = DWORD_TO_ARGHOLDER(flags); - args[ARGNUM_4] = PTR_TO_ARGHOLDER(vtableCount); - CALL_MANAGED_METHOD(vtables, void*, args); - - return vtables; - } - - OBJECTREF CallCreateObject( - _In_ ComWrappersScenario scenario, - _In_ OBJECTREF* implPROTECTED, - _In_ IUnknown* externalComObject, - _In_ INT32 flags) - { - CONTRACTL - { - THROWS; - MODE_COOPERATIVE; - PRECONDITION(implPROTECTED != NULL); - PRECONDITION(externalComObject != NULL); - } - CONTRACTL_END; - - OBJECTREF retObjRef; - - PREPARE_NONVIRTUAL_CALLSITE(METHOD__COMWRAPPERS__CREATE_OBJECT); - DECLARE_ARGHOLDER_ARRAY(args, 4); - args[ARGNUM_0] = DWORD_TO_ARGHOLDER(scenario); - args[ARGNUM_1] = OBJECTREF_TO_ARGHOLDER(*implPROTECTED); - args[ARGNUM_2] = PTR_TO_ARGHOLDER(externalComObject); - args[ARGNUM_3] = DWORD_TO_ARGHOLDER(flags); - CALL_MANAGED_METHOD_RETREF(retObjRef, OBJECTREF, args); - - return retObjRef; - } - - void CallReleaseObjects( - _In_ OBJECTREF* implPROTECTED, - _In_ OBJECTREF* objsEnumPROTECTED) - { - CONTRACTL - { - THROWS; - MODE_COOPERATIVE; - PRECONDITION(implPROTECTED != NULL); - PRECONDITION(objsEnumPROTECTED != NULL); - } - CONTRACTL_END; - - PREPARE_NONVIRTUAL_CALLSITE(METHOD__COMWRAPPERS__RELEASE_OBJECTS); - DECLARE_ARGHOLDER_ARRAY(args, 2); - args[ARGNUM_0] = OBJECTREF_TO_ARGHOLDER(*implPROTECTED); - args[ARGNUM_1] = OBJECTREF_TO_ARGHOLDER(*objsEnumPROTECTED); - CALL_MANAGED_METHOD_NORET(args); - } - - int CallICustomQueryInterface( - _In_ OBJECTREF* implPROTECTED, - _In_ REFGUID iid, - _Outptr_result_maybenull_ void** ppObject) - { - CONTRACTL - { - THROWS; - MODE_COOPERATIVE; - PRECONDITION(implPROTECTED != NULL); - PRECONDITION(ppObject != NULL); - } - CONTRACTL_END; - - int result; - - PREPARE_NONVIRTUAL_CALLSITE(METHOD__COMWRAPPERS__CALL_ICUSTOMQUERYINTERFACE); - DECLARE_ARGHOLDER_ARRAY(args, 3); - args[ARGNUM_0] = OBJECTREF_TO_ARGHOLDER(*implPROTECTED); - args[ARGNUM_1] = PTR_TO_ARGHOLDER(&iid); - args[ARGNUM_2] = PTR_TO_ARGHOLDER(ppObject); - CALL_MANAGED_METHOD(result, int, args); - - return result; - } - - bool TryGetOrCreateComInterfaceForObjectInternal( - _In_opt_ OBJECTREF impl, - _In_ INT64 wrapperId, - _In_ OBJECTREF instance, - _In_ CreateComInterfaceFlags flags, - _In_ ComWrappersScenario scenario, - _Outptr_ void** wrapperRaw) - { - CONTRACT(bool) - { - THROWS; - MODE_COOPERATIVE; - PRECONDITION(instance != NULL); - PRECONDITION(wrapperRaw != NULL); - PRECONDITION((impl != NULL && scenario == ComWrappersScenario::Instance) || (impl == NULL && scenario != ComWrappersScenario::Instance)); - PRECONDITION(wrapperId != ComWrappersNative::InvalidWrapperId); - } - CONTRACT_END; - - HRESULT hr; - - SafeComHolder newWrapper; - void* wrapperRawMaybe = NULL; - - struct - { - OBJECTREF implRef; - OBJECTREF instRef; - } gc; - gc.implRef = impl; - gc.instRef = instance; - GCPROTECT_BEGIN(gc); - - // Check the object's SyncBlock for a managed object wrapper. - SyncBlock* syncBlock = gc.instRef->GetSyncBlock(); - InteropSyncBlockInfo* interopInfo = syncBlock->GetInteropInfo(); - _ASSERTE(syncBlock->IsPrecious()); - - // Query the associated InteropSyncBlockInfo for an existing managed object wrapper. - if (!interopInfo->TryGetManagedObjectComWrapper(wrapperId, &wrapperRawMaybe)) - { - // Compute VTables for the new existing COM object using the supplied COM Wrappers implementation. - // - // N.B. Calling to compute the associated VTables is perhaps early since no lock - // is taken. However, a key assumption here is that the returned memory will be - // idempotent for the same object. - DWORD vtableCount; - void* vtables = CallComputeVTables(scenario, &gc.implRef, &gc.instRef, flags, &vtableCount); - - // Re-query the associated InteropSyncBlockInfo for an existing managed object wrapper. - if (!interopInfo->TryGetManagedObjectComWrapper(wrapperId, &wrapperRawMaybe) - && ((vtables != nullptr && vtableCount > 0) || (vtableCount == 0))) - { - OBJECTHANDLE instHandle = GetAppDomain()->CreateTypedHandle(gc.instRef, InstanceHandleType); - - // Call the InteropLib and create the associated managed object wrapper. - { - GCX_PREEMP(); - hr = InteropLib::Com::CreateWrapperForObject( - instHandle, - vtableCount, - vtables, - flags, - &newWrapper); - } - if (FAILED(hr)) - { - DestroyHandleCommon(instHandle, InstanceHandleType); - COMPlusThrowHR(hr); - } - _ASSERTE(!newWrapper.IsNull()); - - // Try setting the newly created managed object wrapper on the InteropSyncBlockInfo. - if (!interopInfo->TrySetManagedObjectComWrapper(wrapperId, newWrapper)) - { - // The new wrapper couldn't be set which means a wrapper already exists. - newWrapper.Release(); - - // If the managed object wrapper couldn't be set, then - // it should be possible to get the current one. - if (!interopInfo->TryGetManagedObjectComWrapper(wrapperId, &wrapperRawMaybe)) - { - UNREACHABLE(); - } - } - } - } - - // Determine what to return. - if (!newWrapper.IsNull()) - { - // A new managed object wrapper was created, remove the object from the holder. - // No AddRef() here since the wrapper should be created with a reference. - wrapperRawMaybe = newWrapper.Extract(); - STRESS_LOG1(LF_INTEROP, LL_INFO100, "Created MOW: 0x%p\n", wrapperRawMaybe); - } - else if (wrapperRawMaybe != NULL) - { - // AddRef() the existing wrapper. - IUnknown* wrapper = static_cast(wrapperRawMaybe); - (void)wrapper->AddRef(); - } - - GCPROTECT_END(); - - *wrapperRaw = wrapperRawMaybe; - RETURN (wrapperRawMaybe != NULL); - } - - bool TryGetOrCreateObjectForComInstanceInternal( - _In_opt_ OBJECTREF impl, - _In_ INT64 wrapperId, - _In_ IUnknown* identity, - _In_opt_ IUnknown* inner, - _In_ CreateObjectFlags flags, - _In_ ComWrappersScenario scenario, - _In_opt_ OBJECTREF wrapperMaybe, - _Out_ OBJECTREF* objRef) - { - CONTRACT(bool) - { - THROWS; - MODE_COOPERATIVE; - PRECONDITION(identity != NULL); - PRECONDITION(objRef != NULL); - PRECONDITION((impl != NULL && scenario == ComWrappersScenario::Instance) || (impl == NULL && scenario != ComWrappersScenario::Instance)); - PRECONDITION(wrapperId != ComWrappersNative::InvalidWrapperId); - } - CONTRACT_END; - - HRESULT hr; - ExternalObjectContext* extObjCxt = NULL; - - struct - { - OBJECTREF implRef; - OBJECTREF wrapperMaybeRef; - OBJECTREF objRefMaybe; - } gc; - gc.implRef = impl; - gc.wrapperMaybeRef = wrapperMaybe; - gc.objRefMaybe = NULL; - GCPROTECT_BEGIN(gc); - - STRESS_LOG4(LF_INTEROP, LL_INFO1000, "Get or Create EOC: (Identity: 0x%p) (Flags: %x) (Maybe: 0x%p) (ID: %lld)\n", identity, flags, OBJECTREFToObject(wrapperMaybe), wrapperId); - - ExtObjCxtCache* cache = ExtObjCxtCache::GetInstance(); - InteropLib::OBJECTHANDLE handle = NULL; - - ExternalObjectContext::Key cacheKey(identity, wrapperId); - - // Check if the user requested a unique instance. - bool uniqueInstance = !!(flags & CreateObjectFlags::CreateObjectFlags_UniqueInstance); - if (!uniqueInstance) - { - bool objectFound = false; - bool tryRemove = false; - { - // Perform a quick look up to determine if we know of the object and if - // we need to perform a more expensive cleanup operation below. - ExtObjCxtCache::ReaderLock lock(cache); - extObjCxt = cache->Find(cacheKey); - objectFound = extObjCxt != NULL; - tryRemove = objectFound && extObjCxt->IsSet(ExternalObjectContext::Flags_Detached); - } - - if (tryRemove) - { - // Perform the slower cleanup operation that may be appropriate - // if the object still exists and has been detached. - ExtObjCxtCache::WriterLock lock(cache); - extObjCxt = cache->Find(cacheKey); - objectFound = extObjCxt != NULL; - if (objectFound && extObjCxt->IsSet(ExternalObjectContext::Flags_Detached)) - { - // If an EOC has been found but is marked detached, then we will remove it from the - // cache here instead of letting the GC do it later and pretend like it wasn't found. - STRESS_LOG1(LF_INTEROP, LL_INFO10, "Detached EOC requested: 0x%p\n", extObjCxt); - cache->Remove(extObjCxt); - extObjCxt->MarkNotInCache(); - extObjCxt = NULL; - } - } - - // If is no object found in the cache, check if the object COM instance is actually the CCW - // representing a managed object. If the user passed the Unwrap flag, COM instances that are - // actually CCWs should be unwrapped to the original managed object to allow for round - // tripping object -> COM instance -> object. - if (!objectFound && (flags & CreateObjectFlags::CreateObjectFlags_Unwrap)) - { - GCX_PREEMP(); - - // If the COM instance is a CCW that is not COM-activated, use the object of that wrapper object. - InteropLib::OBJECTHANDLE handleLocal; - if (InteropLib::Com::GetObjectForWrapper(identity, &handleLocal) == S_OK - && InteropLib::Com::IsComActivated(identity) == S_FALSE) - { - handle = handleLocal; - } - } - } - - STRESS_LOG2(LF_INTEROP, LL_INFO1000, "EOC: 0x%p or Handle: 0x%p\n", extObjCxt, handle); - - if (extObjCxt != NULL) - { - gc.objRefMaybe = extObjCxt->GetObjectRef(); - } - else if (handle != NULL) - { - // We have an object handle from the COM instance which is a CCW. - ::OBJECTHANDLE objectHandle = static_cast<::OBJECTHANDLE>(handle); - - // Now we need to check if this object is a CCW from the same ComWrappers instance - // as the one creating the EOC. If it is not, we need to create a new EOC for it. - // Otherwise, use it. This allows for the round-trip from object -> COM instance -> object. - OBJECTREF objRef = NULL; - GCPROTECT_BEGIN(objRef); - objRef = ObjectFromHandle(objectHandle); - - SyncBlock* syncBlock = objRef->GetSyncBlock(); - InteropSyncBlockInfo* interopInfo = syncBlock->GetInteropInfo(); - - // If we found a managed object wrapper in this ComWrappers instance - // and it's the same identity pointer as the one we're creating an EOC for, - // unwrap it. We don't AddRef the wrapper as we don't take a reference to it. - // - // A managed object can have multiple managed object wrappers, with a max of one per context. - // Let's say we have a managed object A and ComWrappers instances C1 and C2. Let B1 and B2 be the - // managed object wrappers for A created with C1 and C2 respectively. - // If we are asked to create an EOC for B1 with the unwrap flag on the C2 ComWrappers instance, - // we will create a new wrapper. In this scenario, we'll only unwrap B2. - void* wrapperRawMaybe = NULL; - if (interopInfo->TryGetManagedObjectComWrapper(wrapperId, &wrapperRawMaybe) - && wrapperRawMaybe == identity) - { - gc.objRefMaybe = objRef; - } - else - { - STRESS_LOG2(LF_INTEROP, LL_INFO1000, "Not unwrapping handle (0x%p) because the object's MOW in this ComWrappers instance (if any) (0x%p) is not the provided identity\n", handle, wrapperRawMaybe); - } - GCPROTECT_END(); - } - - if (gc.objRefMaybe == NULL) - { - // Create context instance for the possibly new external object. - ExternalWrapperResultHolder resultHolder; - - { - GCX_PREEMP(); - hr = InteropLib::Com::CreateWrapperForExternal( - identity, - inner, - flags, - sizeof(ExternalObjectContext), - &resultHolder); - } - if (FAILED(hr)) - COMPlusThrowHR(hr); - - // The user could have supplied a wrapper so assign that now. - gc.objRefMaybe = gc.wrapperMaybeRef; - - // If the wrapper hasn't been set yet, call the implementation to create one. - if (gc.objRefMaybe == NULL) - { - gc.objRefMaybe = CallCreateObject(scenario, &gc.implRef, identity, flags); - } - - // The object may be null if the specified ComWrapper implementation returns null - // or there is no registered global instance. It is the caller's responsibility - // to handle this case and error if necessary. - if (gc.objRefMaybe != NULL) - { - // Construct the new context with the object details. - DWORD eocFlags = (resultHolder.Result.FromTrackerRuntime - ? ExternalObjectContext::Flags_ReferenceTracker - : ExternalObjectContext::Flags_None) | - (uniqueInstance - ? ExternalObjectContext::Flags_None - : ExternalObjectContext::Flags_InCache) | - ((flags & CreateObjectFlags::CreateObjectFlags_Aggregated) != 0 - ? ExternalObjectContext::Flags_Aggregated - : ExternalObjectContext::Flags_None); - - ExternalObjectContext::Construct( - resultHolder.GetContext(), - identity, - GetCurrentCtxCookieWrapper(), - gc.objRefMaybe->GetSyncBlockIndex(), - wrapperId, - eocFlags); - - if (uniqueInstance) - { - extObjCxt = resultHolder.GetContext(); - } - else - { - // Attempt to insert the new context into the cache. - ExtObjCxtCache::WriterLock lock(cache); - extObjCxt = cache->FindOrAdd(cacheKey, resultHolder.GetContext()); - } - - STRESS_LOG2(LF_INTEROP, LL_INFO100, "EOC cache insert: 0x%p == 0x%p\n", extObjCxt, resultHolder.GetContext()); - - // If the returned context matches the new context it means the - // new context was inserted or a unique instance was requested. - if (extObjCxt == resultHolder.GetContext()) - { - // Update the object's SyncBlock with a handle to the context for runtime cleanup. - SyncBlock* syncBlock = gc.objRefMaybe->GetSyncBlock(); - InteropSyncBlockInfo* interopInfo = syncBlock->GetInteropInfo(); - _ASSERTE(syncBlock->IsPrecious()); - - // Since the caller has the option of providing a wrapper, it is - // possible the supplied wrapper already has an associated external - // object and an object can only be associated with one external object. - if (!interopInfo->TrySetExternalComObjectContext((void**)extObjCxt)) - { - // Failed to set the context; one must already exist. - // Remove from the cache above as well. - ExtObjCxtCache::WriterLock lock(cache); - cache->Remove(resultHolder.GetContext()); - - COMPlusThrow(kNotSupportedException); - } - - // Detach from the holder to avoid cleanup. - (void)resultHolder.DetachContext(); - STRESS_LOG2(LF_INTEROP, LL_INFO100, "Created EOC (Unique Instance: %d): 0x%p\n", (int)uniqueInstance, extObjCxt); - - // If this is an aggregation scenario and the identity object - // is a managed object wrapper, we need to call Release() to - // indicate this external object isn't rooted. In the event the - // object is passed out to native code an AddRef() must be called - // based on COM convention and will "fix" the count. - if (flags & CreateObjectFlags::CreateObjectFlags_Aggregated - && resultHolder.Result.ManagedObjectWrapper) - { - (void)identity->Release(); - STRESS_LOG1(LF_INTEROP, LL_INFO100, "EOC aggregated with MOW: 0x%p\n", identity); - } - } - - _ASSERTE(extObjCxt->IsActive()); - } - } - - STRESS_LOG3(LF_INTEROP, LL_INFO1000, "EOC: 0x%p, 0x%p => 0x%p\n", extObjCxt, identity, OBJECTREFToObject(gc.objRefMaybe)); - - GCPROTECT_END(); - - *objRef = gc.objRefMaybe; - RETURN (gc.objRefMaybe != NULL); - } -} - -namespace -{ - BOOL g_isGlobalPeggingOn = TRUE; -} - -namespace InteropLibImports -{ - void* MemAlloc(_In_ size_t sizeInBytes, _In_ AllocScenario scenario) noexcept - { - CONTRACTL - { - NOTHROW; - GC_NOTRIGGER; - MODE_ANY; - PRECONDITION(sizeInBytes != 0); - } - CONTRACTL_END; - - return ::malloc(sizeInBytes); - } - - void MemFree(_In_ void* mem, _In_ AllocScenario scenario) noexcept - { - CONTRACTL - { - NOTHROW; - GC_NOTRIGGER; - MODE_ANY; - PRECONDITION(mem != NULL); - } - CONTRACTL_END; - - ::free(mem); - } - - HRESULT AddMemoryPressureForExternal(_In_ UINT64 memoryInBytes) noexcept - { - CONTRACTL - { - NOTHROW; - MODE_PREEMPTIVE; - } - CONTRACTL_END; - - HRESULT hr = S_OK; - BEGIN_EXTERNAL_ENTRYPOINT(&hr) - { - GCInterface::AddMemoryPressure(memoryInBytes); - } - END_EXTERNAL_ENTRYPOINT; - - return hr; - } - - HRESULT RemoveMemoryPressureForExternal(_In_ UINT64 memoryInBytes) noexcept - { - CONTRACTL - { - NOTHROW; - MODE_PREEMPTIVE; - } - CONTRACTL_END; - - HRESULT hr = S_OK; - BEGIN_EXTERNAL_ENTRYPOINT(&hr) - { - GCInterface::RemoveMemoryPressure(memoryInBytes); - } - END_EXTERNAL_ENTRYPOINT; - - return hr; - } - - HRESULT RequestGarbageCollectionForExternal(_In_ GcRequest req) noexcept - { - CONTRACTL - { - NOTHROW; - MODE_PREEMPTIVE; - } - CONTRACTL_END; - - HRESULT hr = S_OK; - BEGIN_EXTERNAL_ENTRYPOINT(&hr) - { - GCX_COOP_THREAD_EXISTS(GET_THREAD()); - if (req == GcRequest::FullBlocking) - { - GCHeapUtilities::GetGCHeap()->GarbageCollect(2, true, collection_blocking | collection_optimized); - } - else - { - _ASSERTE(req == GcRequest::Default); - GCHeapUtilities::GetGCHeap()->GarbageCollect(); - } - } - END_EXTERNAL_ENTRYPOINT; - - return hr; - } - - HRESULT WaitForRuntimeFinalizerForExternal() noexcept - { - CONTRACTL - { - NOTHROW; - MODE_PREEMPTIVE; - } - CONTRACTL_END; - - HRESULT hr = S_OK; - BEGIN_EXTERNAL_ENTRYPOINT(&hr) - { - FinalizerThread::FinalizerThreadWait(); - } - END_EXTERNAL_ENTRYPOINT; - - return hr; - } - - HRESULT ReleaseExternalObjectsFromCurrentThread() noexcept - { - CONTRACTL - { - NOTHROW; - MODE_PREEMPTIVE; - } - CONTRACTL_END; - - HRESULT hr = S_OK; - BEGIN_EXTERNAL_ENTRYPOINT(&hr) - { - // Switch to cooperative mode so the cache can be queried. - GCX_COOP(); - - struct - { - OBJECTREF implRef; - OBJECTREF objsEnumRef; - } gc; - gc.implRef = NULL; // Use the globally registered implementation. - gc.objsEnumRef = NULL; - GCPROTECT_BEGIN(gc); - - // Pass the objects along to get released. - ExtObjCxtCache* cache = ExtObjCxtCache::GetInstanceNoThrow(); - gc.objsEnumRef = cache->CreateManagedEnumerable( - ExternalObjectContext::Flags_ReferenceTracker, - GetCurrentCtxCookieWrapper()); - - CallReleaseObjects(&gc.implRef, &gc.objsEnumRef); - - GCPROTECT_END(); - } - END_EXTERNAL_ENTRYPOINT; - - return hr; - } - - void DeleteObjectInstanceHandle(_In_ InteropLib::OBJECTHANDLE handle) noexcept - { - CONTRACTL - { - NOTHROW; - GC_NOTRIGGER; - MODE_ANY; - PRECONDITION(handle != NULL); - } - CONTRACTL_END; - - DestroyHandleCommon(static_cast<::OBJECTHANDLE>(handle), InstanceHandleType); - } - - bool HasValidTarget(_In_ InteropLib::OBJECTHANDLE handle) noexcept - { - CONTRACTL - { - NOTHROW; - GC_NOTRIGGER; - MODE_ANY; - PRECONDITION(handle != NULL); - } - CONTRACTL_END; - - ::OBJECTHANDLE objectHandle = static_cast<::OBJECTHANDLE>(handle); - - // A valid target is one that is not null. - bool isNotNull = ObjectHandleIsNull(objectHandle) == FALSE; - return isNotNull; - } - - bool GetGlobalPeggingState() noexcept - { - CONTRACTL - { - NOTHROW; - GC_NOTRIGGER; - MODE_ANY; - } - CONTRACTL_END; - - return (VolatileLoad(&g_isGlobalPeggingOn) != FALSE); - } - - void SetGlobalPeggingState(_In_ bool state) noexcept - { - CONTRACTL - { - NOTHROW; - GC_NOTRIGGER; - MODE_ANY; - } - CONTRACTL_END; - - BOOL newState = state ? TRUE : FALSE; - VolatileStore(&g_isGlobalPeggingOn, newState); - } - - HRESULT GetOrCreateTrackerTargetForExternal( - _In_ IUnknown* externalComObject, - _In_ CreateObjectFlags externalObjectFlags, - _In_ CreateComInterfaceFlags trackerTargetFlags, - _Outptr_ void** trackerTarget) noexcept - { - CONTRACTL - { - NOTHROW; - MODE_PREEMPTIVE; - PRECONDITION(externalComObject != NULL); - PRECONDITION(trackerTarget != NULL); - } - CONTRACTL_END; - - HRESULT hr = S_OK; - BEGIN_EXTERNAL_ENTRYPOINT(&hr) - { - // Switch to Cooperative mode since object references - // are being manipulated. - GCX_COOP(); - - struct - { - OBJECTREF implRef; - OBJECTREF wrapperMaybeRef; - OBJECTREF objRef; - } gc; - gc.implRef = NULL; // Use the globally registered implementation. - gc.wrapperMaybeRef = NULL; // No supplied wrapper here. - gc.objRef = NULL; - GCPROTECT_BEGIN(gc); - - // Get wrapper for external object - bool success = TryGetOrCreateObjectForComInstanceInternal( - gc.implRef, - g_trackerSupportGlobalInstanceId, - externalComObject, - NULL, - externalObjectFlags, - ComWrappersScenario::TrackerSupportGlobalInstance, - gc.wrapperMaybeRef, - &gc.objRef); - - if (!success) - COMPlusThrow(kArgumentNullException); - - // Get wrapper for managed object - success = TryGetOrCreateComInterfaceForObjectInternal( - gc.implRef, - g_trackerSupportGlobalInstanceId, - gc.objRef, - trackerTargetFlags, - ComWrappersScenario::TrackerSupportGlobalInstance, - trackerTarget); - - if (!success) - COMPlusThrow(kArgumentException); - - STRESS_LOG2(LF_INTEROP, LL_INFO100, "Created Target for External: 0x%p => 0x%p\n", OBJECTREFToObject(gc.objRef), *trackerTarget); - GCPROTECT_END(); - } - END_EXTERNAL_ENTRYPOINT; - - return hr; - } - - TryInvokeICustomQueryInterfaceResult TryInvokeICustomQueryInterface( - _In_ InteropLib::OBJECTHANDLE handle, - _In_ REFGUID iid, - _Outptr_result_maybenull_ void** obj) noexcept - { - CONTRACTL - { - NOTHROW; - MODE_ANY; - PRECONDITION(handle != NULL); - PRECONDITION(obj != NULL); - } - CONTRACTL_END; - - *obj = NULL; - - // If this is a GC thread, then someone is trying to query for something - // at a time when we can't run managed code. - if (IsGCThread()) - return TryInvokeICustomQueryInterfaceResult::OnGCThread; - - // Ideally the BEGIN_EXTERNAL_ENTRYPOINT/END_EXTERNAL_ENTRYPOINT pairs - // would be used here. However, this code path can be entered from within - // and from outside the runtime. - MAKE_CURRENT_THREAD_AVAILABLE_EX(GetThreadNULLOk()); - if (CURRENT_THREAD == NULL) - { - CURRENT_THREAD = SetupThreadNoThrow(); - - // If we failed to set up a new thread, we are going to indicate - // there was a general failure to invoke instead of failing fast. - if (CURRENT_THREAD == NULL) - return TryInvokeICustomQueryInterfaceResult::FailedToInvoke; - } - - HRESULT hr; - auto result = TryInvokeICustomQueryInterfaceResult::FailedToInvoke; - EX_TRY_THREAD(CURRENT_THREAD) - { - // Switch to Cooperative mode since object references - // are being manipulated. - GCX_COOP(); - - struct - { - OBJECTREF objRef; - } gc; - gc.objRef = NULL; - GCPROTECT_BEGIN(gc); - - // Get the target of the external object's reference. - ::OBJECTHANDLE objectHandle = static_cast<::OBJECTHANDLE>(handle); - gc.objRef = ObjectFromHandle(objectHandle); - - result = (TryInvokeICustomQueryInterfaceResult)CallICustomQueryInterface(&gc.objRef, iid, obj); - - GCPROTECT_END(); - } - EX_CATCH_HRESULT(hr); - - // Assert valid value. - _ASSERTE(TryInvokeICustomQueryInterfaceResult::Min <= result - && result <= TryInvokeICustomQueryInterfaceResult::Max); - - return result; - } - - struct RuntimeCallContext - { - // Iterators for all known external objects. - ExtObjCxtCache::Iterator Curr; - ExtObjCxtCache::Iterator End; - - // Pointer to cache used to create object references. - ExtObjCxtRefCache* RefCache; - - RuntimeCallContext(_In_ ExtObjCxtCache* cache) - : Curr{ cache->_hashMap.Begin() } - , End{ cache->_hashMap.End() } - , RefCache{ cache->GetRefCache() } - { } - }; - - HRESULT IteratorNext( - _In_ RuntimeCallContext* runtimeContext, - _Outptr_result_maybenull_ void** extObjContext) noexcept - { - CONTRACTL - { - NOTHROW; - GC_NOTRIGGER; - MODE_COOPERATIVE; - PRECONDITION(runtimeContext != NULL); - PRECONDITION(extObjContext != NULL); - - // Should only be called during a GC suspension - PRECONDITION(Debug_IsLockedViaThreadSuspension()); - } - CONTRACTL_END; - - if (runtimeContext->Curr == runtimeContext->End) - { - *extObjContext = NULL; - return S_FALSE; - } - - ExtObjCxtCache::Element e = *runtimeContext->Curr++; - *extObjContext = e; - return S_OK; - } - - HRESULT FoundReferencePath( - _In_ RuntimeCallContext* runtimeContext, - _In_ void* extObjContextRaw, - _In_ InteropLib::OBJECTHANDLE handle) noexcept + int CallICustomQueryInterface( + _In_ OBJECTREF* implPROTECTED, + _In_ REFGUID iid, + _Outptr_result_maybenull_ void** ppObject) { CONTRACTL { - NOTHROW; - GC_NOTRIGGER; + THROWS; MODE_COOPERATIVE; - PRECONDITION(runtimeContext != NULL); - PRECONDITION(extObjContextRaw != NULL); - PRECONDITION(handle != NULL); - - // Should only be called during a GC suspension - PRECONDITION(Debug_IsLockedViaThreadSuspension()); + PRECONDITION(implPROTECTED != NULL); + PRECONDITION(ppObject != NULL); } CONTRACTL_END; - // Get the external object's managed wrapper - ExternalObjectContext* extObjContext = static_cast(extObjContextRaw); - OBJECTREF source = extObjContext->GetObjectRef(); - - // Get the target of the external object's reference. - ::OBJECTHANDLE objectHandle = static_cast<::OBJECTHANDLE>(handle); - OBJECTREF target = ObjectFromHandle(objectHandle); + int result; - // Return if the target has been collected or these are the same object. - if (target == NULL - || source->PassiveGetSyncBlock() == target->PassiveGetSyncBlock()) - { - return S_FALSE; - } + PREPARE_NONVIRTUAL_CALLSITE(METHOD__COMWRAPPERS__CALL_ICUSTOMQUERYINTERFACE); + DECLARE_ARGHOLDER_ARRAY(args, 3); + args[ARGNUM_0] = OBJECTREF_TO_ARGHOLDER(*implPROTECTED); + args[ARGNUM_1] = PTR_TO_ARGHOLDER(&iid); + args[ARGNUM_2] = PTR_TO_ARGHOLDER(ppObject); + CALL_MANAGED_METHOD(result, int, args); - STRESS_LOG2(LF_INTEROP, LL_INFO1000, "Found reference path: 0x%p => 0x%p\n", - OBJECTREFToObject(source), - OBJECTREFToObject(target)); - return runtimeContext->RefCache->AddReferenceFromObjectToObject(source, target); + return result; } + + BOOL g_isGlobalPeggingOn = TRUE; } -extern "C" BOOL QCALLTYPE ComWrappers_TryGetOrCreateComInterfaceForObject( - _In_ QCall::ObjectHandleOnStack comWrappersImpl, - _In_ INT64 wrapperId, - _In_ QCall::ObjectHandleOnStack instance, - _In_ INT32 flags, - _Outptr_ void** wrapper) +extern "C" void QCALLTYPE ComWrappers_GetIUnknownImpl( + _Out_ void** fpQueryInterface, + _Out_ void** fpAddRef, + _Out_ void** fpRelease) { - QCALL_CONTRACT; + QCALL_CONTRACT_NO_GC_TRANSITION; - bool success = false; + _ASSERTE(fpQueryInterface != NULL); + _ASSERTE(fpAddRef != NULL); + _ASSERTE(fpRelease != NULL); - BEGIN_QCALL; + InteropLib::Com::GetIUnknownImpl(fpQueryInterface, fpAddRef, fpRelease); +} - // Switch to Cooperative mode since object references - // are being manipulated. +void ComWrappersNative::MarkWrapperAsComActivated(_In_ IUnknown* wrapperMaybe) +{ + CONTRACTL { - GCX_COOP(); - success = TryGetOrCreateComInterfaceForObjectInternal( - ObjectToOBJECTREF(*comWrappersImpl.m_ppObject), - wrapperId, - ObjectToOBJECTREF(*instance.m_ppObject), - (CreateComInterfaceFlags)flags, - ComWrappersScenario::Instance, - wrapper); + THROWS; + GC_TRIGGERS; + MODE_COOPERATIVE; + PRECONDITION(wrapperMaybe != NULL); } + CONTRACTL_END; - END_QCALL; - - return (success ? TRUE : FALSE); + { + GCX_PREEMP(); + // The IUnknown may or may not represent a wrapper, so E_INVALIDARG is okay here. + HRESULT hr = InteropLib::Com::MarkComActivated(wrapperMaybe); + _ASSERTE(SUCCEEDED(hr) || hr == E_INVALIDARG); + } } -extern "C" BOOL QCALLTYPE ComWrappers_TryGetOrCreateObjectForComInstance( - _In_ QCall::ObjectHandleOnStack comWrappersImpl, - _In_ INT64 wrapperId, - _In_ void* ext, - _In_opt_ void* innerMaybe, - _In_ INT32 flags, - _In_ QCall::ObjectHandleOnStack wrapperMaybe, - _Inout_ QCall::ObjectHandleOnStack retValue) +bool GlobalComWrappersForMarshalling::TryGetOrCreateComInterfaceForObject( + _In_ OBJECTREF instance, + _Outptr_ void** wrapperRaw) { - QCALL_CONTRACT; - - _ASSERTE(ext != NULL); - - bool success = false; - - BEGIN_QCALL; - - HRESULT hr; - IUnknown* externalComObject = reinterpret_cast(ext); - IUnknown* inner = reinterpret_cast(innerMaybe); - - // Determine the true identity and inner of the object - SafeComHolder identity; - hr = InteropLib::Com::DetermineIdentityAndInnerForExternal( - externalComObject, - (CreateObjectFlags)flags, - &identity, - &inner); - _ASSERTE(hr == S_OK); - - // Switch to Cooperative mode since object references - // are being manipulated. + CONTRACTL { - GCX_COOP(); - - OBJECTREF newObj; - success = TryGetOrCreateObjectForComInstanceInternal( - ObjectToOBJECTREF(*comWrappersImpl.m_ppObject), - wrapperId, - identity, - inner, - (CreateObjectFlags)flags, - ComWrappersScenario::Instance, - ObjectToOBJECTREF(*wrapperMaybe.m_ppObject), - &newObj); - - // Set the return value - if (success) - retValue.Set(newObj); + THROWS; + MODE_COOPERATIVE; } + CONTRACTL_END; - END_QCALL; - - return (success ? TRUE : FALSE); -} + void* wrapper; -extern "C" void QCALLTYPE ComWrappers_GetIUnknownImpl( - _Out_ void** fpQueryInterface, - _Out_ void** fpAddRef, - _Out_ void** fpRelease) -{ - QCALL_CONTRACT; + GCPROTECT_BEGIN(instance); - _ASSERTE(fpQueryInterface != NULL); - _ASSERTE(fpAddRef != NULL); - _ASSERTE(fpRelease != NULL); + PREPARE_NONVIRTUAL_CALLSITE(METHOD__COMWRAPPERS__GET_OR_CREATE_COM_INTERFACE_FOR_OBJECT_WITH_GLOBAL_MARSHALLING_INSTANCE); + DECLARE_ARGHOLDER_ARRAY(args, 1); + args[ARGNUM_0] = OBJECTREF_TO_ARGHOLDER(instance); + CALL_MANAGED_METHOD(wrapper, void*, args); - BEGIN_QCALL; + GCPROTECT_END(); - InteropLib::Com::GetIUnknownImpl(fpQueryInterface, fpAddRef, fpRelease); + *wrapperRaw = wrapper; - END_QCALL; + return wrapper != nullptr; } -extern "C" BOOL QCALLTYPE ComWrappers_TryGetComInstance( - _In_ QCall::ObjectHandleOnStack wrapperMaybe, - _Out_ void** externalComObject) +bool GlobalComWrappersForMarshalling::TryGetOrCreateObjectForComInstance( + _In_ IUnknown* externalComObject, + _In_ INT32 objFromComIPFlags, + _Out_ OBJECTREF* objRef) { - QCALL_CONTRACT; - - _ASSERTE(externalComObject != NULL); - - bool success = false; + CONTRACTL + { + THROWS; + MODE_COOPERATIVE; + } + CONTRACTL_END; - BEGIN_QCALL; + // TrackerObject support and unwrapping matches the built-in semantics that the global marshalling scenario mimics. + int flags = CreateObjectFlags::CreateObjectFlags_TrackerObject | CreateObjectFlags::CreateObjectFlags_Unwrap; + if ((objFromComIPFlags & ObjFromComIP::UNIQUE_OBJECT) != 0) + flags |= CreateObjectFlags::CreateObjectFlags_UniqueInstance; - // Switch to Cooperative mode since object references - // are being manipulated. - { - GCX_COOP(); + OBJECTREF obj = NULL; + GCPROTECT_BEGIN(obj); - SyncBlock* syncBlock = ObjectToOBJECTREF(*wrapperMaybe.m_ppObject)->PassiveGetSyncBlock(); - if (syncBlock != nullptr) - { - InteropSyncBlockInfo* interopInfo = syncBlock->GetInteropInfoNoCreate(); - if (interopInfo != nullptr) - { - void* contextMaybe; - if (interopInfo->TryGetExternalComObjectContext(&contextMaybe)) - { - ExternalObjectContext* context = reinterpret_cast(contextMaybe); - IUnknown* identity = reinterpret_cast(context->Identity); - GCX_PREEMP(); - success = SUCCEEDED(identity->QueryInterface(IID_IUnknown, externalComObject)); - } - } - } - } + PREPARE_NONVIRTUAL_CALLSITE(METHOD__COMWRAPPERS__GET_OR_CREATE_OBJECT_FOR_COM_INSTANCE_WITH_GLOBAL_MARSHALLING_INSTANCE); + DECLARE_ARGHOLDER_ARRAY(args, 2); + args[ARGNUM_0] = PTR_TO_ARGHOLDER(externalComObject); + args[ARGNUM_1] = DWORD_TO_ARGHOLDER(flags); + CALL_MANAGED_METHOD_RETREF(obj, OBJECTREF, args); - END_QCALL; + GCPROTECT_END(); - return (success ? TRUE : FALSE); + *objRef = obj; + return obj != NULL; } -extern "C" BOOL QCALLTYPE ComWrappers_TryGetObject( - _In_ void* wrapperMaybe, - _Inout_ QCall::ObjectHandleOnStack instance) +extern "C" void* QCALLTYPE ComWrappers_AllocateRefCountedHandle(_In_ QCall::ObjectHandleOnStack obj) { QCALL_CONTRACT; - _ASSERTE(wrapperMaybe != NULL); - - bool success = false; + void* handle = NULL; BEGIN_QCALL; - // Determine the true identity of the object - SafeComHolder identity; - HRESULT hr = ((IUnknown*)wrapperMaybe)->QueryInterface(IID_IUnknown, &identity); - _ASSERTE(hr == S_OK); - - InteropLib::OBJECTHANDLE handle; - if (InteropLib::Com::GetObjectForWrapper(identity, &handle) == S_OK) { - // Switch to Cooperative mode since object references - // are being manipulated. GCX_COOP(); - // We have an object handle from the COM instance which is a CCW. - ::OBJECTHANDLE objectHandle = static_cast<::OBJECTHANDLE>(handle); - instance.Set(ObjectFromHandle(objectHandle)); - success = true; + handle = GetAppDomain()->CreateTypedHandle(obj.Get(), HNDTYPE_REFCOUNTED); } END_QCALL; - return (success ? TRUE : FALSE); + return handle; } -void ComWrappersNative::DestroyManagedObjectComWrapper(_In_ void* wrapper) +extern "C" void const* QCALLTYPE ComWrappers_GetIReferenceTrackerTargetVftbl() { - CONTRACTL - { - NOTHROW; - GC_TRIGGERS; - MODE_ANY; - PRECONDITION(wrapper != NULL); - } - CONTRACTL_END; + QCALL_CONTRACT_NO_GC_TRANSITION; - STRESS_LOG1(LF_INTEROP, LL_INFO100, "Destroying MOW: 0x%p\n", wrapper); + void const* vftbl = NULL; - { - GCX_PREEMP(); - InteropLib::Com::DestroyWrapperForObject(wrapper); - } + return InteropLib::Com::GetIReferenceTrackerTargetVftbl(); } -void ComWrappersNative::DestroyExternalComObjectContext(_In_ void* contextRaw) +extern "C" void const* QCALLTYPE ComWrappers_GetTaggedImpl() { - CONTRACTL - { - NOTHROW; - GC_TRIGGERS; - MODE_ANY; - PRECONDITION(contextRaw != NULL); - } - CONTRACTL_END; + QCALL_CONTRACT_NO_GC_TRANSITION; -#ifdef _DEBUG - ExternalObjectContext* context = static_cast(contextRaw); - _ASSERTE(!context->IsActive()); -#endif + return InteropLib::Com::GetTaggedCurrentVersionImpl(); +} - STRESS_LOG1(LF_INTEROP, LL_INFO100, "Destroying EOC: 0x%p\n", contextRaw); +extern "C" CLR_BOOL QCALLTYPE TrackerObjectManager_HasReferenceTrackerManager() +{ + QCALL_CONTRACT_NO_GC_TRANSITION; - { - GCX_PREEMP(); - InteropLib::Com::DestroyWrapperForExternal(contextRaw); - } + return InteropLib::Com::HasReferenceTrackerManager(); } -void ComWrappersNative::MarkExternalComObjectContextCollected(_In_ void* contextRaw) +extern "C" CLR_BOOL QCALLTYPE TrackerObjectManager_TryRegisterReferenceTrackerManager(_In_ void* manager) { - CONTRACTL - { - NOTHROW; - GC_NOTRIGGER; - MODE_ANY; - PRECONDITION(contextRaw != NULL); - PRECONDITION(GCHeapUtilities::IsGCInProgress()); - } - CONTRACTL_END; - - ExternalObjectContext* context = static_cast(contextRaw); - _ASSERTE(context->IsActive()); - context->MarkCollected(); + QCALL_CONTRACT_NO_GC_TRANSITION; - bool inCache = context->IsSet(ExternalObjectContext::Flags_InCache); - STRESS_LOG2(LF_INTEROP, LL_INFO100, "Mark Collected EOC (In Cache: %d): 0x%p\n", (int)inCache, contextRaw); + return InteropLib::Com::TryRegisterReferenceTrackerManager(manager); +} - // Verify the caller didn't ignore the cache during creation. - if (inCache) - { - ExtObjCxtCache* cache = ExtObjCxtCache::GetInstanceNoThrow(); - cache->Remove(context); - } +OBJECTHANDLE GCHandleSetObject::Iterator::Current() const +{ + LIMITED_METHOD_CONTRACT; + return _currentEntry->_value; } -void ComWrappersNative::MarkWrapperAsComActivated(_In_ IUnknown* wrapperMaybe) +bool GCHandleSetObject::Iterator::MoveNext() { CONTRACTL { - THROWS; - GC_TRIGGERS; + NOTHROW; + GC_NOTRIGGER; MODE_COOPERATIVE; - PRECONDITION(wrapperMaybe != NULL); + + // Should only be called during a GC suspension + PRECONDITION(Debug_IsLockedViaThreadSuspension()); } CONTRACTL_END; + if (_currentEntry != NULL) { - GCX_PREEMP(); - // The IUnknown may or may not represent a wrapper, so E_INVALIDARG is okay here. - HRESULT hr = InteropLib::Com::MarkComActivated(wrapperMaybe); - _ASSERTE(SUCCEEDED(hr) || hr == E_INVALIDARG); + _currentEntry = _currentEntry->_next; } -} -extern "C" void QCALLTYPE ComWrappers_SetGlobalInstanceRegisteredForMarshalling(INT64 id) -{ - QCALL_CONTRACT_NO_GC_TRANSITION; + if (_currentEntry == NULL) + { + // Certain buckets might be empty, so loop until we find + // one with an entry. + while (++_currentIndex != (int32_t)_buckets->GetNumComponents()) + { + _currentEntry = (HANDLESETENTRYREF)_buckets->GetAt(_currentIndex); + if (_currentEntry != NULL) + { + return true; + } + } - _ASSERTE(g_marshallingGlobalInstanceId == ComWrappersNative::InvalidWrapperId && id != ComWrappersNative::InvalidWrapperId); - g_marshallingGlobalInstanceId = id; -} + return false; + } -bool GlobalComWrappersForMarshalling::IsRegisteredInstance(INT64 id) -{ - return g_marshallingGlobalInstanceId != ComWrappersNative::InvalidWrapperId - && g_marshallingGlobalInstanceId == id; + return true; } -bool GlobalComWrappersForMarshalling::TryGetOrCreateComInterfaceForObject( - _In_ OBJECTREF instance, - _Outptr_ void** wrapperRaw) +namespace InteropLibImports { - CONTRACTL - { - THROWS; - MODE_COOPERATIVE; - } - CONTRACTL_END; - - if (g_marshallingGlobalInstanceId == ComWrappersNative::InvalidWrapperId) - return false; - - // Switch to Cooperative mode since object references - // are being manipulated. + bool HasValidTarget(_In_ InteropLib::OBJECTHANDLE handle) noexcept { - GCX_COOP(); + CONTRACTL + { + NOTHROW; + GC_NOTRIGGER; + MODE_ANY; + PRECONDITION(handle != NULL); + } + CONTRACTL_END; - CreateComInterfaceFlags flags = CreateComInterfaceFlags::CreateComInterfaceFlags_TrackerSupport; + ::OBJECTHANDLE objectHandle = static_cast<::OBJECTHANDLE>(handle); - // Passing NULL as the ComWrappers implementation indicates using the globally registered instance - return TryGetOrCreateComInterfaceForObjectInternal( - NULL, - g_marshallingGlobalInstanceId, - instance, - flags, - ComWrappersScenario::MarshallingGlobalInstance, - wrapperRaw); + // A valid target is one that is not null. + bool isNotNull = ObjectHandleIsNull(objectHandle) == FALSE; + return isNotNull; } -} -bool GlobalComWrappersForMarshalling::TryGetOrCreateObjectForComInstance( - _In_ IUnknown* externalComObject, - _In_ INT32 objFromComIPFlags, - _Out_ OBJECTREF* objRef) -{ - CONTRACTL + void DestroyHandle(_In_ InteropLib::OBJECTHANDLE handle) noexcept { - THROWS; - MODE_COOPERATIVE; - } - CONTRACTL_END; + CONTRACTL + { + NOTHROW; + GC_NOTRIGGER; + MODE_ANY; + PRECONDITION(handle != NULL); + } + CONTRACTL_END; + ::OBJECTHANDLE objectHandle = static_cast<::OBJECTHANDLE>(handle); - if (g_marshallingGlobalInstanceId == ComWrappersNative::InvalidWrapperId) - return false; + DestroyRefcountedHandle(objectHandle); + } - // Determine the true identity of the object - SafeComHolder identity; + bool GetGlobalPeggingState() noexcept { - GCX_PREEMP(); + CONTRACTL + { + NOTHROW; + GC_NOTRIGGER; + MODE_ANY; + } + CONTRACTL_END; - HRESULT hr = externalComObject->QueryInterface(IID_IUnknown, &identity); - _ASSERTE(hr == S_OK); + return (VolatileLoad(&g_isGlobalPeggingOn) != FALSE); } - // Switch to Cooperative mode since object references - // are being manipulated. + bool IsObjectPromoted(_In_ InteropLib::OBJECTHANDLE handle) noexcept { - GCX_COOP(); + CONTRACTL + { + NOTHROW; + GC_NOTRIGGER; + MODE_COOPERATIVE; + } + CONTRACTL_END; - // TrackerObject support and unwrapping matches the built-in semantics that the global marshalling scenario mimics. - int flags = CreateObjectFlags::CreateObjectFlags_TrackerObject | CreateObjectFlags::CreateObjectFlags_Unwrap; - if ((objFromComIPFlags & ObjFromComIP::UNIQUE_OBJECT) != 0) - flags |= CreateObjectFlags::CreateObjectFlags_UniqueInstance; - - // Passing NULL as the ComWrappers implementation indicates using the globally registered instance - return TryGetOrCreateObjectForComInstanceInternal( - NULL /*comWrappersImpl*/, - g_marshallingGlobalInstanceId, - identity, - NULL, - (CreateObjectFlags)flags, - ComWrappersScenario::MarshallingGlobalInstance, - NULL /*wrapperMaybe*/, - objRef); - } -} + if (handle == nullptr) + return false; -extern "C" void QCALLTYPE ComWrappers_SetGlobalInstanceRegisteredForTrackerSupport(INT64 id) -{ - QCALL_CONTRACT_NO_GC_TRANSITION; + ::OBJECTHANDLE objectHandle = static_cast<::OBJECTHANDLE>(handle); - _ASSERTE(g_trackerSupportGlobalInstanceId == ComWrappersNative::InvalidWrapperId && id != ComWrappersNative::InvalidWrapperId); - g_trackerSupportGlobalInstanceId = id; -} + OBJECTREF obj = ObjectFromHandle(objectHandle); -bool GlobalComWrappersForTrackerSupport::IsRegisteredInstance(INT64 id) -{ - return g_trackerSupportGlobalInstanceId != ComWrappersNative::InvalidWrapperId - && g_trackerSupportGlobalInstanceId == id; -} + if (obj == nullptr) + return false; -bool GlobalComWrappersForTrackerSupport::TryGetOrCreateComInterfaceForObject( - _In_ OBJECTREF instance, - _Outptr_ void** wrapperRaw) -{ - CONTRACTL - { - THROWS; - MODE_COOPERATIVE; + return GCHeapUtilities::GetGCHeap()->IsPromoted(OBJECTREFToObject(obj)); } - CONTRACTL_END; - if (g_trackerSupportGlobalInstanceId == ComWrappersNative::InvalidWrapperId) - return false; + void SetGlobalPeggingState(_In_ bool state) noexcept + { + CONTRACTL + { + NOTHROW; + GC_NOTRIGGER; + MODE_ANY; + } + CONTRACTL_END; - // Passing NULL as the ComWrappers implementation indicates using the globally registered instance - return TryGetOrCreateComInterfaceForObjectInternal( - NULL, - g_trackerSupportGlobalInstanceId, - instance, - CreateComInterfaceFlags::CreateComInterfaceFlags_TrackerSupport, - ComWrappersScenario::TrackerSupportGlobalInstance, - wrapperRaw); -} + BOOL newState = state ? TRUE : FALSE; + VolatileStore(&g_isGlobalPeggingOn, newState); + } -bool GlobalComWrappersForTrackerSupport::TryGetOrCreateObjectForComInstance( - _In_ IUnknown* externalComObject, - _Out_ OBJECTREF* objRef) -{ - CONTRACTL + TryInvokeICustomQueryInterfaceResult TryInvokeICustomQueryInterface( + _In_ InteropLib::OBJECTHANDLE handle, + _In_ REFGUID iid, + _Outptr_result_maybenull_ void** obj) noexcept { - THROWS; - MODE_COOPERATIVE; - } - CONTRACTL_END; + CONTRACTL + { + NOTHROW; + MODE_ANY; + PRECONDITION(handle != NULL); + PRECONDITION(obj != NULL); + } + CONTRACTL_END; - if (g_trackerSupportGlobalInstanceId == ComWrappersNative::InvalidWrapperId) - return false; + *obj = NULL; - // Determine the true identity of the object - SafeComHolder identity; - { - GCX_PREEMP(); + // If this is a GC thread, then someone is trying to query for something + // at a time when we can't run managed code. + if (IsGCThread()) + return TryInvokeICustomQueryInterfaceResult::OnGCThread; - HRESULT hr = externalComObject->QueryInterface(IID_IUnknown, &identity); - _ASSERTE(hr == S_OK); - } + // Ideally the BEGIN_EXTERNAL_ENTRYPOINT/END_EXTERNAL_ENTRYPOINT pairs + // would be used here. However, this code path can be entered from within + // and from outside the runtime. + MAKE_CURRENT_THREAD_AVAILABLE_EX(GetThreadNULLOk()); + if (CURRENT_THREAD == NULL) + { + CURRENT_THREAD = SetupThreadNoThrow(); - // Passing NULL as the ComWrappers implementation indicates using the globally registered instance - return TryGetOrCreateObjectForComInstanceInternal( - NULL /*comWrappersImpl*/, - g_trackerSupportGlobalInstanceId, - identity, - NULL, - CreateObjectFlags::CreateObjectFlags_TrackerObject, - ComWrappersScenario::TrackerSupportGlobalInstance, - NULL /*wrapperMaybe*/, - objRef); -} + // If we failed to set up a new thread, we are going to indicate + // there was a general failure to invoke instead of failing fast. + if (CURRENT_THREAD == NULL) + return TryInvokeICustomQueryInterfaceResult::FailedToInvoke; + } -IUnknown* ComWrappersNative::GetIdentityForObject(_In_ OBJECTREF* objectPROTECTED, _In_ REFIID riid, _Out_ INT64* wrapperId, _Out_ bool* isAggregated) -{ - CONTRACTL - { - NOTHROW; - GC_TRIGGERS; - MODE_COOPERATIVE; - PRECONDITION(CheckPointer(objectPROTECTED)); - PRECONDITION(CheckPointer(wrapperId)); - } - CONTRACTL_END; + HRESULT hr; + auto result = TryInvokeICustomQueryInterfaceResult::FailedToInvoke; + EX_TRY_THREAD(CURRENT_THREAD) + { + // Switch to Cooperative mode since object references + // are being manipulated. + GCX_COOP(); + + struct + { + OBJECTREF objRef; + } gc; + gc.objRef = NULL; + GCPROTECT_BEGIN(gc); + + // Get the target of the external object's reference. + ::OBJECTHANDLE objectHandle = static_cast<::OBJECTHANDLE>(handle); + gc.objRef = ObjectFromHandle(objectHandle); - ASSERT_PROTECTED(objectPROTECTED); + result = (TryInvokeICustomQueryInterfaceResult)CallICustomQueryInterface(&gc.objRef, iid, obj); - *wrapperId = ComWrappersNative::InvalidWrapperId; + GCPROTECT_END(); + } + EX_CATCH_HRESULT(hr); - SyncBlock* syncBlock = (*objectPROTECTED)->PassiveGetSyncBlock(); - if (syncBlock == nullptr) - { - return nullptr; + // Assert valid value. + _ASSERTE(TryInvokeICustomQueryInterfaceResult::Min <= result + && result <= TryInvokeICustomQueryInterfaceResult::Max); + + return result; } - InteropSyncBlockInfo* interopInfo = syncBlock->GetInteropInfoNoCreate(); - if (interopInfo == nullptr) + struct RuntimeCallContext { - return nullptr; - } + RCWRefCache* RefCache; + GCHandleSetObject::Iterator _iterator; + }; - void* contextMaybe; - if (interopInfo->TryGetExternalComObjectContext(&contextMaybe)) + bool IteratorNext( + _In_ RuntimeCallContext* runtimeContext, + _Outptr_result_maybenull_ void** referenceTracker, + _Outptr_result_maybenull_ InteropLib::OBJECTHANDLE* proxyHandle) noexcept { - ExternalObjectContext* context = reinterpret_cast(contextMaybe); - *wrapperId = context->WrapperId; - *isAggregated = context->IsSet(ExternalObjectContext::Flags_Aggregated); + CONTRACTL + { + NOTHROW; + GC_NOTRIGGER; + MODE_COOPERATIVE; + PRECONDITION(runtimeContext != NULL); + PRECONDITION(referenceTracker != NULL); + PRECONDITION(proxyHandle != NULL); - IUnknown* identity = reinterpret_cast(context->Identity); - GCX_PREEMP(); - IUnknown* result; - if (SUCCEEDED(identity->QueryInterface(riid, (void**)&result))) + // Should only be called during a GC suspension + PRECONDITION(Debug_IsLockedViaThreadSuspension()); + } + CONTRACTL_END; + + if (!runtimeContext->_iterator.MoveNext()) + { + *referenceTracker = NULL; + *proxyHandle = NULL; + return false; + } + OBJECTHANDLE nativeObjectWrapperHandle = runtimeContext->_iterator.Current(); + REFTRACKEROBJECTWRAPPERREF nativeObjectWrapper = (REFTRACKEROBJECTWRAPPERREF)ObjectFromHandle(nativeObjectWrapperHandle); + + if (nativeObjectWrapper == NULL) { - return result; + *referenceTracker = NULL; + *proxyHandle = NULL; + return true; } + + *referenceTracker = dac_cast(nativeObjectWrapper->GetTrackerObject()); + *proxyHandle = static_cast(nativeObjectWrapper->GetProxyHandle()); + return true; } - return nullptr; -} -namespace -{ - struct CallbackContext - { - bool HasWrapper; - bool IsRooted; - }; - bool IsWrapperRootedCallback(_In_ void* mocw, _In_ void* cxtRaw) + HRESULT FoundReferencePath( + _In_ RuntimeCallContext* runtimeContext, + _In_ InteropLib::OBJECTHANDLE sourceHandle, + _In_ InteropLib::OBJECTHANDLE targetHandle) noexcept { CONTRACTL { NOTHROW; GC_NOTRIGGER; - MODE_ANY; - PRECONDITION(mocw != NULL); - PRECONDITION(cxtRaw != NULL); + MODE_COOPERATIVE; + PRECONDITION(runtimeContext != NULL); + PRECONDITION(sourceHandle != NULL); + PRECONDITION(targetHandle != NULL); + + // Should only be called during a GC suspension + PRECONDITION(Debug_IsLockedViaThreadSuspension()); } CONTRACTL_END; - auto cxt = static_cast(cxtRaw); - cxt->HasWrapper = true; + // Get the external object's managed wrapper + ::OBJECTHANDLE srcHandle = static_cast<::OBJECTHANDLE>(targetHandle); + OBJECTREF source = ObjectFromHandle(srcHandle); - IUnknown* wrapper = static_cast(mocw); - cxt->IsRooted = (InteropLib::Com::IsWrapperRooted(wrapper) == S_OK); + // Get the target of the external object's reference. + ::OBJECTHANDLE tgtHandle = static_cast<::OBJECTHANDLE>(targetHandle); + OBJECTREF target = ObjectFromHandle(tgtHandle ); - // If we find a single rooted wrapper then the managed object - // is considered rooted and we can stop enumerating. - if (cxt->IsRooted) - return false; + // Return if the target has been collected or these are the same object. + if (target == NULL + || source->PassiveGetSyncBlock() == target->PassiveGetSyncBlock()) + { + return S_FALSE; + } - return true; + STRESS_LOG2(LF_INTEROP, LL_INFO1000, "Found reference path: 0x%p => 0x%p\n", + OBJECTREFToObject(source), + OBJECTREFToObject(target)); + return runtimeContext->RefCache->AddReferenceFromObjectToObject(source, target); } } -bool ComWrappersNative::HasManagedObjectComWrapper(_In_ OBJECTREF object, _Out_ bool* isRooted) +namespace +{ + MethodTable* s_pManagedObjectWrapperHolderMT = NULL; +} + +bool ComWrappersNative::IsManagedObjectComWrapper(_In_ OBJECTREF managedObjectWrapperHolderRef, _Out_ bool* pIsRooted) { CONTRACTL { NOTHROW; GC_NOTRIGGER; - PRECONDITION(CheckPointer(isRooted)); + MODE_ANY; } CONTRACTL_END; - *isRooted = false; - SyncBlock* syncBlock = object->PassiveGetSyncBlock(); - if (syncBlock == nullptr) + if (managedObjectWrapperHolderRef->GetGCSafeMethodTable() != s_pManagedObjectWrapperHolderMT ) + { return false; + } - InteropSyncBlockInfo* interopInfo = syncBlock->GetInteropInfoNoCreate(); - if (interopInfo == nullptr) - return false; + MOWHOLDERREF holder = (MOWHOLDERREF)managedObjectWrapperHolderRef; - CallbackContext cxt{}; - interopInfo->EnumManagedObjectComWrappers(&IsWrapperRootedCallback, &cxt); + *pIsRooted = InteropLib::Com::IsRooted(holder->ManagedObjectWrapper); + + return true; +} - *isRooted = cxt.IsRooted; - return cxt.HasWrapper; +namespace +{ + OBJECTHANDLE NativeObjectWrapperCacheHandle = NULL; + RCWRefCache* pAppDomainRCWRefCache = NULL; } void ComWrappersNative::OnFullGCStarted() @@ -2015,27 +512,31 @@ void ComWrappersNative::OnFullGCStarted() CONTRACTL { NOTHROW; + MODE_COOPERATIVE; GC_NOTRIGGER; } CONTRACTL_END; // If no cache exists, then there is nothing to do here. - ExtObjCxtCache* cache = ExtObjCxtCache::GetInstanceNoThrow(); - if (cache != NULL) - { - STRESS_LOG0(LF_INTEROP, LL_INFO10000, "Begin Reference Tracking\n"); - ExtObjCxtRefCache* refCache = cache->GetRefCache(); + if (NativeObjectWrapperCacheHandle == NULL) + return; - // Reset the ref cache - refCache->ResetDependentHandles(); + HANDLESETREF handleSet = (HANDLESETREF)ObjectFromHandle(NativeObjectWrapperCacheHandle); + if (handleSet == NULL) + return; - // Create a call context for the InteropLib. - InteropLibImports::RuntimeCallContext cxt(cache); - (void)InteropLib::Com::BeginExternalObjectReferenceTracking(&cxt); + STRESS_LOG0(LF_INTEROP, LL_INFO10000, "Begin Reference Tracking\n"); + RCWRefCache* refCache = pAppDomainRCWRefCache; - // Shrink cache and clear unused handles. - refCache->ShrinkDependentHandles(); - } + // Reset the ref cache + refCache->ResetDependentHandles(); + + // Create a call context for the InteropLib. + InteropLibImports::RuntimeCallContext cxt{refCache, GCHandleSetObject::Iterator{ handleSet }}; + (void)InteropLib::Com::BeginExternalObjectReferenceTracking(&cxt); + + // Shrink cache and clear unused handles. + refCache->ShrinkDependentHandles(); } void ComWrappersNative::OnFullGCFinished() @@ -2043,31 +544,74 @@ void ComWrappersNative::OnFullGCFinished() CONTRACTL { NOTHROW; + MODE_COOPERATIVE; GC_NOTRIGGER; } CONTRACTL_END; - ExtObjCxtCache* cache = ExtObjCxtCache::GetInstanceNoThrow(); - if (cache != NULL) - { - (void)InteropLib::Com::EndExternalObjectReferenceTracking(); - STRESS_LOG0(LF_INTEROP, LL_INFO10000, "End Reference Tracking\n"); - } + if (NativeObjectWrapperCacheHandle == NULL || ObjectFromHandle(NativeObjectWrapperCacheHandle) == NULL) + return; + + (void)InteropLib::Com::EndExternalObjectReferenceTracking(); + STRESS_LOG0(LF_INTEROP, LL_INFO10000, "End Reference Tracking\n"); } -void ComWrappersNative::AfterRefCountedHandleCallbacks() +void ComWrappersNative::OnAfterGCScanRoots() { CONTRACTL { NOTHROW; + MODE_COOPERATIVE; GC_NOTRIGGER; - MODE_ANY; } CONTRACTL_END; - ExtObjCxtCache* cache = ExtObjCxtCache::GetInstanceNoThrow(); - if (cache != NULL) - cache->DetachNotPromotedEOCs(); + if (NativeObjectWrapperCacheHandle == NULL) + return; + + HANDLESETREF handleSet = (HANDLESETREF)ObjectFromHandle(NativeObjectWrapperCacheHandle); + if (handleSet == NULL) + return; + + STRESS_LOG0(LF_INTEROP, LL_INFO10000, "Detach Non-promoted object from the Reference Tracker\n"); + + // Create a call context for the InteropLib. + InteropLibImports::RuntimeCallContext cxt{pAppDomainRCWRefCache, GCHandleSetObject::Iterator{ handleSet }}; + + (void)InteropLib::Com::DetachNonPromotedObjects(&cxt); +} + +extern "C" void QCALLTYPE ComWrappers_RegisterIsRootedCallback() +{ + QCALL_CONTRACT; + + BEGIN_QCALL; + + // Grab the method table for the objects we inspect in our ref-counted handle callback. + s_pManagedObjectWrapperHolderMT = CoreLibBinder::GetClass(CLASS__MANAGED_OBJECT_WRAPPER_HOLDER); + + END_QCALL; +} + +extern "C" void QCALLTYPE TrackerObjectManager_RegisterNativeObjectWrapperCache(_In_ QCall::ObjectHandleOnStack cache) +{ + QCALL_CONTRACT; + + BEGIN_QCALL; + + GCX_COOP(); + NativeObjectWrapperCacheHandle = GetAppDomain()->CreateHandle(cache.Get()); + // Fetch the RCWRefCache here so we don't try to allocate it during GC. + pAppDomainRCWRefCache = GetAppDomain()->GetRCWRefCache(); + + END_QCALL; +} + +extern "C" CLR_BOOL QCALLTYPE TrackerObjectManager_IsGlobalPeggingEnabled() +{ + QCALL_CONTRACT_NO_GC_TRANSITION; + + return InteropLibImports::GetGlobalPeggingState(); } #endif // FEATURE_COMWRAPPERS diff --git a/src/runtime/src/coreclr/vm/interoplibinterface_comwrappers.h b/src/runtime/src/coreclr/vm/interoplibinterface_comwrappers.h new file mode 100644 index 00000000000..4d534b33a24 --- /dev/null +++ b/src/runtime/src/coreclr/vm/interoplibinterface_comwrappers.h @@ -0,0 +1,165 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +// +// Interface between the VM and Interop library. +// + +#ifndef _INTEROPLIBINTERFACE_COMWRAPPERS_H_ +#define _INTEROPLIBINTERFACE_COMWRAPPERS_H_ + +#include + +// Native calls for the managed ComWrappers API +class ComWrappersNative +{ +public: // COM activation + static void MarkWrapperAsComActivated(_In_ IUnknown* wrapperMaybe); + +public: // Unwrapping support + static bool IsManagedObjectComWrapper(_In_ OBJECTREF managedObjectWrapperHolderRef, _Out_ bool* pIsRooted); + +public: // GC interaction + static void OnFullGCStarted(); + static void OnFullGCFinished(); + static void OnAfterGCScanRoots(); +}; + +// Native QCalls for the abstract ComWrappers managed type. +extern "C" void QCALLTYPE ComWrappers_GetIUnknownImpl( + _Out_ void** fpQueryInterface, + _Out_ void** fpAddRef, + _Out_ void** fpRelease); + +extern "C" void* QCALLTYPE ComWrappers_AllocateRefCountedHandle(_In_ QCall::ObjectHandleOnStack obj); + +extern "C" void const* QCALLTYPE ComWrappers_GetIReferenceTrackerTargetVftbl(); + +extern "C" void const* QCALLTYPE ComWrappers_GetTaggedImpl(); + +extern "C" void QCALLTYPE ComWrappers_RegisterIsRootedCallback(); + +extern "C" CLR_BOOL QCALLTYPE TrackerObjectManager_HasReferenceTrackerManager(); + +extern "C" CLR_BOOL QCALLTYPE TrackerObjectManager_TryRegisterReferenceTrackerManager(_In_ void* manager); + +extern "C" void QCALLTYPE TrackerObjectManager_RegisterNativeObjectWrapperCache(_In_ QCall::ObjectHandleOnStack cache); + +extern "C" CLR_BOOL QCALLTYPE TrackerObjectManager_IsGlobalPeggingEnabled(); + +class GlobalComWrappersForMarshalling +{ +public: + static bool TryGetOrCreateComInterfaceForObject( + _In_ OBJECTREF instance, + _Outptr_ void** wrapperRaw); + + static bool TryGetOrCreateObjectForComInstance( + _In_ IUnknown* externalComObject, + _In_ INT32 objFromComIPFlags, + _Out_ OBJECTREF* objRef); +}; + +// Define "manually managed" definitions of the ComWrappers types +// that are used in diagnostics and during GC. +class GCHandleSetObject; +class GCHandleSetEntryObject; + +class ManagedObjectWrapperHolderObject : public Object +{ + friend class CoreLibBinder; + friend class ClrDataAccess; +private: + OBJECTREF _releaser; + OBJECTREF _wrappedObject; +public: + DPTR(InteropLib::ABI::ManagedObjectWrapperLayout) ManagedObjectWrapper; +}; + +class NativeObjectWrapperObject : public Object +{ + friend class CoreLibBinder; + OBJECTREF _comWrappers; + TADDR _externalComObject; + TADDR _inner; + CLR_BOOL _aggregatedManagedObjectWrapper; + CLR_BOOL _uniqueInstance; + OBJECTHANDLE _proxyHandle; + OBJECTHANDLE _proxyHandleTrackingResurrection; +public: + OBJECTHANDLE GetProxyHandle() const + { + return _proxyHandle; + } + + TADDR GetExternalComObject() const + { + return _externalComObject; + } +}; + +class ReferenceTrackerNativeObjectWrapperObject final : public NativeObjectWrapperObject +{ + friend class CoreLibBinder; + TADDR _trackerObject; + TADDR _contextToken; + int _trackerObjectDisconnected; + CLR_BOOL _releaseTrackerObject; + OBJECTHANDLE _nativeObjectWrapperWeakHandle; +public: + TADDR GetTrackerObject() const + { + return (_trackerObject == (TADDR)nullptr || _trackerObjectDisconnected == 1) ? (TADDR)nullptr : _trackerObject; + } +}; + +#ifdef USE_CHECKED_OBJECTREFS +using MOWHOLDERREF = REF; +using NATIVEOBJECTWRAPPERREF = REF; +using REFTRACKEROBJECTWRAPPERREF = REF; +using HANDLESETENTRYREF = REF; +using HANDLESETREF = REF; +#else +using MOWHOLDERREF = DPTR(ManagedObjectWrapperHolderObject); +using NATIVEOBJECTWRAPPERREF = DPTR(NativeObjectWrapperObject); +using REFTRACKEROBJECTWRAPPERREF = DPTR(ReferenceTrackerNativeObjectWrapperObject); +using HANDLESETENTRYREF = DPTR(GCHandleSetEntryObject); +using HANDLESETREF = DPTR(GCHandleSetObject); +#endif + +class GCHandleSetEntryObject final : public Object +{ + friend class CoreLibBinder; + public: + HANDLESETENTRYREF _next; + OBJECTHANDLE _value; +}; + +class GCHandleSetObject final : public Object +{ + friend class CoreLibBinder; +private: + PTRARRAYREF _buckets; + +public: + class Iterator final + { + PTRARRAYREF _buckets; + HANDLESETENTRYREF _currentEntry; + int32_t _currentIndex; + public: + Iterator(HANDLESETREF obj) + : _buckets(obj->_buckets) + , _currentEntry(nullptr) + , _currentIndex(-1) + { + LIMITED_METHOD_CONTRACT; + } + + OBJECTHANDLE Current() const; + + bool MoveNext(); + }; +}; + +#endif // _INTEROPLIBINTERFACE_COMWRAPPERS_H_ diff --git a/src/runtime/src/coreclr/vm/interoplibinterface_shared.cpp b/src/runtime/src/coreclr/vm/interoplibinterface_shared.cpp index f31b128e47c..2fc5d604ba3 100644 --- a/src/runtime/src/coreclr/vm/interoplibinterface_shared.cpp +++ b/src/runtime/src/coreclr/vm/interoplibinterface_shared.cpp @@ -145,7 +145,7 @@ void Interop::OnAfterGCScanRoots(_In_ bool isConcurrent) CONTRACTL_END; #ifdef FEATURE_COMWRAPPERS - ComWrappersNative::AfterRefCountedHandleCallbacks(); + ComWrappersNative::OnAfterGCScanRoots(); #endif // FEATURE_COMWRAPPERS #ifdef FEATURE_OBJCMARSHAL diff --git a/src/runtime/src/coreclr/vm/interoputil.cpp b/src/runtime/src/coreclr/vm/interoputil.cpp index ad594a000d9..c392397776a 100644 --- a/src/runtime/src/coreclr/vm/interoputil.cpp +++ b/src/runtime/src/coreclr/vm/interoputil.cpp @@ -1174,7 +1174,7 @@ HRESULT SafeQueryInterfacePreemp(IUnknown* pUnk, REFIID riid, IUnknown** pResUnk } #include -#if defined(FEATURE_COMINTEROP) || defined(FEATURE_COMWRAPPERS) +#if defined(FEATURE_COMINTEROP) //-------------------------------------------------------------------------------- // Cleanup helpers @@ -1197,12 +1197,6 @@ void MinorCleanupSyncBlockComData(InteropSyncBlockInfo* pInteropInfo) if (pRCW) pRCW->MinorCleanup(); #endif // FEATURE_COMINTEROP - -#ifdef FEATURE_COMWRAPPERS - void* eoc; - if (pInteropInfo->TryGetExternalComObjectContext(&eoc)) - ComWrappersNative::MarkExternalComObjectContextCollected(eoc); -#endif // FEATURE_COMWRAPPERS } void CleanupSyncBlockComData(InteropSyncBlockInfo* pInteropInfo) @@ -1245,20 +1239,9 @@ void CleanupSyncBlockComData(InteropSyncBlockInfo* pInteropInfo) pCCW->Cleanup(); } #endif // FEATURE_COMINTEROP - -#ifdef FEATURE_COMWRAPPERS - pInteropInfo->ClearManagedObjectComWrappers(&ComWrappersNative::DestroyManagedObjectComWrapper); - - void* eoc; - if (pInteropInfo->TryGetExternalComObjectContext(&eoc)) - { - (void)pInteropInfo->TrySetExternalComObjectContext(NULL, eoc); - ComWrappersNative::DestroyExternalComObjectContext(eoc); - } -#endif // FEATURE_COMWRAPPERS } -#endif // FEATURE_COMINTEROP || FEATURE_COMWRAPPERS +#endif // FEATURE_COMINTEROP #ifdef FEATURE_COMINTEROP @@ -3679,7 +3662,6 @@ void InitializeComInterop() } CONTRACTL_END; - InitializeSListHead(&RCW::s_RCWStandbyList); ComCall::Init(); CtxEntryCache::Init(); ComCallWrapperTemplate::Init(); diff --git a/src/runtime/src/coreclr/vm/interoputil.h b/src/runtime/src/coreclr/vm/interoputil.h index 6f58d44d663..89026337b1c 100644 --- a/src/runtime/src/coreclr/vm/interoputil.h +++ b/src/runtime/src/coreclr/vm/interoputil.h @@ -153,24 +153,16 @@ HRESULT LoadRegTypeLib(_In_ REFGUID guid, // Called from EEStartup, to initialize com Interop specific data structures. void InitializeComInterop(); -#endif // FEATURE_COMINTEROP - //-------------------------------------------------------------------------------- // Clean up Helpers //-------------------------------------------------------------------------------- -#if defined(FEATURE_COMINTEROP) || defined(FEATURE_COMWRAPPERS) - // called by syncblock, on the finalizer thread to do major cleanup void CleanupSyncBlockComData(InteropSyncBlockInfo* pInteropInfo); // called by syncblock, during GC, do only minimal work void MinorCleanupSyncBlockComData(InteropSyncBlockInfo* pInteropInfo); -#endif // FEATURE_COMINTEROP || FEATURE_COMWRAPPERS) - -#ifdef FEATURE_COMINTEROP - // A wrapper that catches all exceptions - used in the OnThreadTerminate case. void ReleaseRCWsInCachesNoThrow(LPVOID pCtxCookie); diff --git a/src/runtime/src/coreclr/vm/metasig.h b/src/runtime/src/coreclr/vm/metasig.h index 840cd137c94..d49bb894c15 100644 --- a/src/runtime/src/coreclr/vm/metasig.h +++ b/src/runtime/src/coreclr/vm/metasig.h @@ -193,10 +193,8 @@ DEFINE_METASIG(SM(Obj_IntPtr_RefIntPtr_RefBool_RetIntPtr, j I r(I) r(F), I)) DEFINE_METASIG(SM(Obj_IntPtr_RefIntPtr_RetIntPtr, j I r(I), I)) #endif // FEATURE_COMINTEROP #ifdef FEATURE_COMWRAPPERS -DEFINE_METASIG_T(SM(Scenario_ComWrappers_Obj_CreateFlags_RefInt_RetPtrVoid, g(COMWRAPPERSSCENARIO) C(COMWRAPPERS) j g(CREATECOMINTERFACEFLAGS) r(i), P(v))) -DEFINE_METASIG_T(SM(Scenario_ComWrappers_IntPtr_CreateFlags_RetObj, g(COMWRAPPERSSCENARIO) C(COMWRAPPERS) I g(CREATEOBJECTFLAGS), j)) -DEFINE_METASIG_T(SM(ComWrappers_IEnumerable_RetVoid, C(COMWRAPPERS) C(IENUMERABLE), v)) -DEFINE_METASIG_T(SM(Obj_RefGuid_RefIntPtr_RetInt, j r(g(GUID)) r(I), i)) +DEFINE_METASIG_T(SM(IntPtr_CreateObjectFlags_RetObj, I g(CREATEOBJECTFLAGS), j)) +DEFINE_METASIG_T(SM(ManagedObjectWrapperHolder_RefGuid_RefIntPtr_RetInt, C(MANAGED_OBJECT_WRAPPER_HOLDER) r(g(GUID)) r(I), i)) #endif // FEATURE_COMWRAPPERS #ifdef FEATURE_OBJCMARSHAL DEFINE_METASIG_T(SM(Exception_Obj_RefIntPtr_RetVoidPtr, C(EXCEPTION) j r(I), P(v))) diff --git a/src/runtime/src/coreclr/vm/object.h b/src/runtime/src/coreclr/vm/object.h index a72ab1ab3b9..b0386ef5d5b 100644 --- a/src/runtime/src/coreclr/vm/object.h +++ b/src/runtime/src/coreclr/vm/object.h @@ -264,6 +264,7 @@ class Object static DWORD ComputeHashCode(); static DWORD GetGlobalNewHashCode(); + inline INT32 TryGetHashCode(); #ifndef DACCESS_COMPILE INT32 GetHashCodeEx(); #endif // #ifndef DACCESS_COMPILE diff --git a/src/runtime/src/coreclr/vm/object.inl b/src/runtime/src/coreclr/vm/object.inl index 9b11f554dcf..467ec47a1b3 100644 --- a/src/runtime/src/coreclr/vm/object.inl +++ b/src/runtime/src/coreclr/vm/object.inl @@ -60,6 +60,31 @@ __forceinline /*static*/ SIZE_T StringObject::GetSize(DWORD strLen) return GetBaseSize() + strLen * sizeof(WCHAR); } +inline INT32 Object::TryGetHashCode() +{ + LIMITED_METHOD_CONTRACT; + SUPPORTS_DAC; + + DWORD bits = GetHeader()->GetBits(); + if (bits & BIT_SBLK_IS_HASH_OR_SYNCBLKINDEX) + { + if (bits & BIT_SBLK_IS_HASHCODE) + { + // Common case: the object already has a hash code + return bits & MASK_HASHCODE; + } + else + { + // We have a sync block index. This means if we already have a hash code, + // it is in the sync block, otherwise we will return 0, which means "not set". + SyncBlock *psb = PassiveGetSyncBlock(); + if (psb != NULL) + return psb->GetHashCode(); + } + } + return 0; +} + #ifdef DACCESS_COMPILE inline void Object::EnumMemoryRegions(void) diff --git a/src/runtime/src/coreclr/vm/qcallentrypoints.cpp b/src/runtime/src/coreclr/vm/qcallentrypoints.cpp index 19ce7a5ffa0..a45e3d69a24 100644 --- a/src/runtime/src/coreclr/vm/qcallentrypoints.cpp +++ b/src/runtime/src/coreclr/vm/qcallentrypoints.cpp @@ -424,12 +424,14 @@ static const Entry s_QCall[] = DllImportEntry(ReflectionSerialization_GetCreateUninitializedObjectInfo) #if defined(FEATURE_COMWRAPPERS) DllImportEntry(ComWrappers_GetIUnknownImpl) - DllImportEntry(ComWrappers_TryGetComInstance) - DllImportEntry(ComWrappers_TryGetObject) - DllImportEntry(ComWrappers_TryGetOrCreateComInterfaceForObject) - DllImportEntry(ComWrappers_TryGetOrCreateObjectForComInstance) - DllImportEntry(ComWrappers_SetGlobalInstanceRegisteredForMarshalling) - DllImportEntry(ComWrappers_SetGlobalInstanceRegisteredForTrackerSupport) + DllImportEntry(ComWrappers_AllocateRefCountedHandle) + DllImportEntry(ComWrappers_GetIReferenceTrackerTargetVftbl) + DllImportEntry(ComWrappers_GetTaggedImpl) + DllImportEntry(ComWrappers_RegisterIsRootedCallback) + DllImportEntry(TrackerObjectManager_HasReferenceTrackerManager) + DllImportEntry(TrackerObjectManager_TryRegisterReferenceTrackerManager) + DllImportEntry(TrackerObjectManager_RegisterNativeObjectWrapperCache) + DllImportEntry(TrackerObjectManager_IsGlobalPeggingEnabled) #endif #if defined(FEATURE_OBJCMARSHAL) DllImportEntry(ObjCMarshal_TrySetGlobalMessageSendCallback) @@ -514,7 +516,7 @@ static const Entry s_QCall[] = DllImportEntry(InterfaceMarshaler_ConvertToNative) DllImportEntry(InterfaceMarshaler_ConvertToManaged) #endif -#if defined(FEATURE_COMINTEROP) || defined(FEATURE_COMWRAPPERS) +#if defined(FEATURE_COMINTEROP) DllImportEntry(ComWeakRefToObject) DllImportEntry(ObjectToComWeakRef) #endif diff --git a/src/runtime/src/coreclr/vm/runtimecallablewrapper.cpp b/src/runtime/src/coreclr/vm/runtimecallablewrapper.cpp index 3be731e6654..6b21cdac264 100644 --- a/src/runtime/src/coreclr/vm/runtimecallablewrapper.cpp +++ b/src/runtime/src/coreclr/vm/runtimecallablewrapper.cpp @@ -41,9 +41,6 @@ class Object; #include "finalizerthread.h" #include "dynamicinterfacecastable.h" -// static -SLIST_HEADER RCW::s_RCWStandbyList; - #ifdef FEATURE_COMINTEROP_APARTMENT_SUPPORT #include "olecontexthelpers.h" #endif // FEATURE_COMINTEROP_APARTMENT_SUPPORT @@ -1292,19 +1289,6 @@ const int RCW::s_rGCPressureTable[GCPressureSize_COUNT] = GC_PRESSURE_REMOTE, // GCPressureSize_Remote }; -// Deletes all items in code:s_RCWStandbyList. -void RCW::FlushStandbyList() -{ - LIMITED_METHOD_CONTRACT; - - PSLIST_ENTRY pEntry = InterlockedFlushSList(&RCW::s_RCWStandbyList); - while (pEntry) - { - PSLIST_ENTRY pNextEntry = pEntry->Next; - delete (RCW *)pEntry; - pEntry = pNextEntry; - } -} //-------------------------------------------------------------------------------- // The IUnknown passed in is AddRef'ed if we succeed in creating the wrapper. RCW* RCW::CreateRCW(IUnknown *pUnk, DWORD dwSyncBlockIndex, DWORD flags, MethodTable *pClassMT) @@ -1344,16 +1328,7 @@ RCW* RCW::CreateRCWInternal(IUnknown *pUnk, DWORD dwSyncBlockIndex, DWORD flags, CONTRACT_END; // now allocate the wrapper - RCW *pWrap = (RCW *)InterlockedPopEntrySList(&RCW::s_RCWStandbyList); - if (pWrap != NULL) - { - // cache hit - reinitialize the data structure - new (pWrap) RCW(); - } - else - { - pWrap = new RCW(); - } + RCW *pWrap = new RCW(); AppDomain * pAppDomain = GetAppDomain(); ULONG cbRef = SafeAddRefPreemp(pUnk); @@ -1764,7 +1739,7 @@ void RCW::Cleanup() #endif // If there's no thread currently working with the RCW, this call will release helper fields on IUnkEntry - // and recycle the entire RCW structure, i.e. insert it in the standby list to be reused or free the memory. + // and delete the entire RCW structure. // If a thread still keeps a ref-count on the RCW, it will release it when it's done. Keeping the structure // and the helper fields alive reduces the chances of memory corruption in race scenarios. DecrementUseCount(); diff --git a/src/runtime/src/coreclr/vm/runtimecallablewrapper.h b/src/runtime/src/coreclr/vm/runtimecallablewrapper.h index 40e95667bbf..b42f74bdc40 100644 --- a/src/runtime/src/coreclr/vm/runtimecallablewrapper.h +++ b/src/runtime/src/coreclr/vm/runtimecallablewrapper.h @@ -99,9 +99,6 @@ struct RCW static CreationFlags CreationFlagsFromObjForComIPFlags(ObjFromComIP::flags flags); - // List of RCW instances that have been freed since the last RCW cleanup. - static SLIST_HEADER s_RCWStandbyList; - // Simple read-only iterator for all cached interface pointers. class CachedInterfaceEntryIterator { @@ -161,9 +158,6 @@ struct RCW ZeroMemory(this, sizeof(*this)); } - // Deletes all items in code:s_RCWStandbyList. - static void FlushStandbyList(); - // Create a new wrapper for given IUnk, IDispatch static RCW* CreateRCW(IUnknown *pUnk, DWORD dwSyncBlockIndex, DWORD flags, MethodTable *pClassMT); @@ -489,20 +483,11 @@ struct RCW if (InterlockedDecrement(&m_cbUseCount) == 0) { - // this was the final decrement, go ahead and delete/recycle the RCW - { - GCX_PREEMP(); - m_UnkEntry.Free(); - } + // this was the final decrement, go ahead and delete the RCW + GCX_PREEMP(); + m_UnkEntry.Free(); - if (g_fEEShutDown) - { - delete this; - } - else - { - InterlockedPushEntrySList(&RCW::s_RCWStandbyList, (PSLIST_ENTRY)this); - } + delete this; } } diff --git a/src/runtime/src/coreclr/vm/syncblk.cpp b/src/runtime/src/coreclr/vm/syncblk.cpp index 073dc9c3f3f..0d4e05a3bd4 100644 --- a/src/runtime/src/coreclr/vm/syncblk.cpp +++ b/src/runtime/src/coreclr/vm/syncblk.cpp @@ -52,11 +52,6 @@ SPTR_IMPL (SyncBlockCache, SyncBlockCache, s_pSyncBlockCache); #ifndef DACCESS_COMPILE -#ifndef TARGET_UNIX -// static -SLIST_HEADER InteropSyncBlockInfo::s_InteropInfoStandbyList; -#endif // !TARGET_UNIX - InteropSyncBlockInfo::~InteropSyncBlockInfo() { CONTRACTL @@ -69,35 +64,7 @@ InteropSyncBlockInfo::~InteropSyncBlockInfo() CONTRACTL_END; FreeUMEntryThunk(); - -#if defined(FEATURE_COMWRAPPERS) - delete m_managedObjectComWrapperMap; -#endif // FEATURE_COMWRAPPERS -} - -#ifndef TARGET_UNIX -// Deletes all items in code:s_InteropInfoStandbyList. -void InteropSyncBlockInfo::FlushStandbyList() -{ - CONTRACTL - { - NOTHROW; - GC_TRIGGERS; - MODE_ANY; - } - CONTRACTL_END; - - PSLIST_ENTRY pEntry = InterlockedFlushSList(&InteropSyncBlockInfo::s_InteropInfoStandbyList); - while (pEntry) - { - PSLIST_ENTRY pNextEntry = pEntry->Next; - - // make sure to use the global delete since the destructor has already run - ::delete (void *)pEntry; - pEntry = pNextEntry; - } } -#endif // !TARGET_UNIX void InteropSyncBlockInfo::FreeUMEntryThunk() { @@ -660,10 +627,6 @@ void SyncBlockCache::Start() g_SyncBlockCacheInstance.Init(); SyncBlockCache::GetSyncBlockCache()->m_EphemeralBitmap = bm; - -#ifndef TARGET_UNIX - InitializeSListHead(&InteropSyncBlockInfo::s_InteropInfoStandbyList); -#endif // !TARGET_UNIX } @@ -714,7 +677,7 @@ void SyncBlockCache::InsertCleanupSyncBlock(SyncBlock* psb) continue; } -#if defined(FEATURE_COMINTEROP) || defined(FEATURE_COMWRAPPERS) +#if defined(FEATURE_COMINTEROP) if (psb->m_pInteropInfo) { // called during GC @@ -976,23 +939,11 @@ void SyncBlockCache::DeleteSyncBlock(SyncBlock *psb) // clean up comdata if (psb->m_pInteropInfo) { -#if defined(FEATURE_COMINTEROP) || defined(FEATURE_COMWRAPPERS) +#if defined(FEATURE_COMINTEROP) CleanupSyncBlockComData(psb->m_pInteropInfo); -#endif // FEATURE_COMINTEROP || FEATURE_COMWRAPPERS +#endif // FEATURE_COMINTEROP -#ifndef TARGET_UNIX - if (g_fEEShutDown) - { - delete psb->m_pInteropInfo; - } - else - { - psb->m_pInteropInfo->~InteropSyncBlockInfo(); - InterlockedPushEntrySList(&InteropSyncBlockInfo::s_InteropInfoStandbyList, (PSLIST_ENTRY)psb->m_pInteropInfo); - } -#else // !TARGET_UNIX delete psb->m_pInteropInfo; -#endif // !TARGET_UNIX } #ifdef FEATURE_METADATA_UPDATER diff --git a/src/runtime/src/coreclr/vm/syncblk.h b/src/runtime/src/coreclr/vm/syncblk.h index e0ef98c3fcd..5715e9f66d4 100644 --- a/src/runtime/src/coreclr/vm/syncblk.h +++ b/src/runtime/src/coreclr/vm/syncblk.h @@ -608,22 +608,13 @@ class ComClassFactory; struct RCW; class RCWHolder; typedef DPTR(class ComCallWrapper) PTR_ComCallWrapper; - -#include "shash.h" #endif // FEATURE_COMINTEROP - -using ManagedObjectComWrapperByIdMap = MapSHash; class InteropSyncBlockInfo { friend class RCWHolder; friend class ClrDataAccess; public: -#ifndef TARGET_UNIX - // List of InteropSyncBlockInfo instances that have been freed since the last syncblock cleanup. - static SLIST_HEADER s_InteropInfoStandbyList; -#endif // !TARGET_UNIX - InteropSyncBlockInfo() : m_pUMEntryThunk{} #ifdef FEATURE_COMINTEROP @@ -633,32 +624,17 @@ class InteropSyncBlockInfo #endif // FEATURE_COMINTEROP_UNMANAGED_ACTIVATION , m_pRCW{} #endif // FEATURE_COMINTEROP -#ifdef FEATURE_COMWRAPPERS - , m_externalComObjectContext{} - , m_managedObjectComWrapperLock{} - , m_managedObjectComWrapperMap{} -#endif // FEATURE_COMWRAPPERS #ifdef FEATURE_OBJCMARSHAL , m_taggedMemory{} , m_taggedAlloc{} #endif // FEATURE_OBJCMARSHAL { LIMITED_METHOD_CONTRACT; - -#if defined(FEATURE_COMWRAPPERS) - // The GC thread does enumerate these objects so add CRST_UNSAFE_COOPGC. - m_managedObjectComWrapperLock.Init(CrstManagedObjectWrapperMap, CRST_UNSAFE_COOPGC); -#endif // FEATURE_COMWRAPPERS } #ifndef DACCESS_COMPILE ~InteropSyncBlockInfo(); #endif -#ifndef TARGET_UNIX - // Deletes all items in code:s_InteropInfoStandbyList. - static void FlushStandbyList(); -#endif // !TARGET_UNIX - #ifdef FEATURE_COMINTEROP // @@ -802,122 +778,6 @@ class InteropSyncBlockInfo #endif // FEATURE_COMINTEROP -#if defined(FEATURE_COMWRAPPERS) -public: - bool TryGetManagedObjectComWrapper(_In_ INT64 wrapperId, _Out_ void** mocw) - { - LIMITED_METHOD_DAC_CONTRACT; - - *mocw = NULL; - if (m_managedObjectComWrapperMap == NULL) - return false; - - CrstHolder lock(&m_managedObjectComWrapperLock); - return m_managedObjectComWrapperMap->Lookup(wrapperId, mocw); - } - -#ifndef DACCESS_COMPILE - bool TrySetManagedObjectComWrapper(_In_ INT64 wrapperId, _In_ void* mocw, _In_ void* curr = NULL) - { - LIMITED_METHOD_CONTRACT; - - if (m_managedObjectComWrapperMap == NULL) - { - NewHolder map = new ManagedObjectComWrapperByIdMap(); - if (InterlockedCompareExchangeT(&m_managedObjectComWrapperMap, (ManagedObjectComWrapperByIdMap *)map, NULL) == NULL) - { - map.SuppressRelease(); - } - - _ASSERTE(m_managedObjectComWrapperMap != NULL); - } - - CrstHolder lock(&m_managedObjectComWrapperLock); - - if (m_managedObjectComWrapperMap->LookupPtr(wrapperId) != curr) - return false; - - m_managedObjectComWrapperMap->Add(wrapperId, mocw); - return true; - } - - using ClearWrappersCallback = void(void* mocw); - void ClearManagedObjectComWrappers(ClearWrappersCallback* callback) - { - LIMITED_METHOD_CONTRACT; - - if (m_managedObjectComWrapperMap == NULL) - return; - - CQuickArrayList localList; - { - CrstHolder lock(&m_managedObjectComWrapperLock); - if (callback != NULL) - { - ManagedObjectComWrapperByIdMap::Iterator iter = m_managedObjectComWrapperMap->Begin(); - while (iter != m_managedObjectComWrapperMap->End()) - { - localList.Push(iter->Value()); - ++iter; - } - } - - m_managedObjectComWrapperMap->RemoveAll(); - } - - for (SIZE_T i = 0; i < localList.Size(); i++) - callback(localList[i]); - } - - using EnumWrappersCallback = bool(void* mocw, void* cxt); - void EnumManagedObjectComWrappers(EnumWrappersCallback* callback, void* cxt) - { - LIMITED_METHOD_CONTRACT; - - _ASSERTE(callback != NULL); - - if (m_managedObjectComWrapperMap == NULL) - return; - - CrstHolder lock(&m_managedObjectComWrapperLock); - - ManagedObjectComWrapperByIdMap::Iterator iter = m_managedObjectComWrapperMap->Begin(); - while (iter != m_managedObjectComWrapperMap->End()) - { - if (!callback(iter->Value(), cxt)) - break; - ++iter; - } - } -#endif // !DACCESS_COMPILE - - bool TryGetExternalComObjectContext(_Out_ void** eoc) - { - LIMITED_METHOD_DAC_CONTRACT; - *eoc = m_externalComObjectContext; - return (*eoc != NULL); - } - -#ifndef DACCESS_COMPILE - bool TrySetExternalComObjectContext(_In_ void* eoc, _In_ void* curr = NULL) - { - LIMITED_METHOD_CONTRACT; - - return (InterlockedCompareExchangeT( - &m_externalComObjectContext, - eoc, - curr) == curr); - } -#endif // !DACCESS_COMPILE - -private: - // See InteropLib API for usage. - void* m_externalComObjectContext; - - CrstExplicitInit m_managedObjectComWrapperLock; - ManagedObjectComWrapperByIdMap* m_managedObjectComWrapperMap; -#endif // FEATURE_COMWRAPPERS - #ifdef FEATURE_OBJCMARSHAL public: #ifndef DACCESS_COMPILE @@ -1093,20 +953,7 @@ class SyncBlock if (!m_pInteropInfo) { - NewHolder pInteropInfo; -#ifndef TARGET_UNIX - pInteropInfo = (InteropSyncBlockInfo *)InterlockedPopEntrySList(&InteropSyncBlockInfo::s_InteropInfoStandbyList); - - if (pInteropInfo != NULL) - { - // cache hit - reinitialize the data structure - new (pInteropInfo) InteropSyncBlockInfo(); - } - else -#endif // !TARGET_UNIX - { - pInteropInfo = new InteropSyncBlockInfo(); - } + NewHolder pInteropInfo = new InteropSyncBlockInfo(); if (SetInteropInfo(pInteropInfo)) pInteropInfo.SuppressRelease(); diff --git a/src/runtime/src/coreclr/vm/threads.cpp b/src/runtime/src/coreclr/vm/threads.cpp index 740ff01956b..be643cf1652 100644 --- a/src/runtime/src/coreclr/vm/threads.cpp +++ b/src/runtime/src/coreclr/vm/threads.cpp @@ -6867,14 +6867,6 @@ void Thread::DoExtraWorkForFinalizer() if (RequireSyncBlockCleanup()) { -#ifndef TARGET_UNIX - InteropSyncBlockInfo::FlushStandbyList(); -#endif // !TARGET_UNIX - -#ifdef FEATURE_COMINTEROP - RCW::FlushStandbyList(); -#endif // FEATURE_COMINTEROP - SyncBlockCache::GetSyncBlockCache()->CleanupSyncBlocks(); } if (SystemDomain::System()->RequireAppDomainCleanup()) diff --git a/src/runtime/src/coreclr/vm/weakreferencenative.cpp b/src/runtime/src/coreclr/vm/weakreferencenative.cpp index bb0ac10906e..3f1724ef211 100644 --- a/src/runtime/src/coreclr/vm/weakreferencenative.cpp +++ b/src/runtime/src/coreclr/vm/weakreferencenative.cpp @@ -45,10 +45,9 @@ void FinalizeWeakReference(Object* obj) GCHandleUtilities::GetGCHandleManager()->DestroyHandleOfType(handle, handleType); } -#if defined(FEATURE_COMINTEROP) || defined(FEATURE_COMWRAPPERS) +#if defined(FEATURE_COMINTEROP) -// static -extern "C" void QCALLTYPE ComWeakRefToObject(IWeakReference* pComWeakReference, INT64 wrapperId, QCall::ObjectHandleOnStack retRcw) +extern "C" void QCALLTYPE ComWeakRefToObject(IWeakReference* pComWeakReference, QCall::ObjectHandleOnStack retRcw) { QCALL_CONTRACT; BEGIN_QCALL; @@ -78,25 +77,9 @@ extern "C" void QCALLTYPE ComWeakRefToObject(IWeakReference* pComWeakReference, OBJECTREF rcwRef = NULL; GCPROTECT_BEGIN(rcwRef); - if (wrapperId != ComWrappersNative::InvalidWrapperId) - { - // Try the global COM wrappers - if (GlobalComWrappersForTrackerSupport::IsRegisteredInstance(wrapperId)) - { - (void)GlobalComWrappersForTrackerSupport::TryGetOrCreateObjectForComInstance(pTargetIdentity, &rcwRef); - } - else if (GlobalComWrappersForMarshalling::IsRegisteredInstance(wrapperId)) - { - (void)GlobalComWrappersForMarshalling::TryGetOrCreateObjectForComInstance(pTargetIdentity, ObjFromComIP::NONE, &rcwRef); - } - } -#ifdef FEATURE_COMINTEROP - else - { - // If the original RCW was not created through ComWrappers, fall back to the built-in system. - GetObjectRefFromComIP(&rcwRef, pTargetIdentity); - } -#endif // FEATURE_COMINTEROP + // If the original RCW was not created through ComWrappers, fall back to the built-in system. + GetObjectRefFromComIP(&rcwRef, pTargetIdentity); + GCPROTECT_END(); retRcw.Set(rcwRef); } @@ -105,49 +88,32 @@ extern "C" void QCALLTYPE ComWeakRefToObject(IWeakReference* pComWeakReference, return; } -// static -extern "C" IWeakReference * QCALLTYPE ObjectToComWeakRef(QCall::ObjectHandleOnStack obj, INT64* pWrapperId) +extern "C" IWeakReference * QCALLTYPE ObjectToComWeakRef(QCall::ObjectHandleOnStack obj) { QCALL_CONTRACT; IWeakReference* pWeakReference = nullptr; BEGIN_QCALL; - *pWrapperId = ComWrappersNative::InvalidWrapperId; SafeComHolder pWeakReferenceSource(nullptr); - _ASSERTE(obj.m_ppObject != nullptr); { // COM helpers assume COOP mode and the arguments are protected refs. GCX_COOP(); OBJECTREF objRef = obj.Get(); + _ASSERTE(objRef != nullptr); GCPROTECT_BEGIN(objRef); // If the object is not an RCW, then we do not want to use a native COM weak reference to it // If the object is a managed type deriving from a COM type, then we also do not want to use a native COM // weak reference to it. (Otherwise, we'll wind up resolving IWeakReference-s back into the CLR // when we don't want to have reentrancy). -#ifdef FEATURE_COMINTEROP MethodTable* pMT = objRef->GetMethodTable(); if (pMT->IsComObjectType() && (pMT == g_pBaseCOMObject || !pMT->IsExtensibleRCW())) { pWeakReferenceSource = reinterpret_cast(GetComIPFromObjectRef(&objRef, IID_IWeakReferenceSource, false /* throwIfNoComIP */)); } - else -#endif - { -#ifdef FEATURE_COMWRAPPERS - bool isAggregated = false; - pWeakReferenceSource = reinterpret_cast(ComWrappersNative::GetIdentityForObject(&objRef, IID_IWeakReferenceSource, pWrapperId, &isAggregated)); - if (isAggregated) - { - // If the RCW is an aggregated RCW, then the managed object cannot be recreated from the IUnknown as the outer IUnknown wraps the managed object. - // In this case, don't create a weak reference backed by a COM weak reference. - pWeakReferenceSource = nullptr; - } -#endif - } GCPROTECT_END(); } @@ -165,15 +131,4 @@ extern "C" IWeakReference * QCALLTYPE ObjectToComWeakRef(QCall::ObjectHandleOnSt END_QCALL; return pWeakReference; } - -FCIMPL1(FC_BOOL_RET, ComAwareWeakReferenceNative::HasInteropInfo, Object* pObject) -{ - FCALL_CONTRACT; - _ASSERTE(pObject != nullptr); - - SyncBlock* pSyncBlock = pObject->PassiveGetSyncBlock(); - return pSyncBlock != nullptr && pSyncBlock->GetInteropInfoNoCreate() != nullptr; -} -FCIMPLEND - -#endif // FEATURE_COMINTEROP || FEATURE_COMWRAPPERS +#endif // FEATURE_COMINTEROP diff --git a/src/runtime/src/coreclr/vm/weakreferencenative.h b/src/runtime/src/coreclr/vm/weakreferencenative.h index c95f8411950..df2ba1dc23e 100644 --- a/src/runtime/src/coreclr/vm/weakreferencenative.h +++ b/src/runtime/src/coreclr/vm/weakreferencenative.h @@ -13,17 +13,11 @@ #include "weakreference.h" -#if defined(FEATURE_COMINTEROP) || defined(FEATURE_COMWRAPPERS) +#ifdef FEATURE_COMINTEROP -class ComAwareWeakReferenceNative -{ -public: - static FCDECL1(FC_BOOL_RET, HasInteropInfo, Object* pObject); -}; +extern "C" void QCALLTYPE ComWeakRefToObject(IWeakReference * pComWeakReference, QCall::ObjectHandleOnStack retRcw); +extern "C" IWeakReference * QCALLTYPE ObjectToComWeakRef(QCall::ObjectHandleOnStack obj); -extern "C" void QCALLTYPE ComWeakRefToObject(IWeakReference * pComWeakReference, INT64 wrapperId, QCall::ObjectHandleOnStack retRcw); -extern "C" IWeakReference * QCALLTYPE ObjectToComWeakRef(QCall::ObjectHandleOnStack obj, INT64* wrapperId); - -#endif // FEATURE_COMINTEROP || FEATURE_COMWRAPPERS +#endif // FEATURE_COMINTEROP #endif // _WEAKREFERENCENATIVE_H diff --git a/src/runtime/src/libraries/System.Formats.Tar/System.Formats.Tar.sln b/src/runtime/src/libraries/System.Formats.Tar/System.Formats.Tar.sln index 74f14355741..a2fb3b5cbf0 100644 --- a/src/runtime/src/libraries/System.Formats.Tar/System.Formats.Tar.sln +++ b/src/runtime/src/libraries/System.Formats.Tar/System.Formats.Tar.sln @@ -1,4 +1,8 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.14.36105.17 +MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StreamConformanceTests", "..\Common\tests\StreamConformanceTests\StreamConformanceTests.csproj", "{BE259E6E-B4F5-47DC-93D5-204297098A8C}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestUtilities", "..\Common\tests\TestUtilities\TestUtilities.csproj", "{45972587-B4BF-4F09-94DC-20E2D460FAA8}" @@ -39,11 +43,11 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{55A8C7E4-925 EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "gen", "gen", "{0345BAA8-92BC-4499-B550-21AC44910FD2}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "gen", "tools\gen", "{07E13495-DC86-43BF-9E64-2CEA381D892D}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "gen", "gen", "{07E13495-DC86-43BF-9E64-2CEA381D892D}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "tools\src", "{3CB7A441-325E-41C9-B0D3-30D29CC21E82}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{3CB7A441-325E-41C9-B0D3-30D29CC21E82}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ref", "tools\ref", "{F845BA28-9AFC-4B52-8ED1-A4302AEB5C11}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ref", "ref", "{F845BA28-9AFC-4B52-8ED1-A4302AEB5C11}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools", "tools", "{4A77449F-D456-4E19-B31C-7E0E3702680B}" EndProject @@ -124,25 +128,29 @@ Global GlobalSection(NestedProjects) = preSolution {BE259E6E-B4F5-47DC-93D5-204297098A8C} = {6CF0D830-3EE9-44B1-B548-EA8750AD7B3E} {45972587-B4BF-4F09-94DC-20E2D460FAA8} = {6CF0D830-3EE9-44B1-B548-EA8750AD7B3E} - {D2788A26-CDAE-4388-AE4B-A36B0E6DFF9D} = {6CF0D830-3EE9-44B1-B548-EA8750AD7B3E} - {6FD1E284-7B50-4077-B73A-5B31CB0E3577} = {6CF0D830-3EE9-44B1-B548-EA8750AD7B3E} {E0B882C6-2082-45F2-806E-568461A61975} = {9BE8AFF4-D37B-49AF-AFD3-A15E514AC8AE} - {A00011A0-E609-4A49-B893-EBFC72C98707} = {9BE8AFF4-D37B-49AF-AFD3-A15E514AC8AE} {9F751C2B-56DD-4604-A3F3-568627F8C006} = {55A8C7E4-925C-4F21-B68B-CEFC19137A4B} + {D2788A26-CDAE-4388-AE4B-A36B0E6DFF9D} = {6CF0D830-3EE9-44B1-B548-EA8750AD7B3E} + {6FD1E284-7B50-4077-B73A-5B31CB0E3577} = {6CF0D830-3EE9-44B1-B548-EA8750AD7B3E} {00477EA4-C3E5-48A9-8CA8-8CCF689E0DB4} = {0345BAA8-92BC-4499-B550-21AC44910FD2} {CD3A1327-8C67-4370-AC34-033065330F3F} = {0345BAA8-92BC-4499-B550-21AC44910FD2} {E89FEF3E-E0B9-41C4-A51C-9759AD1A3B69} = {0345BAA8-92BC-4499-B550-21AC44910FD2} {50E6D5FD-0E06-4D07-966E-C28E5448A1D3} = {0345BAA8-92BC-4499-B550-21AC44910FD2} + {A00011A0-E609-4A49-B893-EBFC72C98707} = {9BE8AFF4-D37B-49AF-AFD3-A15E514AC8AE} {AFEE875F-22C7-46AE-B28F-AF5C05CA0BA5} = {07E13495-DC86-43BF-9E64-2CEA381D892D} {AABA2E7B-6B45-4DD7-9C33-5F0FCDA1193F} = {07E13495-DC86-43BF-9E64-2CEA381D892D} - {07E13495-DC86-43BF-9E64-2CEA381D892D} = {4A77449F-D456-4E19-B31C-7E0E3702680B} {1720175E-27DA-4004-ABF2-DD47A338A3DB} = {3CB7A441-325E-41C9-B0D3-30D29CC21E82} {EB826FA8-035F-4DEF-8767-CBF94446916B} = {3CB7A441-325E-41C9-B0D3-30D29CC21E82} - {3CB7A441-325E-41C9-B0D3-30D29CC21E82} = {4A77449F-D456-4E19-B31C-7E0E3702680B} {B2F7C18F-2333-432B-AC5E-9AD672582DF3} = {F845BA28-9AFC-4B52-8ED1-A4302AEB5C11} + {07E13495-DC86-43BF-9E64-2CEA381D892D} = {4A77449F-D456-4E19-B31C-7E0E3702680B} + {3CB7A441-325E-41C9-B0D3-30D29CC21E82} = {4A77449F-D456-4E19-B31C-7E0E3702680B} {F845BA28-9AFC-4B52-8ED1-A4302AEB5C11} = {4A77449F-D456-4E19-B31C-7E0E3702680B} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {F9B8DA67-C83B-466D-907C-9541CDBDCFEF} EndGlobalSection + GlobalSection(SharedMSBuildProjectFiles) = preSolution + ..\..\tools\illink\src\ILLink.Shared\ILLink.Shared.projitems*{aaba2e7b-6b45-4dd7-9c33-5f0fcda1193f}*SharedItemsImports = 5 + ..\..\tools\illink\src\ILLink.Shared\ILLink.Shared.projitems*{eb826fa8-035f-4def-8767-cbf94446916b}*SharedItemsImports = 5 + EndGlobalSection EndGlobal diff --git a/src/runtime/src/libraries/System.Formats.Tar/src/System/Formats/Tar/GnuTarEntry.cs b/src/runtime/src/libraries/System.Formats.Tar/src/System/Formats/Tar/GnuTarEntry.cs index ee3bad50c74..3a2a416704e 100644 --- a/src/runtime/src/libraries/System.Formats.Tar/src/System/Formats/Tar/GnuTarEntry.cs +++ b/src/runtime/src/libraries/System.Formats.Tar/src/System/Formats/Tar/GnuTarEntry.cs @@ -20,7 +20,9 @@ internal GnuTarEntry(TarHeader header, TarReader readerOfOrigin) /// /// The type of the entry. /// A string with the path and file name of this entry. - /// When creating an instance using the constructor, only the following entry types are supported: + /// + /// When creating an instance of using this constructor, the and properties are set to , which in the entry header atime and ctime fields is written as null bytes. This ensures compatibility with other tools that are unable to read the atime and ctime in entries, as these two fields are not POSIX compatible because other formats expect the prefix field in the same header location where writes atime and ctime. + /// When creating an instance using the constructor, only the following entry types are supported: /// /// In all platforms: , , , . /// In Unix platforms only: , and . @@ -33,13 +35,16 @@ internal GnuTarEntry(TarHeader header, TarReader readerOfOrigin) public GnuTarEntry(TarEntryType entryType, string entryName) : base(entryType, entryName, TarEntryFormat.Gnu, isGea: false) { - _header._aTime = _header._mTime; // mtime was set in base constructor - _header._cTime = _header._mTime; + _header._aTime = default; + _header._cTime = default; } /// /// Initializes a new instance by converting the specified entry into the GNU format. /// + /// + /// When creating an instance of using this constructor, if is or , then the and properties are set to the same values set in . But if is of any other format, then and are set to , which in the entry header atime and ctime fields is written as null bytes. This ensures compatibility with other tools that are unable to read the atime and ctime in entries, as these two fields are not POSIX compatible because other formats expect the prefix field in the same header location where writes atime and ctime. + /// /// is a and cannot be converted. /// -or- /// The entry type of is not supported for conversion to the GNU format. @@ -54,45 +59,23 @@ public GnuTarEntry(TarEntry other) } else { - bool changedATime = false; - bool changedCTime = false; - - if (other is PaxTarEntry paxOther) - { - changedATime = TarHelpers.TryGetDateTimeOffsetFromTimestampString(paxOther._header.ExtendedAttributes, TarHeader.PaxEaATime, out DateTimeOffset aTime); - if (changedATime) - { - _header._aTime = aTime; - } - - changedCTime = TarHelpers.TryGetDateTimeOffsetFromTimestampString(paxOther._header.ExtendedAttributes, TarHeader.PaxEaCTime, out DateTimeOffset cTime); - if (changedCTime) - { - _header._cTime = cTime; - } - } - - // Either 'other' was V7 or Ustar (those formats do not have atime or ctime), - // or 'other' was PAX and at least one of the timestamps was not found in the extended attributes - if (!changedATime || !changedCTime) - { - DateTimeOffset now = DateTimeOffset.UtcNow; - if (!changedATime) - { - _header._aTime = now; - } - if (!changedCTime) - { - _header._cTime = now; - } - } + // 'other' was V7, Ustar (those formats do not have atime or ctime), + // or even PAX (which could contain atime and ctime in the ExtendedAttributes), but + // to avoid creating a GNU entry that might be incompatible with other tools, + // we avoid setting the atime and ctime fields. The user would have to set them manually + // if they are really needed. + _header._aTime = default; + _header._cTime = default; } } /// - /// A timestamp that represents the last time the file represented by this entry was accessed. + /// A timestamp that represents the last time the file represented by this entry was accessed. Setting a value for this property is not recommended because most TAR reading tools do not support it. /// - /// In Unix platforms, this timestamp is commonly known as atime. + /// + /// In Unix platforms, this timestamp is commonly known as atime. + /// Setting the value of this property to a value other than may cause problems with other tools that read TAR files, because the format writes the atime field where other formats would normally read and write the prefix field in the header. You should only set this property to something other than if this entry will be read by tools that know how to correctly interpret the atime field of the format. + /// public DateTimeOffset AccessTime { get => _header._aTime; @@ -103,9 +86,12 @@ public DateTimeOffset AccessTime } /// - /// A timestamp that represents the last time the metadata of the file represented by this entry was changed. + /// A timestamp that represents the last time the metadata of the file represented by this entry was changed. Setting a value for this property is not recommended because most TAR reading tools do not support it. /// - /// In Unix platforms, this timestamp is commonly known as ctime. + /// + /// In Unix platforms, this timestamp is commonly known as ctime. + /// Setting the value of this property to a value other than may cause problems with other tools that read TAR files, because the format writes the ctime field where other formats would normally read and write the prefix field in the header. You should only set this property to something other than if this entry will be read by tools that know how to correctly interpret the ctime field of the format. + /// public DateTimeOffset ChangeTime { get => _header._cTime; diff --git a/src/runtime/src/libraries/System.Formats.Tar/src/System/Formats/Tar/PaxTarEntry.cs b/src/runtime/src/libraries/System.Formats.Tar/src/System/Formats/Tar/PaxTarEntry.cs index 555e4feaa27..a062993fef0 100644 --- a/src/runtime/src/libraries/System.Formats.Tar/src/System/Formats/Tar/PaxTarEntry.cs +++ b/src/runtime/src/libraries/System.Formats.Tar/src/System/Formats/Tar/PaxTarEntry.cs @@ -103,9 +103,12 @@ public PaxTarEntry(TarEntryType entryType, string entryName, IEnumerable /// Initializes a new instance by converting the specified entry into the PAX format. /// - /// is a and cannot be converted. + /// + /// is a and cannot be converted. /// -or- - /// The entry type of is not supported for conversion to the PAX format. + /// The entry type of is not supported for conversion to the PAX format. + /// + /// When converting a to using this constructor, the and values will get transfered to the dictionary only if their values are not (which is ). public PaxTarEntry(TarEntry other) : base(other, TarEntryFormat.Pax) { @@ -122,8 +125,14 @@ public PaxTarEntry(TarEntry other) { if (other is GnuTarEntry gnuOther) { - _header.ExtendedAttributes[TarHeader.PaxEaATime] = TarHelpers.GetTimestampStringFromDateTimeOffset(gnuOther.AccessTime); - _header.ExtendedAttributes[TarHeader.PaxEaCTime] = TarHelpers.GetTimestampStringFromDateTimeOffset(gnuOther.ChangeTime); + if (gnuOther.AccessTime != default) + { + _header.ExtendedAttributes[TarHeader.PaxEaATime] = TarHelpers.GetTimestampStringFromDateTimeOffset(gnuOther.AccessTime); + } + if (gnuOther.ChangeTime != default) + { + _header.ExtendedAttributes[TarHeader.PaxEaCTime] = TarHelpers.GetTimestampStringFromDateTimeOffset(gnuOther.ChangeTime); + } } } diff --git a/src/runtime/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarHeader.Read.cs b/src/runtime/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarHeader.Read.cs index 99ee9b667f4..e15d7a1add2 100644 --- a/src/runtime/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarHeader.Read.cs +++ b/src/runtime/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarHeader.Read.cs @@ -15,6 +15,8 @@ namespace System.Formats.Tar // Reads the header attributes from a tar archive entry. internal sealed partial class TarHeader { + private readonly byte[] ArrayOf12NullBytes = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + // Attempts to retrieve the next header from the specified tar archive stream. // Throws if end of stream is reached or if any data type conversion fails. // Returns a valid TarHeader object if the attributes were read successfully, null otherwise. @@ -537,11 +539,18 @@ private void ReadPosixAndGnuSharedAttributes(ReadOnlySpan buffer) private void ReadGnuAttributes(ReadOnlySpan buffer) { // Convert byte arrays - long aTime = TarHelpers.ParseNumeric(buffer.Slice(FieldLocations.ATime, FieldLengths.ATime)); - _aTime = TarHelpers.GetDateTimeOffsetFromSecondsSinceEpoch(aTime); - - long cTime = TarHelpers.ParseNumeric(buffer.Slice(FieldLocations.CTime, FieldLengths.CTime)); - _cTime = TarHelpers.GetDateTimeOffsetFromSecondsSinceEpoch(cTime); + ReadOnlySpan aTimeBuffer = buffer.Slice(FieldLocations.ATime, FieldLengths.ATime); + if (!aTimeBuffer.SequenceEqual(ArrayOf12NullBytes)) // null values are ignored + { + long aTime = TarHelpers.ParseNumeric(aTimeBuffer); + _aTime = TarHelpers.GetDateTimeOffsetFromSecondsSinceEpoch(aTime); + } + ReadOnlySpan cTimeBuffer = buffer.Slice(FieldLocations.CTime, FieldLengths.CTime); + if (!cTimeBuffer.SequenceEqual(ArrayOf12NullBytes)) // An all nulls buffer is interpreted as MinValue + { + long cTime = TarHelpers.ParseNumeric(cTimeBuffer); + _cTime = TarHelpers.GetDateTimeOffsetFromSecondsSinceEpoch(cTime); + } // TODO: Read the bytes of the currently unsupported GNU fields, in case user wants to write this entry into another GNU archive, they need to be preserved. https://github.com/dotnet/runtime/issues/68230 } diff --git a/src/runtime/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarHeader.Write.cs b/src/runtime/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarHeader.Write.cs index dd7e15753cf..421cf210efd 100644 --- a/src/runtime/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarHeader.Write.cs +++ b/src/runtime/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarHeader.Write.cs @@ -29,6 +29,9 @@ internal sealed partial class TarHeader private const string GnuLongMetadataName = "././@LongLink"; private const string ArgNameEntry = "entry"; + private const int RootUidGid = 0; + private const string RootUNameGName = "root"; + // Writes the entry in the order required to be able to obtain the seekable data stream size. private void WriteWithSeekableDataStream(TarEntryFormat format, Stream archiveStream, Span buffer) { @@ -358,9 +361,9 @@ internal async Task WriteAsPaxAsync(Stream archiveStream, Memory buffer, C // .NET strings do not include a null terminator by default, need to add it manually and also consider it for the length. private bool IsLinkNameTooLongForRegularField() => _linkName != null && (Encoding.UTF8.GetByteCount(_linkName) + 1) > FieldLengths.LinkName; - // Checks if the name string is too long to fit in the regular header field. + // Checks if the name string is too long to fit in the regular header field (excluding null char). // .NET strings do not include a null terminator by default, need to add it manually and also consider it for the length. - private bool IsNameTooLongForRegularField() => (Encoding.UTF8.GetByteCount(_name) + 1) > FieldLengths.Name; + private bool IsNameTooLongForRegularField() => (Encoding.UTF8.GetByteCount(_name)) > FieldLengths.Name; // Writes the current header as a Gnu entry into the archive stream. // Makes sure to add the preceding LongLink and/or LongPath entries if necessary, before the actual entry. @@ -446,17 +449,17 @@ private TarHeader GetGnuLongLinkMetadataHeader() { Debug.Assert(_linkName != null); MemoryStream dataStream = GetLongMetadataStream(_linkName); - return GetGnuLongMetadataHeader(dataStream, TarEntryType.LongLink, _uid, _gid, _uName, _gName); + return GetGnuLongMetadataHeader(dataStream, TarEntryType.LongLink); } private TarHeader GetGnuLongPathMetadataHeader() { MemoryStream dataStream = GetLongMetadataStream(_name); - return GetGnuLongMetadataHeader(dataStream, TarEntryType.LongPath, _uid, _gid, _uName, _gName); + return GetGnuLongMetadataHeader(dataStream, TarEntryType.LongPath); } // Creates and returns a GNU long metadata header, with the specified long text written into its data stream (seekable). - private static TarHeader GetGnuLongMetadataHeader(MemoryStream dataStream, TarEntryType entryType, int mainEntryUid, int mainEntryGid, string? mainEntryUname, string? mainEntryGname) + private static TarHeader GetGnuLongMetadataHeader(MemoryStream dataStream, TarEntryType entryType) { Debug.Assert(entryType is TarEntryType.LongPath or TarEntryType.LongLink); @@ -464,15 +467,15 @@ private static TarHeader GetGnuLongMetadataHeader(MemoryStream dataStream, TarEn { _name = GnuLongMetadataName, // Same name for both longpath or longlink _mode = TarHelpers.GetDefaultMode(entryType), - _uid = mainEntryUid, - _gid = mainEntryGid, - _mTime = DateTimeOffset.UnixEpoch, // 0 + _uid = RootUidGid, + _gid = RootUidGid, + _mTime = DateTimeOffset.UnixEpoch, // Stores as series of 0 characters _typeFlag = entryType, _dataStream = dataStream, - _uName = mainEntryUname, - _gName = mainEntryGname, - _aTime = DateTimeOffset.UnixEpoch, // 0 - _cTime = DateTimeOffset.UnixEpoch, // 0 + _uName = RootUNameGName, + _gName = RootUNameGName, + _aTime = default, // LongLink/LongPath entries store these as nulls + _cTime = default, // LongLink/LongPath entries store these as nulls }; } @@ -783,8 +786,19 @@ private int WritePosixAndGnuSharedFields(Span buffer) // Saves the gnu-specific fields into the specified spans. private int WriteGnuFields(Span buffer) { - int checksum = WriteAsTimestamp(_aTime, buffer.Slice(FieldLocations.ATime, FieldLengths.ATime)); - checksum += WriteAsTimestamp(_cTime, buffer.Slice(FieldLocations.CTime, FieldLengths.CTime)); + int checksum = 0; + + if (_typeFlag is not TarEntryType.LongLink and not TarEntryType.LongPath) + { + if (_aTime != default) + { + checksum += WriteAsTimestamp(_aTime, buffer.Slice(FieldLocations.ATime, FieldLengths.ATime)); + } + if (_cTime != default) + { + checksum += WriteAsTimestamp(_cTime, buffer.Slice(FieldLocations.CTime, FieldLengths.CTime)); + } + } if (_gnuUnusedBytes != null) { @@ -1031,7 +1045,7 @@ private static int WriteChecksum(int checksum, Span buffer) destination[^2] = (byte)'\0'; int i = destination.Length - 3; - int j = converted.Length - 1; + int j = converted.Length - 2; // Skip the null terminator in 'converted' while (i >= 0) { diff --git a/src/runtime/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarWriter.Unix.cs b/src/runtime/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarWriter.Unix.cs index de3aeb31cb8..fb0b76faad2 100644 --- a/src/runtime/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarWriter.Unix.cs +++ b/src/runtime/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarWriter.Unix.cs @@ -63,8 +63,11 @@ private TarEntry ConstructEntryForWriting(string fullPath, string entryName, Fil } entry._header._mTime = TarHelpers.GetDateTimeOffsetFromSecondsSinceEpoch(status.MTime); - entry._header._aTime = TarHelpers.GetDateTimeOffsetFromSecondsSinceEpoch(status.ATime); - entry._header._cTime = TarHelpers.GetDateTimeOffsetFromSecondsSinceEpoch(status.CTime); + // We do not set atime and ctime by default because many external tools are unable to read GNU entries + // that have these fields set to non-zero values. This is because the GNU format writes atime and ctime in the same + // location where other formats expect the prefix field to be written. + // If the user wants to set atime and ctime, they can do so by constructing the entry manually from the file and + // then setting the values. // This mask only keeps the least significant 12 bits valid for UnixFileModes entry._header._mode = status.Mode & (int)TarHelpers.ValidUnixFileModes; diff --git a/src/runtime/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarWriter.Windows.cs b/src/runtime/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarWriter.Windows.cs index 29905beef85..9443c7cd7a0 100644 --- a/src/runtime/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarWriter.Windows.cs +++ b/src/runtime/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarWriter.Windows.cs @@ -51,8 +51,11 @@ private TarEntry ConstructEntryForWriting(string fullPath, string entryName, Fil FileSystemInfo info = (attributes & FileAttributes.Directory) != 0 ? new DirectoryInfo(fullPath) : new FileInfo(fullPath); entry._header._mTime = info.LastWriteTimeUtc; - entry._header._aTime = info.LastAccessTimeUtc; - entry._header._cTime = info.LastWriteTimeUtc; // There is no "change time" property + // We do not set atime and ctime by default because many external tools are unable to read GNU entries + // that have these fields set to non-zero values. This is because the GNU format writes atime and ctime in the same + // location where other formats expect the prefix field to be written. + // If the user wants to set atime and ctime, they can do so by constructing the entry manually from the file and + // then setting the values. entry.Mode = DefaultWindowsMode; diff --git a/src/runtime/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarWriter.cs b/src/runtime/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarWriter.cs index a3e1bd82d25..321c4923aef 100644 --- a/src/runtime/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarWriter.cs +++ b/src/runtime/src/libraries/System.Formats.Tar/src/System/Formats/Tar/TarWriter.cs @@ -27,6 +27,7 @@ public sealed partial class TarWriter : IDisposable, IAsyncDisposable /// When using this constructor, is used as the default format of the entries written to the archive using the method. /// is . /// does not support writing. + /// The format is the default format as it is the most flexible and POSIX compatible. This is the only format with which reads and stores atime and ctime when creating entries from filesystem entries. public TarWriter(Stream archiveStream) : this(archiveStream, TarEntryFormat.Pax, leaveOpen: false) { @@ -39,6 +40,7 @@ public TarWriter(Stream archiveStream) /// to dispose the when this instance is disposed; to leave the stream open. /// is . /// is unwritable. + /// The format is the default format as it is the most flexible and POSIX compatible. This is the only format with which reads and stores atime and ctime when creating entries from filesystem entries. public TarWriter(Stream archiveStream, bool leaveOpen = false) : this(archiveStream, TarEntryFormat.Pax, leaveOpen) { @@ -56,6 +58,7 @@ public TarWriter(Stream archiveStream, bool leaveOpen = false) /// is . /// is unwritable. /// is either , or not one of the other enum values. + /// The format is the default for the other constructors. This is the recommended format as it is the most flexible and POSIX compatible. This is the only format with which reads and stores atime and ctime when creating entries from filesystem entries. public TarWriter(Stream archiveStream, TarEntryFormat format = TarEntryFormat.Pax, bool leaveOpen = false) { ArgumentNullException.ThrowIfNull(archiveStream); @@ -133,6 +136,10 @@ public async ValueTask DisposeAsync() /// The archive stream is disposed. /// or is or empty. /// An I/O problem occurred. + /// + /// The entry will be created using the format specified in the constructor, or will use if other constructors are used. + /// If the format is , the atime and ctime from the file will be stored in the dictionary. If the format is , this method will not set a value for and because most TAR tools do not support these fields for this format. + /// public void WriteEntry(string fileName, string? entryName) { (string fullPath, string actualEntryName) = ValidateWriteEntryArguments(fileName, entryName); @@ -149,6 +156,10 @@ public void WriteEntry(string fileName, string? entryName) /// The archive stream is disposed. /// or is or empty. /// An I/O problem occurred. + /// + /// The entry will be created using the format specified in the constructor, or will use if other constructors are used. + /// If the format is , the atime and ctime from the file will be stored in the dictionary. If the format is , this method will not set a value for and because most TAR tools do not support these fields for this format. + /// public Task WriteEntryAsync(string fileName, string? entryName, CancellationToken cancellationToken = default) { if (cancellationToken.IsCancellationRequested) @@ -217,6 +228,10 @@ private async Task ReadFileFromDiskAndWriteToArchiveStreamAsEntryAsync(string fu /// The archive stream is disposed. /// is . /// An I/O problem occurred. + /// + /// When writing a using this method, if and/or are set, they will be preserved in the archive. These fields are unsupported by most TAR tools, so to ensure the archive is readable by other tools, make sure to set and to or . + /// To ensure an entry preserves the atime and ctime values and it is readable by other tools, it is recommended to convert the entry to instead. In that format, the two values get stored in the . The format is used as the default format by as it is the most flexible and POSIX compatible. + /// public void WriteEntry(TarEntry entry) { ObjectDisposedException.ThrowIf(_isDisposed, this); diff --git a/src/runtime/src/libraries/System.Formats.Tar/tests/TarEntry/GnuTarEntry.Tests.cs b/src/runtime/src/libraries/System.Formats.Tar/tests/TarEntry/GnuTarEntry.Tests.cs index bc80d89becb..52ea9dd532a 100644 --- a/src/runtime/src/libraries/System.Formats.Tar/tests/TarEntry/GnuTarEntry.Tests.cs +++ b/src/runtime/src/libraries/System.Formats.Tar/tests/TarEntry/GnuTarEntry.Tests.cs @@ -14,931 +14,947 @@ namespace System.Formats.Tar.Tests { public class GnuTarEntry_Tests : TarTestsBase -{ - [Fact] - public void Constructor_InvalidEntryName() { - Assert.Throws(() => new GnuTarEntry(TarEntryType.RegularFile, entryName: null)); - Assert.Throws(() => new GnuTarEntry(TarEntryType.RegularFile, entryName: string.Empty)); - } - - [Fact] - public void Constructor_UnsupportedEntryTypes() - { - Assert.Throws(() => new GnuTarEntry((TarEntryType)byte.MaxValue, InitialEntryName)); - - Assert.Throws(() => new GnuTarEntry(TarEntryType.ExtendedAttributes, InitialEntryName)); - Assert.Throws(() => new GnuTarEntry(TarEntryType.GlobalExtendedAttributes, InitialEntryName)); - Assert.Throws(() => new GnuTarEntry(TarEntryType.V7RegularFile, InitialEntryName)); - - // These are specific to GNU, but currently the user cannot create them manually - Assert.Throws(() => new GnuTarEntry(TarEntryType.ContiguousFile, InitialEntryName)); - Assert.Throws(() => new GnuTarEntry(TarEntryType.DirectoryList, InitialEntryName)); - Assert.Throws(() => new GnuTarEntry(TarEntryType.MultiVolume, InitialEntryName)); - Assert.Throws(() => new GnuTarEntry(TarEntryType.RenamedOrSymlinked, InitialEntryName)); - Assert.Throws(() => new GnuTarEntry(TarEntryType.SparseFile, InitialEntryName)); - Assert.Throws(() => new GnuTarEntry(TarEntryType.TapeVolume, InitialEntryName)); - - // The user should not create these entries manually - Assert.Throws(() => new GnuTarEntry(TarEntryType.LongLink, InitialEntryName)); - Assert.Throws(() => new GnuTarEntry(TarEntryType.LongPath, InitialEntryName)); - } - - [Fact] - public void SupportedEntryType_RegularFile() - { - GnuTarEntry regularFile = new GnuTarEntry(TarEntryType.RegularFile, InitialEntryName); - SetRegularFile(regularFile); - VerifyRegularFile(regularFile, isWritable: true); - } - - [Fact] - public void SupportedEntryType_Directory() - { - GnuTarEntry directory = new GnuTarEntry(TarEntryType.Directory, InitialEntryName); - SetDirectory(directory); - VerifyDirectory(directory); - } - - [Fact] - public void SupportedEntryType_HardLink() - { - GnuTarEntry hardLink = new GnuTarEntry(TarEntryType.HardLink, InitialEntryName); - SetHardLink(hardLink); - VerifyHardLink(hardLink); - } - - [Fact] - public void SupportedEntryType_SymbolicLink() - { - GnuTarEntry symbolicLink = new GnuTarEntry(TarEntryType.SymbolicLink, InitialEntryName); - SetSymbolicLink(symbolicLink); - VerifySymbolicLink(symbolicLink); - } + [Fact] + public void Constructor_InvalidEntryName() + { + Assert.Throws(() => new GnuTarEntry(TarEntryType.RegularFile, entryName: null)); + Assert.Throws(() => new GnuTarEntry(TarEntryType.RegularFile, entryName: string.Empty)); + } - [Fact] - public void SupportedEntryType_BlockDevice() - { - GnuTarEntry blockDevice = new GnuTarEntry(TarEntryType.BlockDevice, InitialEntryName); - SetBlockDevice(blockDevice); - VerifyBlockDevice(blockDevice); - } + [Fact] + public void Constructor_UnsupportedEntryTypes() + { + Assert.Throws(() => new GnuTarEntry((TarEntryType)byte.MaxValue, InitialEntryName)); - [Fact] - public void SupportedEntryType_CharacterDevice() - { - GnuTarEntry characterDevice = new GnuTarEntry(TarEntryType.CharacterDevice, InitialEntryName); - SetCharacterDevice(characterDevice); - VerifyCharacterDevice(characterDevice); - } + Assert.Throws(() => new GnuTarEntry(TarEntryType.ExtendedAttributes, InitialEntryName)); + Assert.Throws(() => new GnuTarEntry(TarEntryType.GlobalExtendedAttributes, InitialEntryName)); + Assert.Throws(() => new GnuTarEntry(TarEntryType.V7RegularFile, InitialEntryName)); - [Fact] - public void SupportedEntryType_Fifo() - { - GnuTarEntry fifo = new GnuTarEntry(TarEntryType.Fifo, InitialEntryName); - SetFifo(fifo); - VerifyFifo(fifo); - } + // These are specific to GNU, but currently the user cannot create them manually + Assert.Throws(() => new GnuTarEntry(TarEntryType.ContiguousFile, InitialEntryName)); + Assert.Throws(() => new GnuTarEntry(TarEntryType.DirectoryList, InitialEntryName)); + Assert.Throws(() => new GnuTarEntry(TarEntryType.MultiVolume, InitialEntryName)); + Assert.Throws(() => new GnuTarEntry(TarEntryType.RenamedOrSymlinked, InitialEntryName)); + Assert.Throws(() => new GnuTarEntry(TarEntryType.SparseFile, InitialEntryName)); + Assert.Throws(() => new GnuTarEntry(TarEntryType.TapeVolume, InitialEntryName)); - [Theory] - [InlineData(false)] - [InlineData(true)] - public void DataOffset_RegularFile(bool canSeek) - { - using MemoryStream ms = new(); - using (TarWriter writer = new(ms, leaveOpen: true)) - { - GnuTarEntry entry = new GnuTarEntry(TarEntryType.RegularFile, InitialEntryName); - entry.DataStream = new MemoryStream(); - entry.DataStream.WriteByte(ExpectedOffsetDataSingleByte); - entry.DataStream.Position = 0; - writer.WriteEntry(entry); + // The user should not create these entries manually + Assert.Throws(() => new GnuTarEntry(TarEntryType.LongLink, InitialEntryName)); + Assert.Throws(() => new GnuTarEntry(TarEntryType.LongPath, InitialEntryName)); } - ms.Position = 0; - - using Stream streamToRead = new WrappedStream(ms, canWrite: true, canRead: true, canSeek: canSeek); - using TarReader reader = new(streamToRead); - TarEntry actualEntry = reader.GetNextEntry(); - Assert.NotNull(actualEntry); - // Then it writes the actual regular file entry, containing: - // * 512 bytes of the regular tar header - // Totalling 2560. - // The regular file data section starts on the next byte. - long expectedDataOffset = canSeek ? 512 : -1; - Assert.Equal(expectedDataOffset, actualEntry.DataOffset); - - if (canSeek) + [Fact] + public void SupportedEntryType_RegularFile() { - ms.Position = actualEntry.DataOffset; - byte actualData = (byte)ms.ReadByte(); - Assert.Equal(ExpectedOffsetDataSingleByte, actualData); + GnuTarEntry regularFile = new GnuTarEntry(TarEntryType.RegularFile, InitialEntryName); + SetRegularFile(regularFile); + VerifyRegularFile(regularFile, isWritable: true); } - } - [Theory] - [InlineData(false)] - [InlineData(true)] - public async Task DataOffset_RegularFile_Async(bool canSeek) - { - await using MemoryStream ms = new(); - await using (TarWriter writer = new(ms, leaveOpen: true)) + [Fact] + public void SupportedEntryType_Directory() { - GnuTarEntry entry = new GnuTarEntry(TarEntryType.RegularFile, InitialEntryName); - entry.DataStream = new MemoryStream(); - entry.DataStream.WriteByte(ExpectedOffsetDataSingleByte); - entry.DataStream.Position = 0; - await writer.WriteEntryAsync(entry); + GnuTarEntry directory = new GnuTarEntry(TarEntryType.Directory, InitialEntryName); + SetDirectory(directory); + VerifyDirectory(directory); } - ms.Position = 0; - - await using Stream streamToRead = new WrappedStream(ms, canWrite: true, canRead: true, canSeek: canSeek); - await using TarReader reader = new(streamToRead); - TarEntry actualEntry = await reader.GetNextEntryAsync(); - Assert.NotNull(actualEntry); - - // Then it writes the actual regular file entry, containing: - // * 512 bytes of the regular tar header - // Totalling 2560. - // The regular file data section starts on the next byte. - long expectedDataOffset = canSeek ? 512 : -1; - Assert.Equal(expectedDataOffset, actualEntry.DataOffset); - if (canSeek) + [Fact] + public void SupportedEntryType_HardLink() { - ms.Position = actualEntry.DataOffset; - byte actualData = (byte)ms.ReadByte(); - Assert.Equal(ExpectedOffsetDataSingleByte, actualData); + GnuTarEntry hardLink = new GnuTarEntry(TarEntryType.HardLink, InitialEntryName); + SetHardLink(hardLink); + VerifyHardLink(hardLink); } - } - [Theory] - [InlineData(false)] - [InlineData(true)] - public void DataOffset_RegularFile_LongPath(bool canSeek) - { - using MemoryStream ms = new(); - using (TarWriter writer = new(ms, leaveOpen: true)) + [Fact] + public void SupportedEntryType_SymbolicLink() { - string veryLongName = new string('a', 1234); // Forces using a GNU LongPath entry - GnuTarEntry entry = new GnuTarEntry(TarEntryType.RegularFile, veryLongName); - entry.DataStream = new MemoryStream(); - entry.DataStream.WriteByte(ExpectedOffsetDataSingleByte); - entry.DataStream.Position = 0; - writer.WriteEntry(entry); + GnuTarEntry symbolicLink = new GnuTarEntry(TarEntryType.SymbolicLink, InitialEntryName); + SetSymbolicLink(symbolicLink); + VerifySymbolicLink(symbolicLink); } - ms.Position = 0; - - using Stream streamToRead = new WrappedStream(ms, canWrite: true, canRead: true, canSeek: canSeek); - using TarReader reader = new(streamToRead); - TarEntry actualEntry = reader.GetNextEntry(); - Assert.NotNull(actualEntry); - - // GNU first writes the long path entry, containing: - // * 512 bytes of the regular tar header - // * 1234 bytes for the data section containing the full long path - // * 302 bytes of padding - // Then it writes the actual regular file entry, containing: - // * 512 bytes of the regular tar header - // Totalling 2560. - // The regular file data section starts on the next byte. - long expectedDataOffset = canSeek ? 2560 : -1; - Assert.Equal(expectedDataOffset, actualEntry.DataOffset); - } - [Theory] - [InlineData(false)] - [InlineData(true)] - public async Task DataOffset_RegularFile_LongPath_Async(bool canSeek) - { - await using MemoryStream ms = new(); - await using (TarWriter writer = new(ms, leaveOpen: true)) + [Fact] + public void SupportedEntryType_BlockDevice() { - string veryLongName = new string('a', 1234); // Forces using a GNU LongPath entry - GnuTarEntry entry = new GnuTarEntry(TarEntryType.RegularFile, veryLongName); - entry.DataStream = new MemoryStream(); - entry.DataStream.WriteByte(ExpectedOffsetDataSingleByte); - entry.DataStream.Position = 0; - await writer.WriteEntryAsync(entry); + GnuTarEntry blockDevice = new GnuTarEntry(TarEntryType.BlockDevice, InitialEntryName); + SetBlockDevice(blockDevice); + VerifyBlockDevice(blockDevice); } - ms.Position = 0; - - await using Stream streamToRead = new WrappedStream(ms, canWrite: true, canRead: true, canSeek: canSeek); - await using TarReader reader = new(streamToRead); - TarEntry actualEntry = await reader.GetNextEntryAsync(); - Assert.NotNull(actualEntry); - - // GNU first writes the long path entry, containing: - // * 512 bytes of the regular tar header - // * 1234 bytes for the data section containing the full long path - // * 302 bytes of padding - // Then it writes the actual regular file entry, containing: - // * 512 bytes of the regular tar header - // Totalling 2560. - // The regular file data section starts on the next byte. - long expectedDataOffset = canSeek ? 2560 : -1; - Assert.Equal(expectedDataOffset, actualEntry.DataOffset); - } - [Theory] - [InlineData(false)] - [InlineData(true)] - public void DataOffset_RegularFile_LongLink(bool canSeek) - { - using MemoryStream ms = new(); - using (TarWriter writer = new(ms, leaveOpen: true)) + [Fact] + public void SupportedEntryType_CharacterDevice() { - GnuTarEntry entry = new GnuTarEntry(TarEntryType.SymbolicLink, InitialEntryName); - entry.LinkName = new string('a', 1234); // Forces using a GNU LongLink entry - writer.WriteEntry(entry); + GnuTarEntry characterDevice = new GnuTarEntry(TarEntryType.CharacterDevice, InitialEntryName); + SetCharacterDevice(characterDevice); + VerifyCharacterDevice(characterDevice); } - ms.Position = 0; - - using Stream streamToRead = new WrappedStream(ms, canWrite: true, canRead: true, canSeek: canSeek); - using TarReader reader = new(streamToRead); - TarEntry actualEntry = reader.GetNextEntry(); - Assert.NotNull(actualEntry); - - // GNU first writes the long link entry, containing: - // * 512 bytes of the regular tar header - // * 1234 bytes for the data section containing the full long link - // * 302 bytes of padding - // Then it writes the actual regular file entry, containing: - // * 512 bytes of the regular tar header - // Totalling 2560. - // The regular file data section starts on the next byte. - long expectedDataOffset = canSeek ? 2560 : -1; - Assert.Equal(expectedDataOffset, actualEntry.DataOffset); - } - [Theory] - [InlineData(false)] - [InlineData(true)] - public async Task DataOffset_RegularFile_LongLink_Async(bool canSeek) - { - await using MemoryStream ms = new(); - await using (TarWriter writer = new(ms, leaveOpen: true)) + + [Fact] + public void SupportedEntryType_Fifo() { - GnuTarEntry entry = new GnuTarEntry(TarEntryType.SymbolicLink, InitialEntryName); - entry.LinkName = new string('b', 1234); // Forces using a GNU LongLink entry - await writer.WriteEntryAsync(entry); + GnuTarEntry fifo = new GnuTarEntry(TarEntryType.Fifo, InitialEntryName); + SetFifo(fifo); + VerifyFifo(fifo); } - ms.Position = 0; - - await using Stream streamToRead = new WrappedStream(ms, canWrite: true, canRead: true, canSeek: canSeek); - await using TarReader reader = new(streamToRead); - TarEntry actualEntry = await reader.GetNextEntryAsync(); - Assert.NotNull(actualEntry); - - // GNU first writes the long link entry, containing: - // * 512 bytes of the regular tar header - // * 1234 bytes for the data section containing the full long link - // * 302 bytes of padding - // Then it writes the actual regular file entry, containing: - // * 512 bytes of the regular tar header - // Totalling 2560. - // The regular file data section starts on the next byte. - long expectedDataOffset = canSeek ? 2560 : -1; - Assert.Equal(expectedDataOffset, actualEntry.DataOffset); - } - [Theory] - [InlineData(false)] - [InlineData(true)] - public void DataOffset_RegularFile_LongLink_LongPath(bool canSeek) - { - using MemoryStream ms = new(); - using (TarWriter writer = new(ms, leaveOpen: true)) + [Theory] + [InlineData(false)] + [InlineData(true)] + public void DataOffset_RegularFile(bool canSeek) { - string veryLongName = new string('a', 1234); // Forces using a GNU LongPath entry - GnuTarEntry entry = new GnuTarEntry(TarEntryType.SymbolicLink, veryLongName); - entry.LinkName = new string('b', 1234); // Forces using a GNU LongLink entry - writer.WriteEntry(entry); + using MemoryStream ms = new(); + using (TarWriter writer = new(ms, leaveOpen: true)) + { + GnuTarEntry entry = new GnuTarEntry(TarEntryType.RegularFile, InitialEntryName); + entry.DataStream = new MemoryStream(); + entry.DataStream.WriteByte(ExpectedOffsetDataSingleByte); + entry.DataStream.Position = 0; + writer.WriteEntry(entry); + } + ms.Position = 0; + + using Stream streamToRead = new WrappedStream(ms, canWrite: true, canRead: true, canSeek: canSeek); + using TarReader reader = new(streamToRead); + TarEntry actualEntry = reader.GetNextEntry(); + Assert.NotNull(actualEntry); + + // Then it writes the actual regular file entry, containing: + // * 512 bytes of the regular tar header + // Totalling 2560. + // The regular file data section starts on the next byte. + long expectedDataOffset = canSeek ? 512 : -1; + Assert.Equal(expectedDataOffset, actualEntry.DataOffset); + + if (canSeek) + { + ms.Position = actualEntry.DataOffset; + byte actualData = (byte)ms.ReadByte(); + Assert.Equal(ExpectedOffsetDataSingleByte, actualData); + } } - ms.Position = 0; - - using Stream streamToRead = new WrappedStream(ms, canWrite: true, canRead: true, canSeek: canSeek); - using TarReader reader = new(streamToRead); - TarEntry actualEntry = reader.GetNextEntry(); - Assert.NotNull(actualEntry); - - // GNU first writes the long link and long path entries, containing: - // * 512 bytes of the regular long link tar header - // * 1234 bytes for the data section containing the full long link - // * 302 bytes of padding - // * 512 bytes of the regular long path tar header - // * 1234 bytes for the data section containing the full long path - // * 302 bytes of padding - // Then it writes the actual entry, containing: - // * 512 bytes of the regular tar header - // Totalling 4608. - // The data section starts on the next byte. - long expectedDataOffset = canSeek ? 4608 : -1; - Assert.Equal(expectedDataOffset, actualEntry.DataOffset); - } - [Theory] - [InlineData(false)] - [InlineData(true)] - public async Task DataOffset_RegularFile_LongLink_LongPath_Async(bool canSeek) - { - await using MemoryStream ms = new(); - await using (TarWriter writer = new(ms, leaveOpen: true)) + [Theory] + [InlineData(false)] + [InlineData(true)] + public async Task DataOffset_RegularFile_Async(bool canSeek) { - string veryLongName = new string('a', 1234); // Forces using a GNU LongPath entry - GnuTarEntry entry = new GnuTarEntry(TarEntryType.SymbolicLink, veryLongName); - entry.LinkName = new string('b', 1234); // Forces using a GNU LongLink entry - await writer.WriteEntryAsync(entry); - } - ms.Position = 0; - - await using Stream streamToRead = new WrappedStream(ms, canWrite: true, canRead: true, canSeek: canSeek); - await using TarReader reader = new(streamToRead); - TarEntry actualEntry = await reader.GetNextEntryAsync(); - Assert.NotNull(actualEntry); - - // GNU first writes the long link and long path entries, containing: - // * 512 bytes of the regular long link tar header - // * 1234 bytes for the data section containing the full long link - // * 302 bytes of padding - // * 512 bytes of the regular long path tar header - // * 1234 bytes for the data section containing the full long path - // * 302 bytes of padding - // Then it writes the actual entry, containing: - // * 512 bytes of the regular tar header - // Totalling 4608. - // The data section starts on the next byte. - long expectedDataOffset = canSeek ? 4608 : -1; - Assert.Equal(expectedDataOffset, actualEntry.DataOffset); - } + await using MemoryStream ms = new(); + await using (TarWriter writer = new(ms, leaveOpen: true)) + { + GnuTarEntry entry = new GnuTarEntry(TarEntryType.RegularFile, InitialEntryName); + entry.DataStream = new MemoryStream(); + entry.DataStream.WriteByte(ExpectedOffsetDataSingleByte); + entry.DataStream.Position = 0; + await writer.WriteEntryAsync(entry); + } + ms.Position = 0; - [Fact] - public void DataOffset_BeforeAndAfterArchive() - { - GnuTarEntry entry = new GnuTarEntry(TarEntryType.RegularFile, InitialEntryName); - Assert.Equal(-1, entry.DataOffset); - entry.DataStream = new MemoryStream(); - entry.DataStream.WriteByte(ExpectedOffsetDataSingleByte); - entry.DataStream.Position = 0; // The data stream is written to the archive from the current position - - using MemoryStream ms = new(); - using TarWriter writer = new(ms); - writer.WriteEntry(entry); - Assert.Equal(512, entry.DataOffset); - - // Write it again, the offset should now point to the second written entry - // First entry 512 (header) + 1 (data) + 511 (padding) - // Second entry 512 (header) - // 512 + 512 + 512 = 1536 - writer.WriteEntry(entry); - Assert.Equal(1536, entry.DataOffset); - } + await using Stream streamToRead = new WrappedStream(ms, canWrite: true, canRead: true, canSeek: canSeek); + await using TarReader reader = new(streamToRead); + TarEntry actualEntry = await reader.GetNextEntryAsync(); + Assert.NotNull(actualEntry); - [Fact] - public async Task DataOffset_BeforeAndAfterArchive_Async() - { - GnuTarEntry entry = new GnuTarEntry(TarEntryType.RegularFile, InitialEntryName); - Assert.Equal(-1, entry.DataOffset); - - entry.DataStream = new MemoryStream(); - entry.DataStream.WriteByte(ExpectedOffsetDataSingleByte); - entry.DataStream.Position = 0; // The data stream is written to the archive from the current position - - await using MemoryStream ms = new(); - await using TarWriter writer = new(ms); - await writer.WriteEntryAsync(entry); - Assert.Equal(512, entry.DataOffset); - - // Write it again, the offset should now point to the second written entry - // First entry 512 (header) + 1 (data) + 511 (padding) - // Second entry 512 (header) - // 512 + 512 + 512 = 1536 - await writer.WriteEntryAsync(entry); - Assert.Equal(1536, entry.DataOffset); - } + // Then it writes the actual regular file entry, containing: + // * 512 bytes of the regular tar header + // Totalling 2560. + // The regular file data section starts on the next byte. + long expectedDataOffset = canSeek ? 512 : -1; + Assert.Equal(expectedDataOffset, actualEntry.DataOffset); - [Fact] - public void DataOffset_UnseekableDataStream() - { - using MemoryStream ms = new(); - using (TarWriter writer = new(ms, leaveOpen: true)) + if (canSeek) + { + ms.Position = actualEntry.DataOffset; + byte actualData = (byte)ms.ReadByte(); + Assert.Equal(ExpectedOffsetDataSingleByte, actualData); + } + } + + [Theory] + [InlineData(false)] + [InlineData(true)] + public void DataOffset_RegularFile_LongPath(bool canSeek) + { + using MemoryStream ms = new(); + using (TarWriter writer = new(ms, leaveOpen: true)) + { + string veryLongName = new string('a', 1234); // Forces using a GNU LongPath entry + GnuTarEntry entry = new GnuTarEntry(TarEntryType.RegularFile, veryLongName); + entry.DataStream = new MemoryStream(); + entry.DataStream.WriteByte(ExpectedOffsetDataSingleByte); + entry.DataStream.Position = 0; + writer.WriteEntry(entry); + } + ms.Position = 0; + + using Stream streamToRead = new WrappedStream(ms, canWrite: true, canRead: true, canSeek: canSeek); + using TarReader reader = new(streamToRead); + TarEntry actualEntry = reader.GetNextEntry(); + Assert.NotNull(actualEntry); + + // GNU first writes the long path entry, containing: + // * 512 bytes of the regular tar header + // * 1234 bytes for the data section containing the full long path + // * 302 bytes of padding + // Then it writes the actual regular file entry, containing: + // * 512 bytes of the regular tar header + // Totalling 2560. + // The regular file data section starts on the next byte. + long expectedDataOffset = canSeek ? 2560 : -1; + Assert.Equal(expectedDataOffset, actualEntry.DataOffset); + } + + [Theory] + [InlineData(false)] + [InlineData(true)] + public async Task DataOffset_RegularFile_LongPath_Async(bool canSeek) + { + await using MemoryStream ms = new(); + await using (TarWriter writer = new(ms, leaveOpen: true)) + { + string veryLongName = new string('a', 1234); // Forces using a GNU LongPath entry + GnuTarEntry entry = new GnuTarEntry(TarEntryType.RegularFile, veryLongName); + entry.DataStream = new MemoryStream(); + entry.DataStream.WriteByte(ExpectedOffsetDataSingleByte); + entry.DataStream.Position = 0; + await writer.WriteEntryAsync(entry); + } + ms.Position = 0; + + await using Stream streamToRead = new WrappedStream(ms, canWrite: true, canRead: true, canSeek: canSeek); + await using TarReader reader = new(streamToRead); + TarEntry actualEntry = await reader.GetNextEntryAsync(); + Assert.NotNull(actualEntry); + + // GNU first writes the long path entry, containing: + // * 512 bytes of the regular tar header + // * 1234 bytes for the data section containing the full long path + // * 302 bytes of padding + // Then it writes the actual regular file entry, containing: + // * 512 bytes of the regular tar header + // Totalling 2560. + // The regular file data section starts on the next byte. + long expectedDataOffset = canSeek ? 2560 : -1; + Assert.Equal(expectedDataOffset, actualEntry.DataOffset); + } + + [Theory] + [InlineData(false)] + [InlineData(true)] + public void DataOffset_RegularFile_LongLink(bool canSeek) + { + using MemoryStream ms = new(); + using (TarWriter writer = new(ms, leaveOpen: true)) + { + GnuTarEntry entry = new GnuTarEntry(TarEntryType.SymbolicLink, InitialEntryName); + entry.LinkName = new string('a', 1234); // Forces using a GNU LongLink entry + writer.WriteEntry(entry); + } + ms.Position = 0; + + using Stream streamToRead = new WrappedStream(ms, canWrite: true, canRead: true, canSeek: canSeek); + using TarReader reader = new(streamToRead); + TarEntry actualEntry = reader.GetNextEntry(); + Assert.NotNull(actualEntry); + + // GNU first writes the long link entry, containing: + // * 512 bytes of the regular tar header + // * 1234 bytes for the data section containing the full long link + // * 302 bytes of padding + // Then it writes the actual regular file entry, containing: + // * 512 bytes of the regular tar header + // Totalling 2560. + // The regular file data section starts on the next byte. + long expectedDataOffset = canSeek ? 2560 : -1; + Assert.Equal(expectedDataOffset, actualEntry.DataOffset); + } + [Theory] + [InlineData(false)] + [InlineData(true)] + public async Task DataOffset_RegularFile_LongLink_Async(bool canSeek) + { + await using MemoryStream ms = new(); + await using (TarWriter writer = new(ms, leaveOpen: true)) + { + GnuTarEntry entry = new GnuTarEntry(TarEntryType.SymbolicLink, InitialEntryName); + entry.LinkName = new string('b', 1234); // Forces using a GNU LongLink entry + await writer.WriteEntryAsync(entry); + } + ms.Position = 0; + + await using Stream streamToRead = new WrappedStream(ms, canWrite: true, canRead: true, canSeek: canSeek); + await using TarReader reader = new(streamToRead); + TarEntry actualEntry = await reader.GetNextEntryAsync(); + Assert.NotNull(actualEntry); + + // GNU first writes the long link entry, containing: + // * 512 bytes of the regular tar header + // * 1234 bytes for the data section containing the full long link + // * 302 bytes of padding + // Then it writes the actual regular file entry, containing: + // * 512 bytes of the regular tar header + // Totalling 2560. + // The regular file data section starts on the next byte. + long expectedDataOffset = canSeek ? 2560 : -1; + Assert.Equal(expectedDataOffset, actualEntry.DataOffset); + } + + [Theory] + [InlineData(false)] + [InlineData(true)] + public void DataOffset_RegularFile_LongLink_LongPath(bool canSeek) + { + using MemoryStream ms = new(); + using (TarWriter writer = new(ms, leaveOpen: true)) + { + string veryLongName = new string('a', 1234); // Forces using a GNU LongPath entry + GnuTarEntry entry = new GnuTarEntry(TarEntryType.SymbolicLink, veryLongName); + entry.LinkName = new string('b', 1234); // Forces using a GNU LongLink entry + writer.WriteEntry(entry); + } + ms.Position = 0; + + using Stream streamToRead = new WrappedStream(ms, canWrite: true, canRead: true, canSeek: canSeek); + using TarReader reader = new(streamToRead); + TarEntry actualEntry = reader.GetNextEntry(); + Assert.NotNull(actualEntry); + + // GNU first writes the long link and long path entries, containing: + // * 512 bytes of the regular long link tar header + // * 1234 bytes for the data section containing the full long link + // * 302 bytes of padding + // * 512 bytes of the regular long path tar header + // * 1234 bytes for the data section containing the full long path + // * 302 bytes of padding + // Then it writes the actual entry, containing: + // * 512 bytes of the regular tar header + // Totalling 4608. + // The data section starts on the next byte. + long expectedDataOffset = canSeek ? 4608 : -1; + Assert.Equal(expectedDataOffset, actualEntry.DataOffset); + } + + [Theory] + [InlineData(false)] + [InlineData(true)] + public async Task DataOffset_RegularFile_LongLink_LongPath_Async(bool canSeek) + { + await using MemoryStream ms = new(); + await using (TarWriter writer = new(ms, leaveOpen: true)) + { + string veryLongName = new string('a', 1234); // Forces using a GNU LongPath entry + GnuTarEntry entry = new GnuTarEntry(TarEntryType.SymbolicLink, veryLongName); + entry.LinkName = new string('b', 1234); // Forces using a GNU LongLink entry + await writer.WriteEntryAsync(entry); + } + ms.Position = 0; + + await using Stream streamToRead = new WrappedStream(ms, canWrite: true, canRead: true, canSeek: canSeek); + await using TarReader reader = new(streamToRead); + TarEntry actualEntry = await reader.GetNextEntryAsync(); + Assert.NotNull(actualEntry); + + // GNU first writes the long link and long path entries, containing: + // * 512 bytes of the regular long link tar header + // * 1234 bytes for the data section containing the full long link + // * 302 bytes of padding + // * 512 bytes of the regular long path tar header + // * 1234 bytes for the data section containing the full long path + // * 302 bytes of padding + // Then it writes the actual entry, containing: + // * 512 bytes of the regular tar header + // Totalling 4608. + // The data section starts on the next byte. + long expectedDataOffset = canSeek ? 4608 : -1; + Assert.Equal(expectedDataOffset, actualEntry.DataOffset); + } + + [Fact] + public void DataOffset_BeforeAndAfterArchive() { GnuTarEntry entry = new GnuTarEntry(TarEntryType.RegularFile, InitialEntryName); Assert.Equal(-1, entry.DataOffset); + entry.DataStream = new MemoryStream(); + entry.DataStream.WriteByte(ExpectedOffsetDataSingleByte); + entry.DataStream.Position = 0; // The data stream is written to the archive from the current position - using MemoryStream dataStream = new(); - dataStream.WriteByte(ExpectedOffsetDataSingleByte); - dataStream.Position = 0; - using WrappedStream wds = new(dataStream, canWrite: true, canRead: true, canSeek: false); - entry.DataStream = wds; + using MemoryStream ms = new(); + using TarWriter writer = new(ms); + writer.WriteEntry(entry); + Assert.Equal(512, entry.DataOffset); + // Write it again, the offset should now point to the second written entry + // First entry 512 (header) + 1 (data) + 511 (padding) + // Second entry 512 (header) + // 512 + 512 + 512 = 1536 writer.WriteEntry(entry); + Assert.Equal(1536, entry.DataOffset); } - ms.Position = 0; - using TarReader reader = new(ms); - TarEntry actualEntry = reader.GetNextEntry(); - Assert.NotNull(actualEntry); - // Gnu header length is 512, data starts in the next position - Assert.Equal(512, actualEntry.DataOffset); - } - - [Fact] - public async Task DataOffset_UnseekableDataStream_Async() - { - await using MemoryStream ms = new(); - await using (TarWriter writer = new(ms, leaveOpen: true)) + [Fact] + public async Task DataOffset_BeforeAndAfterArchive_Async() { GnuTarEntry entry = new GnuTarEntry(TarEntryType.RegularFile, InitialEntryName); Assert.Equal(-1, entry.DataOffset); - await using MemoryStream dataStream = new(); - dataStream.WriteByte(ExpectedOffsetDataSingleByte); - dataStream.Position = 0; - await using WrappedStream wds = new(dataStream, canWrite: true, canRead: true, canSeek: false); - entry.DataStream = wds; + entry.DataStream = new MemoryStream(); + entry.DataStream.WriteByte(ExpectedOffsetDataSingleByte); + entry.DataStream.Position = 0; // The data stream is written to the archive from the current position + await using MemoryStream ms = new(); + await using TarWriter writer = new(ms); await writer.WriteEntryAsync(entry); - } - ms.Position = 0; + Assert.Equal(512, entry.DataOffset); - await using TarReader reader = new(ms); - TarEntry actualEntry = await reader.GetNextEntryAsync(); - Assert.NotNull(actualEntry); - // Gnu header length is 512, data starts in the next position - Assert.Equal(512, actualEntry.DataOffset); - } - - [Theory] - [InlineData(false)] - [InlineData(true)] - public void DataOffset_LongPath_LongLink_SecondEntry(bool canSeek) - { - string veryLongPathName = new string('a', 1234); // Forces using a GNU LongPath entry - string veryLongLinkName = new string('b', 1234); // Forces using a GNU LongLink entry - - using MemoryStream ms = new(); - using (TarWriter writer = new(ms, leaveOpen: true)) - { - GnuTarEntry entry1 = new GnuTarEntry(TarEntryType.SymbolicLink, veryLongPathName); - entry1.LinkName = veryLongLinkName; - writer.WriteEntry(entry1); - - GnuTarEntry entry2 = new GnuTarEntry(TarEntryType.SymbolicLink, veryLongPathName); - entry2.LinkName = veryLongLinkName; - writer.WriteEntry(entry2); - } - ms.Position = 0; - - using Stream streamToRead = new WrappedStream(ms, canWrite: true, canRead: true, canSeek: canSeek); - using TarReader reader = new(streamToRead); - TarEntry firstEntry = reader.GetNextEntry(); - Assert.NotNull(firstEntry); - // GNU first writes the long link and long path entries, containing: - // * 512 bytes of the regular long link tar header - // * 1234 bytes for the data section containing the full long link - // * 302 bytes of padding - // * 512 bytes of the regular long path tar header - // * 1234 bytes for the data section containing the full long path - // * 302 bytes of padding - // Then it writes the actual regular file entry, containing: - // * 512 bytes of the regular tar header - // Totalling 4608. - // The regular file data section starts on the next byte. - long firstExpectedDataOffset = canSeek ? 4608 : -1; - Assert.Equal(firstExpectedDataOffset, firstEntry.DataOffset); - - TarEntry secondEntry = reader.GetNextEntry(); - Assert.NotNull(secondEntry); - // First entry (including its long link and long path entries) end at 4608 (no padding, empty, as symlink has no data) - // Second entry (including its long link and long path entries) data section starts one byte after 4608 + 4608 = 9216 - long secondExpectedDataOffset = canSeek ? 9216 : -1; - Assert.Equal(secondExpectedDataOffset, secondEntry.DataOffset); - } + // Write it again, the offset should now point to the second written entry + // First entry 512 (header) + 1 (data) + 511 (padding) + // Second entry 512 (header) + // 512 + 512 + 512 = 1536 + await writer.WriteEntryAsync(entry); + Assert.Equal(1536, entry.DataOffset); + } - [Theory] - [InlineData(false)] - [InlineData(true)] - public async Task DataOffset_LongPath_LongLink_SecondEntry_Async(bool canSeek) - { - string veryLongPathName = new string('a', 1234); // Forces using a GNU LongPath entry - string veryLongLinkName = new string('b', 1234); // Forces using a GNU LongLink entry - - await using MemoryStream ms = new(); - await using (TarWriter writer = new(ms, leaveOpen: true)) - { - GnuTarEntry entry1 = new GnuTarEntry(TarEntryType.SymbolicLink, veryLongPathName); - entry1.LinkName = veryLongLinkName; - await writer.WriteEntryAsync(entry1); - - GnuTarEntry entry2 = new GnuTarEntry(TarEntryType.SymbolicLink, veryLongPathName); - entry2.LinkName = veryLongLinkName; - await writer.WriteEntryAsync(entry2); - } - ms.Position = 0; - - await using Stream streamToRead = new WrappedStream(ms, canWrite: true, canRead: true, canSeek: canSeek); - await using TarReader reader = new(streamToRead); - TarEntry firstEntry = await reader.GetNextEntryAsync(); - Assert.NotNull(firstEntry); - // GNU first writes the long link and long path entries, containing: - // * 512 bytes of the regular long link tar header - // * 1234 bytes for the data section containing the full long link - // * 302 bytes of padding - // * 512 bytes of the regular long path tar header - // * 1234 bytes for the data section containing the full long path - // * 302 bytes of padding - // Then it writes the actual regular file entry, containing: - // * 512 bytes of the regular tar header - // Totalling 4608. - // The regular file data section starts on the next byte. - long firstExpectedDataOffset = canSeek ? 4608 : -1; - Assert.Equal(firstExpectedDataOffset, firstEntry.DataOffset); - - TarEntry secondEntry = await reader.GetNextEntryAsync(); - Assert.NotNull(secondEntry); - // First entry (including its long link and long path entries) end at 4608 (no padding, empty, as symlink has no data) - // Second entry (including its long link and long path entries) data section starts one byte after 4608 + 4608 = 9216 - long secondExpectedDataOffset = canSeek ? 9216 : -1; - Assert.Equal(secondExpectedDataOffset, secondEntry.DataOffset); - } + [Fact] + public void DataOffset_UnseekableDataStream() + { + using MemoryStream ms = new(); + using (TarWriter writer = new(ms, leaveOpen: true)) + { + GnuTarEntry entry = new GnuTarEntry(TarEntryType.RegularFile, InitialEntryName); + Assert.Equal(-1, entry.DataOffset); - [Fact] - public void UnusedBytesInSizeFieldShouldBeZeroChars() - { - // The GNU format sets the unused bytes in the size field to "0" characters. + using MemoryStream dataStream = new(); + dataStream.WriteByte(ExpectedOffsetDataSingleByte); + dataStream.Position = 0; + using WrappedStream wds = new(dataStream, canWrite: true, canRead: true, canSeek: false); + entry.DataStream = wds; - using MemoryStream ms = new(); + writer.WriteEntry(entry); + } + ms.Position = 0; - using (TarWriter writer = new(ms, TarEntryFormat.Gnu, leaveOpen: true)) - { - // Start with a regular file entry without data - GnuTarEntry entry = new GnuTarEntry(TarEntryType.RegularFile, InitialEntryName); - writer.WriteEntry(entry); + using TarReader reader = new(ms); + TarEntry actualEntry = reader.GetNextEntry(); + Assert.NotNull(actualEntry); + // Gnu header length is 512, data starts in the next position + Assert.Equal(512, actualEntry.DataOffset); } - ms.Position = 0; - using (TarReader reader = new(ms, leaveOpen: true)) + [Fact] + public async Task DataOffset_UnseekableDataStream_Async() { - GnuTarEntry entry = reader.GetNextEntry() as GnuTarEntry; - Assert.NotNull(entry); - Assert.Equal(0, entry.Length); - } - ms.Position = 0; - ValidateUnusedBytesInSizeField(ms, 0); + await using MemoryStream ms = new(); + await using (TarWriter writer = new(ms, leaveOpen: true)) + { + GnuTarEntry entry = new GnuTarEntry(TarEntryType.RegularFile, InitialEntryName); + Assert.Equal(-1, entry.DataOffset); - ms.SetLength(0); // Reset the stream - byte[] data = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 }; // 8 bytes of data means a size of 10 in octal - using (TarWriter writer = new(ms, TarEntryFormat.Gnu, leaveOpen: true)) - { - // Start with a regular file entry with data - GnuTarEntry entry = new GnuTarEntry(TarEntryType.RegularFile, InitialEntryName); - entry.DataStream = new MemoryStream(data); - writer.WriteEntry(entry); + await using MemoryStream dataStream = new(); + dataStream.WriteByte(ExpectedOffsetDataSingleByte); + dataStream.Position = 0; + await using WrappedStream wds = new(dataStream, canWrite: true, canRead: true, canSeek: false); + entry.DataStream = wds; + + await writer.WriteEntryAsync(entry); + } + ms.Position = 0; + + await using TarReader reader = new(ms); + TarEntry actualEntry = await reader.GetNextEntryAsync(); + Assert.NotNull(actualEntry); + // Gnu header length is 512, data starts in the next position + Assert.Equal(512, actualEntry.DataOffset); } - ms.Position = 0; - using (TarReader reader = new(ms, leaveOpen: true)) + [Theory] + [InlineData(false)] + [InlineData(true)] + public void DataOffset_LongPath_LongLink_SecondEntry(bool canSeek) { - GnuTarEntry entry = reader.GetNextEntry() as GnuTarEntry; - Assert.NotNull(entry); - Assert.Equal(data.Length, entry.Length); - } - ms.Position = 0; - ValidateUnusedBytesInSizeField(ms, data.Length); - } + string veryLongPathName = new string('a', 1234); // Forces using a GNU LongPath entry + string veryLongLinkName = new string('b', 1234); // Forces using a GNU LongLink entry - [Fact] - public async Task UnusedBytesInSizeFieldShouldBeZeroChars_Async() - { - // The GNU format sets the unused bytes in the size field to "0" characters. + using MemoryStream ms = new(); + using (TarWriter writer = new(ms, leaveOpen: true)) + { + GnuTarEntry entry1 = new GnuTarEntry(TarEntryType.SymbolicLink, veryLongPathName); + entry1.LinkName = veryLongLinkName; + writer.WriteEntry(entry1); - await using MemoryStream ms = new(); + GnuTarEntry entry2 = new GnuTarEntry(TarEntryType.SymbolicLink, veryLongPathName); + entry2.LinkName = veryLongLinkName; + writer.WriteEntry(entry2); + } + ms.Position = 0; + + using Stream streamToRead = new WrappedStream(ms, canWrite: true, canRead: true, canSeek: canSeek); + using TarReader reader = new(streamToRead); + TarEntry firstEntry = reader.GetNextEntry(); + Assert.NotNull(firstEntry); + // GNU first writes the long link and long path entries, containing: + // * 512 bytes of the regular long link tar header + // * 1234 bytes for the data section containing the full long link + // * 302 bytes of padding + // * 512 bytes of the regular long path tar header + // * 1234 bytes for the data section containing the full long path + // * 302 bytes of padding + // Then it writes the actual regular file entry, containing: + // * 512 bytes of the regular tar header + // Totalling 4608. + // The regular file data section starts on the next byte. + long firstExpectedDataOffset = canSeek ? 4608 : -1; + Assert.Equal(firstExpectedDataOffset, firstEntry.DataOffset); + + TarEntry secondEntry = reader.GetNextEntry(); + Assert.NotNull(secondEntry); + // First entry (including its long link and long path entries) end at 4608 (no padding, empty, as symlink has no data) + // Second entry (including its long link and long path entries) data section starts one byte after 4608 + 4608 = 9216 + long secondExpectedDataOffset = canSeek ? 9216 : -1; + Assert.Equal(secondExpectedDataOffset, secondEntry.DataOffset); + } + + [Theory] + [InlineData(false)] + [InlineData(true)] + public async Task DataOffset_LongPath_LongLink_SecondEntry_Async(bool canSeek) + { + string veryLongPathName = new string('a', 1234); // Forces using a GNU LongPath entry + string veryLongLinkName = new string('b', 1234); // Forces using a GNU LongLink entry + + await using MemoryStream ms = new(); + await using (TarWriter writer = new(ms, leaveOpen: true)) + { + GnuTarEntry entry1 = new GnuTarEntry(TarEntryType.SymbolicLink, veryLongPathName); + entry1.LinkName = veryLongLinkName; + await writer.WriteEntryAsync(entry1); - await using (TarWriter writer = new(ms, TarEntryFormat.Gnu, leaveOpen: true)) - { - // Start with a regular file entry without data - GnuTarEntry entry = new GnuTarEntry(TarEntryType.RegularFile, InitialEntryName); - await writer.WriteEntryAsync(entry); - } - ms.Position = 0; + GnuTarEntry entry2 = new GnuTarEntry(TarEntryType.SymbolicLink, veryLongPathName); + entry2.LinkName = veryLongLinkName; + await writer.WriteEntryAsync(entry2); + } + ms.Position = 0; + + await using Stream streamToRead = new WrappedStream(ms, canWrite: true, canRead: true, canSeek: canSeek); + await using TarReader reader = new(streamToRead); + TarEntry firstEntry = await reader.GetNextEntryAsync(); + Assert.NotNull(firstEntry); + // GNU first writes the long link and long path entries, containing: + // * 512 bytes of the regular long link tar header + // * 1234 bytes for the data section containing the full long link + // * 302 bytes of padding + // * 512 bytes of the regular long path tar header + // * 1234 bytes for the data section containing the full long path + // * 302 bytes of padding + // Then it writes the actual regular file entry, containing: + // * 512 bytes of the regular tar header + // Totalling 4608. + // The regular file data section starts on the next byte. + long firstExpectedDataOffset = canSeek ? 4608 : -1; + Assert.Equal(firstExpectedDataOffset, firstEntry.DataOffset); + + TarEntry secondEntry = await reader.GetNextEntryAsync(); + Assert.NotNull(secondEntry); + // First entry (including its long link and long path entries) end at 4608 (no padding, empty, as symlink has no data) + // Second entry (including its long link and long path entries) data section starts one byte after 4608 + 4608 = 9216 + long secondExpectedDataOffset = canSeek ? 9216 : -1; + Assert.Equal(secondExpectedDataOffset, secondEntry.DataOffset); + } + + [Fact] + public void UnusedBytesInSizeFieldShouldBeZeroChars() + { + // The GNU format sets the unused bytes in the size field to "0" characters. + + using MemoryStream ms = new(); + + using (TarWriter writer = new(ms, TarEntryFormat.Gnu, leaveOpen: true)) + { + // Start with a regular file entry without data + GnuTarEntry entry = new GnuTarEntry(TarEntryType.RegularFile, InitialEntryName); + writer.WriteEntry(entry); + } + ms.Position = 0; - await using (TarReader reader = new(ms, leaveOpen: true)) - { - GnuTarEntry entry = await reader.GetNextEntryAsync() as GnuTarEntry; - Assert.NotNull(entry); - Assert.Equal(0, entry.Length); - } - ms.Position = 0; - ValidateUnusedBytesInSizeField(ms, 0); + using (TarReader reader = new(ms, leaveOpen: true)) + { + GnuTarEntry entry = reader.GetNextEntry() as GnuTarEntry; + Assert.NotNull(entry); + Assert.Equal(0, entry.Length); + } + ms.Position = 0; + ValidateUnusedBytesInSizeField(ms, 0); - ms.SetLength(0); // Reset the stream - byte[] data = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 }; // 8 bytes of data means a size of 10 in octal - await using (TarWriter writer = new(ms, TarEntryFormat.Gnu, leaveOpen: true)) - { - // Start with a regular file entry with data - GnuTarEntry entry = new GnuTarEntry(TarEntryType.RegularFile, InitialEntryName); - entry.DataStream = new MemoryStream(data); - await writer.WriteEntryAsync(entry); - } + ms.SetLength(0); // Reset the stream + byte[] data = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 }; // 8 bytes of data means a size of 10 in octal + using (TarWriter writer = new(ms, TarEntryFormat.Gnu, leaveOpen: true)) + { + // Start with a regular file entry with data + GnuTarEntry entry = new GnuTarEntry(TarEntryType.RegularFile, InitialEntryName); + entry.DataStream = new MemoryStream(data); + writer.WriteEntry(entry); + } - ms.Position = 0; - await using (TarReader reader = new(ms, leaveOpen: true)) - { - GnuTarEntry entry = await reader.GetNextEntryAsync() as GnuTarEntry; - Assert.NotNull(entry); - Assert.Equal(data.Length, entry.Length); + ms.Position = 0; + using (TarReader reader = new(ms, leaveOpen: true)) + { + GnuTarEntry entry = reader.GetNextEntry() as GnuTarEntry; + Assert.NotNull(entry); + Assert.Equal(data.Length, entry.Length); + } + ms.Position = 0; + ValidateUnusedBytesInSizeField(ms, data.Length); } - ms.Position = 0; - ValidateUnusedBytesInSizeField(ms, data.Length); - } - private void ValidateUnusedBytesInSizeField(MemoryStream ms, long size) - { - // internally, the unused bytes in the size field should be "0" characters, - // and the rest should be the octal value of the size field - - // name, mode, uid, gid, - // size - int sizeStart = 100 + 8 + 8 + 8; - byte[] buffer = new byte[12]; // The size field is 12 bytes in length - - ms.Seek(sizeStart, SeekOrigin.Begin); - ms.Read(buffer); - - // Convert the base 10 value of size to base 8 - string octalSize = Convert.ToString(size, 8).PadLeft(11, '0'); - byte[] octalSizeBytes = Encoding.ASCII.GetBytes(octalSize); - // The last byte should be a null character - Assert.Equal(octalSizeBytes, buffer.Take(octalSizeBytes.Length).ToArray()); - } - - public static IEnumerable NameAndLink_TestData() - { - // Name and link have a max length of 100. Anything longer goes into LongPath or LongLink entries in GNU. - yield return new object[] { InitialEntryName, InitialEntryName }; // Short name and short link - yield return new object[] { InitialEntryName, new string('b', 101) }; // Short name and long link - yield return new object[] { new string('a', 101), InitialEntryName }; // Long name and short link - yield return new object[] { new string('a', 101), new string('b', 101) }; // Long name and long link - } + [Fact] + public async Task UnusedBytesInSizeFieldShouldBeZeroChars_Async() + { + // The GNU format sets the unused bytes in the size field to "0" characters. - private GnuTarEntry CreateEntryForLongLinkLongPathChecks(string name, string linkName) - { - // A SymbolicLink entry can test both LongLink and LongPath entries if - // the length of either string is longer than what fits in the header. - return new GnuTarEntry(TarEntryType.SymbolicLink, name) - { - LinkName = linkName, - ModificationTime = DateTimeOffset.UnixEpoch, - AccessTime = DateTimeOffset.UnixEpoch, - ChangeTime = DateTimeOffset.UnixEpoch, - Uid = 0, - Gid = 0, - Mode = 0, - UserName = TestUName, - GroupName = TestGName - }; - } + await using MemoryStream ms = new(); - private void ValidateEntryForRegularEntryInLongLinkAndLongPathChecks(GnuTarEntry entry, string name, string linkName) - { - Assert.NotNull(entry); - Assert.Equal(DateTimeOffset.UnixEpoch, entry.ModificationTime); - Assert.Equal(DateTimeOffset.UnixEpoch, entry.AccessTime); - Assert.Equal(DateTimeOffset.UnixEpoch, entry.ChangeTime); - Assert.Equal(name, entry.Name); - Assert.Equal(linkName, entry.LinkName); - Assert.Equal(0, entry.Uid); // Should be '0' chars in the long header - Assert.Equal(0, entry.Gid); // Should be '0' chars in the long header - Assert.Equal(UnixFileMode.None, entry.Mode); // Should be '0' chars in the long header - Assert.Equal(TestUName, entry.UserName); - Assert.Equal(TestGName, entry.GroupName); - Assert.Equal(0, entry.Length); // No data in the main entry - } + await using (TarWriter writer = new(ms, TarEntryFormat.Gnu, leaveOpen: true)) + { + // Start with a regular file entry without data + GnuTarEntry entry = new GnuTarEntry(TarEntryType.RegularFile, InitialEntryName); + await writer.WriteEntryAsync(entry); + } + ms.Position = 0; - [Theory] - [MemberData(nameof(NameAndLink_TestData))] - public void Check_LongLink_AndLongPath_Metadata(string name, string linkName) - { - // The GNU format sets the mtime, atime and ctime to nulls in headers when they are set to the unix epoch. - // Also the uid and gid should be '0' in the long entries headers. - // Also the uname and gname in the long entry headers should be set to those of the main entry. + await using (TarReader reader = new(ms, leaveOpen: true)) + { + GnuTarEntry entry = await reader.GetNextEntryAsync() as GnuTarEntry; + Assert.NotNull(entry); + Assert.Equal(0, entry.Length); + } + ms.Position = 0; + ValidateUnusedBytesInSizeField(ms, 0); - using MemoryStream ms = new(); + ms.SetLength(0); // Reset the stream + byte[] data = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 }; // 8 bytes of data means a size of 10 in octal + await using (TarWriter writer = new(ms, TarEntryFormat.Gnu, leaveOpen: true)) + { + // Start with a regular file entry with data + GnuTarEntry entry = new GnuTarEntry(TarEntryType.RegularFile, InitialEntryName); + entry.DataStream = new MemoryStream(data); + await writer.WriteEntryAsync(entry); + } - using (TarWriter writer = new(ms, TarEntryFormat.Gnu, leaveOpen: true)) - { - GnuTarEntry entry = CreateEntryForLongLinkLongPathChecks(name, linkName); - writer.WriteEntry(entry); + ms.Position = 0; + await using (TarReader reader = new(ms, leaveOpen: true)) + { + GnuTarEntry entry = await reader.GetNextEntryAsync() as GnuTarEntry; + Assert.NotNull(entry); + Assert.Equal(data.Length, entry.Length); + } + ms.Position = 0; + ValidateUnusedBytesInSizeField(ms, data.Length); } - ms.Position = 0; - using (TarReader reader = new(ms, leaveOpen: true)) + private void ValidateUnusedBytesInSizeField(MemoryStream ms, long size) { - GnuTarEntry entry = reader.GetNextEntry() as GnuTarEntry; - ValidateEntryForRegularEntryInLongLinkAndLongPathChecks(entry, name, linkName); - } + // internally, the unused bytes in the size field should be "0" characters, + // and the rest should be the octal value of the size field - ValidateLongEntryBytes(ms, name, linkName); - } + // name, mode, uid, gid, + // size + int sizeStart = 100 + 8 + 8 + 8; + byte[] buffer = new byte[12]; // The size field is 12 bytes in length - [Theory] - [MemberData(nameof(NameAndLink_TestData))] - public async Task Check_LongLink_AndLongPath_Metadata_Async(string name, string linkName) - { - // The GNU format sets the mtime, atime and ctime to nulls in headers when they are set to the unix epoch. - // Also the uid and gid should be '0' in the long entries headers. - // Also the uname and gname in the long entry headers should be set to those of the main entry. + ms.Seek(sizeStart, SeekOrigin.Begin); + ms.Read(buffer); - await using MemoryStream ms = new(); + // Convert the base 10 value of size to base 8 + string octalSize = Convert.ToString(size, 8).PadLeft(11, '0'); + byte[] octalSizeBytes = Encoding.ASCII.GetBytes(octalSize); + // The last byte should be a null character + Assert.Equal(octalSizeBytes, buffer.Take(octalSizeBytes.Length).ToArray()); + } - await using (TarWriter writer = new(ms, TarEntryFormat.Gnu, leaveOpen: true)) + public static IEnumerable NameAndLink_TestData() { - GnuTarEntry entry = CreateEntryForLongLinkLongPathChecks(name, linkName); - await writer.WriteEntryAsync(entry); + // Name and link have a max length of 100. Anything longer goes into LongPath or LongLink entries in GNU. + yield return new object[] { InitialEntryName, InitialEntryName }; // Short name and short link + yield return new object[] { InitialEntryName, new string('b', 101) }; // Short name and long link + yield return new object[] { new string('a', 101), InitialEntryName }; // Long name and short link + yield return new object[] { new string('a', 101), new string('b', 101) }; // Long name and long link } - ms.Position = 0; - await using (TarReader reader = new(ms, leaveOpen: true)) + private GnuTarEntry CreateEntryForLongLinkLongPathChecks(string name, string linkName) { - GnuTarEntry entry = await reader.GetNextEntryAsync() as GnuTarEntry; - ValidateEntryForRegularEntryInLongLinkAndLongPathChecks(entry, name, linkName); + // A SymbolicLink entry can test both LongLink and LongPath entries if + // the length of either string is longer than what fits in the header. + return new GnuTarEntry(TarEntryType.SymbolicLink, name) + { + LinkName = linkName, + ModificationTime = TestModificationTime, + AccessTime = TestAccessTime, // This should only be set in the main entry + ChangeTime = TestChangeTime, // This should only be set in the main entry + Uid = TestUid, // This should only be set in the main entry + Gid = TestGid, // This should only be set in the main entry + Mode = TestMode, // This should only be set in the main entry + UserName = TestUName, // This should only be set in the main entry + GroupName = TestGName // This should only be set in the main entry + }; } - ValidateLongEntryBytes(ms, name, linkName); - } - - private void ValidateLongEntryBytes(MemoryStream ms, string name, string linkName) - { - bool isLongPath = name.Length >= 100; - bool isLongLink = linkName.Length >= 100; + private void ValidateEntryForRegularEntryInLongLinkAndLongPathChecks(GnuTarEntry entry, string name, string linkName) + { + Assert.NotNull(entry); + Assert.Equal(TestModificationTime, entry.ModificationTime); + Assert.Equal(TestAccessTime, entry.AccessTime); // This should be different in the long entry header + Assert.Equal(TestChangeTime, entry.ChangeTime); // This should be different in the long entry header + Assert.Equal(name, entry.Name); + Assert.Equal(linkName, entry.LinkName); + Assert.Equal(TestUid, entry.Uid); // This should be different in the long entry header + Assert.Equal(TestGid, entry.Gid); // This should be different in the long entry header + Assert.Equal(TestMode, entry.Mode); // This should be different in the long entry header + Assert.Equal(TestUName, entry.UserName); // This should be different in the long entry header + Assert.Equal(TestGName, entry.GroupName); // This should be different in the long entry header + Assert.Equal(0, entry.Length); // No data in the main entry + } + + [Theory] + [MemberData(nameof(NameAndLink_TestData))] + public void Check_LongLink_AndLongPath_Metadata(string name, string linkName) + { + // The GNU format sets the mtime, atime and ctime to nulls in headers when they are set to the unix epoch. + // Also the uid and gid should be '0' in the long entries headers. + // Also the uname and gname in the long entry headers should be set to those of the main entry. + + using MemoryStream ms = new(); + + using (TarWriter writer = new(ms, TarEntryFormat.Gnu, leaveOpen: true)) + { + GnuTarEntry entry = CreateEntryForLongLinkLongPathChecks(name, linkName); + writer.WriteEntry(entry); + } + ms.Position = 0; - ms.Position = 0; + using (TarReader reader = new(ms, leaveOpen: true)) + { + GnuTarEntry entry = reader.GetNextEntry() as GnuTarEntry; + ValidateEntryForRegularEntryInLongLinkAndLongPathChecks(entry, name, linkName); + } - long nextEntryStart = 0; - long reportedSize; + ValidateLongEntryBytes(ms, name, linkName); + } - if (isLongLink) + [Theory] + [MemberData(nameof(NameAndLink_TestData))] + public async Task Check_LongLink_AndLongPath_Metadata_Async(string name, string linkName) { - reportedSize = CheckHeaderMetadataAndGetReportedSize(ms, nextEntryStart, isLongLinkOrLongPath: true); - CheckDataContainsExpectedString(ms, nextEntryStart + 512, reportedSize, linkName, shouldTrim: false); // Skip to the data section - nextEntryStart += 512 + 512; // Skip the current header and the long link entry - Assert.True(linkName.Length < 512, "Do not test paths longer than a 512 byte block"); + // The GNU format sets the mtime, atime and ctime to nulls in headers when they are set to MinValue + // Also the uid and gid should be '0' in the long entries headers, and uname and gname in the long entry headers should be set to root. + + await using MemoryStream ms = new(); + + await using (TarWriter writer = new(ms, TarEntryFormat.Gnu, leaveOpen: true)) + { + GnuTarEntry entry = CreateEntryForLongLinkLongPathChecks(name, linkName); + await writer.WriteEntryAsync(entry); + } + ms.Position = 0; + + await using (TarReader reader = new(ms, leaveOpen: true)) + { + GnuTarEntry entry = await reader.GetNextEntryAsync() as GnuTarEntry; + ValidateEntryForRegularEntryInLongLinkAndLongPathChecks(entry, name, linkName); + } + + ValidateLongEntryBytes(ms, name, linkName); } - if (isLongPath) + private void ValidateLongEntryBytes(MemoryStream ms, string name, string linkName) { - reportedSize = CheckHeaderMetadataAndGetReportedSize(ms, nextEntryStart, isLongLinkOrLongPath: true); - CheckDataContainsExpectedString(ms, nextEntryStart + 512, reportedSize, name, shouldTrim: false); // Skip to the data section - nextEntryStart += 512 + 512; // Skip the current header and the long path entry - Assert.True(name.Length < 512, "Do not test paths longer than a 512 byte block"); - } + bool isLongPath = name.Length >= 100; + bool isLongLink = linkName.Length >= 100; - CheckHeaderMetadataAndGetReportedSize(ms, nextEntryStart, isLongLinkOrLongPath: false); - } + ms.Position = 0; - private long CheckHeaderMetadataAndGetReportedSize(MemoryStream ms, long nextEntryStart, bool isLongLinkOrLongPath) - { - // internally, mtime, atime and ctime should be nulls - // and if the entry is a long path or long link, the entry's data length should be - // equal to the string plus a null character - - // name mode uid gid size mtime checksum typeflag linkname magic uname gname devmajor devminor atime ctime - // 100 8 8 8 12 12 8 1 100 8 32 32 8 8 12 12 - long nameStart = nextEntryStart; - long modeStart = nameStart + 100; - long uidStart = modeStart + 8; - long gidStart = uidStart + 8; - long sizeStart = gidStart + 8; - long mTimeStart = sizeStart + 12; - long checksumStart = mTimeStart + 12; - long typeflagStart = checksumStart + 8; - long linkNameStart = typeflagStart + 1; - long magicStart = linkNameStart + 100; - long uNameStart = magicStart + 8; - long gNameStart = uNameStart + 32; - long devMajorStart = gNameStart + 32; - long devMinorStart = devMajorStart + 8; - long aTimeStart = devMinorStart + 8; - long cTimeStart = aTimeStart + 12; - - byte[] buffer = new byte[12]; // size, mtime, atime, ctime all are 12 bytes in length - - if (isLongLinkOrLongPath) - { - CheckBytesAreZeros(ms, buffer.AsSpan(0, 8), uidStart); - CheckBytesAreZeros(ms, buffer.AsSpan(0, 8), gidStart); - } - else - { - CheckBytesAreZeros(ms, buffer.AsSpan(0, 8), modeStart); - } - CheckBytesAreZeros(ms, buffer, mTimeStart); - CheckBytesAreZeros(ms, buffer, aTimeStart); - CheckBytesAreZeros(ms, buffer, cTimeStart); - CheckDataContainsExpectedString(ms, uNameStart, 32, TestUName, shouldTrim: true); - CheckDataContainsExpectedString(ms, gNameStart, 32, TestGName, shouldTrim: true); - - ms.Seek(sizeStart, SeekOrigin.Begin); - ms.Read(buffer); - return ParseNumeric(buffer); - } + long nextEntryStart = 0; + long reportedSize; - private void CheckBytesAreSpecificChar(MemoryStream ms, Span buffer, long dataStart, byte charToCheck) - { - ms.Seek(dataStart, SeekOrigin.Begin); - ms.Read(buffer); - foreach (byte b in buffer.Slice(0, buffer.Length - 1)) // The last byte should be a null character - { - Assert.Equal(charToCheck, b); - } - Assert.Equal(0, buffer[^1]); // The last byte should be a null character - } + if (isLongLink) + { + reportedSize = CheckHeaderMetadataAndGetReportedSize(ms, nextEntryStart, isLongLinkOrLongPath: true); + CheckDataContainsExpectedString(ms, nextEntryStart + 512, reportedSize, linkName, shouldTrim: false); // Skip to the data section + nextEntryStart += 512 + 512; // Skip the current header and the long link entry + Assert.True(linkName.Length < 512, "Do not test paths longer than a 512 byte block"); + } - private void CheckBytesAreNulls(MemoryStream ms, Span buffer, long dataStart) => CheckBytesAreSpecificChar(ms, buffer, dataStart, 0); // null char + if (isLongPath) + { + reportedSize = CheckHeaderMetadataAndGetReportedSize(ms, nextEntryStart, isLongLinkOrLongPath: true); + CheckDataContainsExpectedString(ms, nextEntryStart + 512, reportedSize, name, shouldTrim: false); // Skip to the data section + nextEntryStart += 512 + 512; // Skip the current header and the long path entry + Assert.True(name.Length < 512, "Do not test paths longer than a 512 byte block"); + } - private void CheckBytesAreZeros(MemoryStream ms, Span buffer, long dataStart) => CheckBytesAreSpecificChar(ms, buffer, dataStart, 0x30); // '0' char + CheckHeaderMetadataAndGetReportedSize(ms, nextEntryStart, isLongLinkOrLongPath: false); + } + + private long CheckHeaderMetadataAndGetReportedSize(MemoryStream ms, long nextEntryStart, bool isLongLinkOrLongPath) + { + // internally, mtime, atime and ctime should be nulls + // and if the entry is a long path or long link, the entry's data length should be + // equal to the string plus a null character + + // name mode uid gid size mtime checksum typeflag linkname magic uname gname devmajor devminor atime ctime + // 100 8 8 8 12 12 8 1 100 8 32 32 8 8 12 12 + long nameStart = nextEntryStart; + long modeStart = nameStart + 100; + long uidStart = modeStart + 8; + long gidStart = uidStart + 8; + long sizeStart = gidStart + 8; + long mTimeStart = sizeStart + 12; + long checksumStart = mTimeStart + 12; + long typeflagStart = checksumStart + 8; + long linkNameStart = typeflagStart + 1; + long magicStart = linkNameStart + 100; + long uNameStart = magicStart + 8; + long gNameStart = uNameStart + 32; + long devMajorStart = gNameStart + 32; + long devMinorStart = devMajorStart + 8; + long aTimeStart = devMinorStart + 8; + long cTimeStart = aTimeStart + 12; + + Span buffer = stackalloc byte[12]; // size, mtime, atime, ctime all are 12 bytes in length (max length to check) + + if (isLongLinkOrLongPath) + { + CheckBytesAreNulls(ms, buffer, aTimeStart); // no atime + CheckBytesAreNulls(ms, buffer, cTimeStart); // no ctime + CheckBytesAreZeros(ms, buffer.Slice(0, 8), uidStart); // uid 0 + CheckBytesAreZeros(ms, buffer.Slice(0, 8), gidStart); // uid 0 + Span expectedOctalModeBytes = Encoding.ASCII.GetBytes("0000644\0"); // 644 is the default mode set in LongLink/LongPath + CheckBytesAreSpecificSequence(ms, buffer.Slice(0, 8), modeStart, expectedOctalModeBytes); + CheckDataContainsExpectedString(ms, uNameStart, 32, RootUNameGName, shouldTrim: true); + CheckDataContainsExpectedString(ms, gNameStart, 32, RootUNameGName, shouldTrim: true); + CheckBytesAreZeros(ms, buffer, mTimeStart); + } + else + { + Span expectedOctalUidBytes = Encoding.ASCII.GetBytes(Convert.ToString(TestUid, 8).PadLeft(7, '0') + '\0'); + Span expectedOctalGidBytes = Encoding.ASCII.GetBytes(Convert.ToString(TestGid, 8).PadLeft(7, '0') + '\0'); + Span expectedOctalModeBytes = Encoding.ASCII.GetBytes(Convert.ToString((int)TestMode, 8).PadLeft(7, '0') + '\0'); + CheckBytesAreSpecificSequence(ms, buffer.Slice(0, 8), uidStart, expectedOctalUidBytes); + CheckBytesAreSpecificSequence(ms, buffer.Slice(0, 8), gidStart, expectedOctalGidBytes); + CheckBytesAreSpecificSequence(ms, buffer.Slice(0, 8), modeStart, expectedOctalModeBytes); + CheckDataContainsExpectedString(ms, uNameStart, 32, TestUName, shouldTrim: true); + CheckDataContainsExpectedString(ms, gNameStart, 32, TestGName, shouldTrim: true); + } - private void CheckDataContainsExpectedString(MemoryStream ms, long dataStart, long actualDataLength, string expectedString, bool shouldTrim) - { - ms.Seek(dataStart, SeekOrigin.Begin); - byte[] buffer = new byte[actualDataLength]; - ms.Read(buffer); + ms.Seek(sizeStart, SeekOrigin.Begin); + ms.Read(buffer); + return ParseNumeric(buffer); + } - if (shouldTrim) + private void CheckBytesAreSpecificChar(MemoryStream ms, Span buffer, long dataStart, byte charToCheck) { - string actualString = Encoding.ASCII.GetString(TrimEndingNullsAndSpaces(buffer)); - Assert.Equal(expectedString, actualString); + ms.Seek(dataStart, SeekOrigin.Begin); + ms.Read(buffer); + Span expectedSequence = stackalloc byte[buffer.Length - 1]; + expectedSequence.Fill(charToCheck); + AssertExtensions.SequenceEqual(expectedSequence, buffer.Slice(0, buffer.Length - 1)); + Assert.Equal(0, buffer[^1]); // The last byte should be a null character } - else + + private void CheckBytesAreSpecificSequence(MemoryStream ms, Span buffer, long dataStart, ReadOnlySpan expectedSequence) { - string actualString = Encoding.ASCII.GetString(buffer); - Assert.Equal(expectedString, actualString[..^1]); // The last byte should be a null character + ms.Seek(dataStart, SeekOrigin.Begin); + ms.Read(buffer); + Assert.Equal(expectedSequence.Length, buffer.Length); + AssertExtensions.SequenceEqual(expectedSequence, buffer.Slice(0, expectedSequence.Length)); + Assert.Equal(0, buffer[expectedSequence.Length - 1]); // The last byte should be a null character } - } - private static T ParseNumeric(ReadOnlySpan buffer) where T : struct, INumber, IBinaryInteger - { - byte leadingByte = buffer[0]; - if (leadingByte == 0xff) + private void CheckBytesAreNulls(MemoryStream ms, Span buffer, long dataStart) => CheckBytesAreSpecificChar(ms, buffer, dataStart, 0); // null char + + private void CheckBytesAreZeros(MemoryStream ms, Span buffer, long dataStart) => CheckBytesAreSpecificChar(ms, buffer, dataStart, 0x30); // '0' char + + private void CheckDataContainsExpectedString(MemoryStream ms, long dataStart, long actualDataLength, string expectedString, bool shouldTrim) { - return T.ReadBigEndian(buffer, isUnsigned: false); + ms.Seek(dataStart, SeekOrigin.Begin); + byte[] buffer = new byte[actualDataLength]; + ms.Read(buffer); + + if (shouldTrim) + { + string actualString = Encoding.ASCII.GetString(TrimEndingNullsAndSpaces(buffer)); + Assert.Equal(expectedString, actualString); + } + else + { + string actualString = Encoding.ASCII.GetString(buffer); + Assert.Equal(expectedString, actualString[..^1]); // The last byte should be a null character + } } - else if (leadingByte == 0x80) + + private static T ParseNumeric(ReadOnlySpan buffer) where T : struct, INumber, IBinaryInteger { - return T.ReadBigEndian(buffer.Slice(1), isUnsigned: true); + byte leadingByte = buffer[0]; + if (leadingByte == 0xff) + { + return T.ReadBigEndian(buffer, isUnsigned: false); + } + else if (leadingByte == 0x80) + { + return T.ReadBigEndian(buffer.Slice(1), isUnsigned: true); + } + else + { + return ParseOctal(buffer); + } } - else + + private static T ParseOctal(ReadOnlySpan buffer) where T : struct, INumber { - return ParseOctal(buffer); - } - } + buffer = TrimEndingNullsAndSpaces(buffer); + buffer = TrimLeadingNullsAndSpaces(buffer); - private static T ParseOctal(ReadOnlySpan buffer) where T : struct, INumber - { - buffer = TrimEndingNullsAndSpaces(buffer); - buffer = TrimLeadingNullsAndSpaces(buffer); + if (buffer.Length == 0) + { + return T.Zero; + } - if (buffer.Length == 0) - { - return T.Zero; + T octalFactor = T.CreateTruncating(8u); + T value = T.Zero; + foreach (byte b in buffer) + { + uint digit = (uint)(b - '0'); + if (digit >= 8) + { + throw new InvalidDataException(SR.Format(SR.TarInvalidNumber)); + } + + value = checked((value * octalFactor) + T.CreateTruncating(digit)); + } + + return value; } - T octalFactor = T.CreateTruncating(8u); - T value = T.Zero; - foreach (byte b in buffer) + private static ReadOnlySpan TrimEndingNullsAndSpaces(ReadOnlySpan buffer) { - uint digit = (uint)(b - '0'); - if (digit >= 8) + int trimmedLength = buffer.Length; + while (trimmedLength > 0 && buffer[trimmedLength - 1] is 0 or 32) { - throw new InvalidDataException(SR.Format(SR.TarInvalidNumber)); + trimmedLength--; } - value = checked((value * octalFactor) + T.CreateTruncating(digit)); + return buffer.Slice(0, trimmedLength); } - return value; - } - - private static ReadOnlySpan TrimEndingNullsAndSpaces(ReadOnlySpan buffer) - { - int trimmedLength = buffer.Length; - while (trimmedLength > 0 && buffer[trimmedLength - 1] is 0 or 32) + private static ReadOnlySpan TrimLeadingNullsAndSpaces(ReadOnlySpan buffer) { - trimmedLength--; - } - - return buffer.Slice(0, trimmedLength); - } + int newStart = 0; + while (newStart < buffer.Length && buffer[newStart] is 0 or 32) + { + newStart++; + } - private static ReadOnlySpan TrimLeadingNullsAndSpaces(ReadOnlySpan buffer) - { - int newStart = 0; - while (newStart < buffer.Length && buffer[newStart] is 0 or 32) - { - newStart++; + return buffer.Slice(newStart); } - - return buffer.Slice(newStart); } } -} diff --git a/src/runtime/src/libraries/System.Formats.Tar/tests/TarEntry/PaxTarEntry.Conversion.Tests.cs b/src/runtime/src/libraries/System.Formats.Tar/tests/TarEntry/PaxTarEntry.Conversion.Tests.cs index e42f1df0ea6..eb80726dbe0 100644 --- a/src/runtime/src/libraries/System.Formats.Tar/tests/TarEntry/PaxTarEntry.Conversion.Tests.cs +++ b/src/runtime/src/libraries/System.Formats.Tar/tests/TarEntry/PaxTarEntry.Conversion.Tests.cs @@ -77,6 +77,8 @@ public void Constructor_ConversionFromPaxGEA_ToAny_Throw() [InlineData(TarEntryFormat.Gnu)] public void Constructor_ConversionFromV7_Write(TarEntryFormat originalEntryFormat) { + DateTimeOffset initialNow = DateTimeOffset.UtcNow; + string name = "file.txt"; string contents = "Hello world"; @@ -90,22 +92,28 @@ public void Constructor_ConversionFromV7_Write(TarEntryFormat originalEntryForma dataStream.Position = 0; originalEntry.DataStream = dataStream; - DateTimeOffset expectedATime; - DateTimeOffset expectedCTime; + DateTimeOffset expectedATime = default; + DateTimeOffset expectedCTime = default; - if (originalEntryFormat is TarEntryFormat.Pax or TarEntryFormat.Gnu) + if (originalEntry is GnuTarEntry gnuEntry) { - // The constructor should've set the atime and ctime automatically to the same value of mtime - expectedATime = originalEntry.ModificationTime; - expectedCTime = originalEntry.ModificationTime; + Assert.Equal(default, gnuEntry.AccessTime); + Assert.Equal(default, gnuEntry.ChangeTime); + // Change them to mtime + gnuEntry.AccessTime = gnuEntry.ModificationTime; + gnuEntry.ChangeTime = gnuEntry.ModificationTime; + + expectedATime = gnuEntry.ModificationTime; + expectedCTime = gnuEntry.ModificationTime; } - else + else if (originalEntry is PaxTarEntry paxEntry) { - // ustar and v7 do not have atime and ctime, so the expected values of atime and ctime should be - // larger than mtime, because the conversion constructor sets those values automatically - DateTimeOffset now = DateTimeOffset.UtcNow; - expectedATime = now; - expectedCTime = now; + expectedATime = GetDateTimeOffsetFromTimestampString(paxEntry.ExtendedAttributes, PaxEaATime); + expectedCTime = GetDateTimeOffsetFromTimestampString(paxEntry.ExtendedAttributes, PaxEaCTime); + + Assert.Equal(paxEntry.ModificationTime, expectedATime); + Assert.Equal(paxEntry.ModificationTime, expectedCTime); + // Can't change them, it's a read-only dictionary } TarEntry convertedEntry = InvokeTarEntryConversionConstructor(TarEntryFormat.Pax, originalEntry); @@ -145,11 +153,6 @@ public void Constructor_ConversionFromV7_Write(TarEntryFormat originalEntryForma Assert.Equal(expectedATime, atime); Assert.Equal(expectedCTime, ctime); } - else - { - AssertExtensions.GreaterThanOrEqualTo(atime, expectedATime); - AssertExtensions.GreaterThanOrEqualTo(ctime, expectedCTime); - } } } diff --git a/src/runtime/src/libraries/System.Formats.Tar/tests/TarEntry/TarEntry.Conversion.Tests.Base.cs b/src/runtime/src/libraries/System.Formats.Tar/tests/TarEntry/TarEntry.Conversion.Tests.Base.cs index 9fa5e57d460..fef2da357e8 100644 --- a/src/runtime/src/libraries/System.Formats.Tar/tests/TarEntry/TarEntry.Conversion.Tests.Base.cs +++ b/src/runtime/src/libraries/System.Formats.Tar/tests/TarEntry/TarEntry.Conversion.Tests.Base.cs @@ -1,20 +1,15 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using System; -using System.Collections.Generic; using System.IO; -using System.Linq; -using System.Linq.Expressions; -using System.Text; -using System.Threading.Tasks; -using Microsoft.Diagnostics.Runtime.ICorDebug; using Xunit; namespace System.Formats.Tar.Tests { public class TarTestsConversionBase : TarTestsBase { + private readonly TimeSpan _oneSecond = TimeSpan.FromSeconds(1); + protected void TestConstructionConversion( TarEntryType originalEntryType, TarEntryFormat firstFormat, @@ -82,8 +77,8 @@ private TarEntry GetFirstEntry(MemoryStream dataStream, TarEntryType entryType, else if (format is TarEntryFormat.Gnu) { GnuTarEntry gnuEntry = firstEntry as GnuTarEntry; - Assert.Equal(firstEntry.ModificationTime, gnuEntry.AccessTime); - Assert.Equal(firstEntry.ModificationTime, gnuEntry.ChangeTime); + Assert.Equal(default, gnuEntry.AccessTime); + Assert.Equal(default, gnuEntry.ChangeTime); } return firstEntry; @@ -123,16 +118,54 @@ private TarEntry ConvertAndVerifyEntry(TarEntry originalEntry, TarEntryType entr if (formatToConvert is TarEntryFormat.Pax) { PaxTarEntry paxEntry = convertedEntry as PaxTarEntry; - DateTimeOffset actualAccessTime = GetDateTimeOffsetFromTimestampString(paxEntry.ExtendedAttributes, PaxEaATime); - DateTimeOffset actualChangeTime = GetDateTimeOffsetFromTimestampString(paxEntry.ExtendedAttributes, PaxEaCTime); - if (originalEntry.Format is TarEntryFormat.Pax or TarEntryFormat.Gnu) + if (originalEntry.Format is TarEntryFormat.Gnu) + { + GnuTarEntry gnuEntry = originalEntry as GnuTarEntry; + + DateTimeOffset expectedATime = gnuEntry.AccessTime; + DateTimeOffset expectedCTime = gnuEntry.ChangeTime; + + DateTimeOffset actualAccessTime = GetDateTimeOffsetFromTimestampString(paxEntry.ExtendedAttributes, PaxEaATime); + DateTimeOffset actualChangeTime = GetDateTimeOffsetFromTimestampString(paxEntry.ExtendedAttributes, PaxEaCTime); + + if (expectedATime == default) + { + AssertExtensions.GreaterThanOrEqualTo(actualAccessTime, paxEntry.ModificationTime); + } + else + { + expectedATime = expectedATime - _oneSecond; + AssertExtensions.GreaterThanOrEqualTo(expectedATime, actualAccessTime); + } + + if (expectedCTime == default) + { + AssertExtensions.GreaterThanOrEqualTo(actualChangeTime, paxEntry.ModificationTime); + } + else + { + expectedCTime = expectedCTime - _oneSecond; + AssertExtensions.GreaterThanOrEqualTo(expectedCTime, actualChangeTime); + } + } + else if (originalEntry.Format is TarEntryFormat.Pax) { - GetExpectedTimestampsFromOriginalPaxOrGnu(originalEntry, out DateTimeOffset expectedATime, out DateTimeOffset expectedCTime); - Assert.Equal(expectedATime, actualAccessTime); - Assert.Equal(expectedCTime, actualChangeTime); + PaxTarEntry originalPaxEntry = originalEntry as PaxTarEntry; + + DateTimeOffset expectedATime = GetDateTimeOffsetFromTimestampString(originalPaxEntry.ExtendedAttributes, PaxEaATime) - _oneSecond; + DateTimeOffset expectedCTime = GetDateTimeOffsetFromTimestampString(originalPaxEntry.ExtendedAttributes, PaxEaCTime) - _oneSecond; + + DateTimeOffset actualAccessTime = GetDateTimeOffsetFromTimestampString(paxEntry.ExtendedAttributes, PaxEaATime); + DateTimeOffset actualChangeTime = GetDateTimeOffsetFromTimestampString(paxEntry.ExtendedAttributes, PaxEaCTime); + + AssertExtensions.GreaterThanOrEqualTo(actualAccessTime, expectedATime); + AssertExtensions.GreaterThanOrEqualTo(actualChangeTime, expectedCTime); } else if (originalEntry.Format is TarEntryFormat.Ustar or TarEntryFormat.V7) { + DateTimeOffset actualAccessTime = GetDateTimeOffsetFromTimestampString(paxEntry.ExtendedAttributes, PaxEaATime); + DateTimeOffset actualChangeTime = GetDateTimeOffsetFromTimestampString(paxEntry.ExtendedAttributes, PaxEaCTime); + AssertExtensions.GreaterThanOrEqualTo(actualAccessTime, initialNow); AssertExtensions.GreaterThanOrEqualTo(actualChangeTime, initialNow); } @@ -143,30 +176,31 @@ private TarEntry ConvertAndVerifyEntry(TarEntry originalEntry, TarEntryType entr GnuTarEntry gnuEntry = convertedEntry as GnuTarEntry; if (originalEntry.Format is TarEntryFormat.Pax or TarEntryFormat.Gnu) { - GetExpectedTimestampsFromOriginalPaxOrGnu(originalEntry, out DateTimeOffset expectedATime, out DateTimeOffset expectedCTime); + GetExpectedTimestampsFromOriginalPaxOrGnu(originalEntry, formatToConvert, out DateTimeOffset expectedATime, out DateTimeOffset expectedCTime); AssertExtensions.GreaterThanOrEqualTo(gnuEntry.AccessTime, expectedATime); AssertExtensions.GreaterThanOrEqualTo(gnuEntry.ChangeTime, expectedCTime); } else if (originalEntry.Format is TarEntryFormat.Ustar or TarEntryFormat.V7) { - AssertExtensions.GreaterThanOrEqualTo(gnuEntry.AccessTime, initialNow); - AssertExtensions.GreaterThanOrEqualTo(gnuEntry.ChangeTime, initialNow); + Assert.Equal(default, gnuEntry.AccessTime); + Assert.Equal(default, gnuEntry.ChangeTime); } } return convertedEntry; } - private void GetExpectedTimestampsFromOriginalPaxOrGnu(TarEntry originalEntry, out DateTimeOffset expectedATime, out DateTimeOffset expectedCTime) + private void GetExpectedTimestampsFromOriginalPaxOrGnu(TarEntry originalEntry, TarEntryFormat formatToConvert, out DateTimeOffset expectedATime, out DateTimeOffset expectedCTime) { Assert.True(originalEntry.Format is TarEntryFormat.Gnu or TarEntryFormat.Pax); if (originalEntry.Format is TarEntryFormat.Pax) { PaxTarEntry originalPaxEntry = originalEntry as PaxTarEntry; - Assert.Contains("atime", originalPaxEntry.ExtendedAttributes); - Assert.Contains("ctime", originalPaxEntry.ExtendedAttributes); - expectedATime = GetDateTimeOffsetFromTimestampString(originalPaxEntry.ExtendedAttributes, "atime"); - expectedCTime = GetDateTimeOffsetFromTimestampString(originalPaxEntry.ExtendedAttributes, "ctime"); + Assert.Contains("atime", originalPaxEntry.ExtendedAttributes); // We are verifying that the original had an atime and ctime set + Assert.Contains("ctime", originalPaxEntry.ExtendedAttributes); // and that when converting to GNU we are _not_ preserving them + // And that instead, we are setting them to MinValue + expectedATime = formatToConvert is TarEntryFormat.Gnu ? default : GetDateTimeOffsetFromTimestampString(originalPaxEntry.ExtendedAttributes, "atime"); + expectedCTime = formatToConvert is TarEntryFormat.Gnu ? default : GetDateTimeOffsetFromTimestampString(originalPaxEntry.ExtendedAttributes, "ctime"); } else { diff --git a/src/runtime/src/libraries/System.Formats.Tar/tests/TarTestsBase.Gnu.cs b/src/runtime/src/libraries/System.Formats.Tar/tests/TarTestsBase.Gnu.cs index 325c6c916f6..96cfabac17d 100644 --- a/src/runtime/src/libraries/System.Formats.Tar/tests/TarTestsBase.Gnu.cs +++ b/src/runtime/src/libraries/System.Formats.Tar/tests/TarTestsBase.Gnu.cs @@ -56,33 +56,10 @@ protected void SetFifo(GnuTarEntry fifo) protected void SetGnuProperties(GnuTarEntry entry) { - // The octal format limits the representable range. - bool formatIsOctalOnly = entry.Format is not TarEntryFormat.Pax and not TarEntryFormat.Gnu; - - DateTimeOffset approxNow = DateTimeOffset.UtcNow.Subtract(TimeSpan.FromHours(6)); - - // ATime: Verify the default value was approximately "now" - Assert.True(entry.AccessTime > approxNow); - if (formatIsOctalOnly) - { - Assert.Throws(() => entry.AccessTime = DateTimeOffset.MinValue); - } - else - { - entry.AccessTime = DateTimeOffset.MinValue; - } + Assert.Equal(default, entry.AccessTime); entry.AccessTime = TestAccessTime; - // CTime: Verify the default value was approximately "now" - Assert.True(entry.ChangeTime > approxNow); - if (formatIsOctalOnly) - { - Assert.Throws(() => entry.ChangeTime = DateTimeOffset.MinValue); - } - else - { - entry.ChangeTime = DateTimeOffset.MinValue; - } + Assert.Equal(default, entry.ChangeTime); entry.ChangeTime = TestChangeTime; } @@ -136,8 +113,8 @@ protected void VerifyGnuProperties(GnuTarEntry entry) protected void VerifyGnuTimestamps(GnuTarEntry gnu) { - AssertExtensions.GreaterThanOrEqualTo(gnu.AccessTime, DateTimeOffset.UnixEpoch); - AssertExtensions.GreaterThanOrEqualTo(gnu.ChangeTime, DateTimeOffset.UnixEpoch); + Assert.Equal(default, gnu.AccessTime); + Assert.Equal(default, gnu.ChangeTime); } } } diff --git a/src/runtime/src/libraries/System.Formats.Tar/tests/TarTestsBase.Pax.cs b/src/runtime/src/libraries/System.Formats.Tar/tests/TarTestsBase.Pax.cs index c1776753512..adfbea8fdaa 100644 --- a/src/runtime/src/libraries/System.Formats.Tar/tests/TarTestsBase.Pax.cs +++ b/src/runtime/src/libraries/System.Formats.Tar/tests/TarTestsBase.Pax.cs @@ -4,7 +4,6 @@ using System.Collections.Generic; using System.Globalization; using System.IO; -using System.Runtime.CompilerServices; using Xunit; namespace System.Formats.Tar.Tests diff --git a/src/runtime/src/libraries/System.Formats.Tar/tests/TarTestsBase.cs b/src/runtime/src/libraries/System.Formats.Tar/tests/TarTestsBase.cs index 5412d03f6f2..e8df0e4a9a3 100644 --- a/src/runtime/src/libraries/System.Formats.Tar/tests/TarTestsBase.cs +++ b/src/runtime/src/libraries/System.Formats.Tar/tests/TarTestsBase.cs @@ -60,6 +60,8 @@ public abstract partial class TarTestsBase : FileCleanupTestBase protected const string TestGName = "group"; protected const string TestUName = "user"; + protected const int RootUidGid = 0; + protected const string RootUNameGName = "root"; // The metadata of the entries inside the asset archives are all set to these values protected const int AssetGid = 3579; @@ -255,7 +257,7 @@ protected static string GetStrangeTarFilePath(string testCaseName) => protected static MemoryStream GetStrangeTarMemoryStream(string testCaseName) => GetMemoryStream(GetStrangeTarFilePath(testCaseName)); - private static MemoryStream GetMemoryStream(string path) + protected static MemoryStream GetMemoryStream(string path) { MemoryStream ms = new(); using (FileStream fs = File.OpenRead(path)) @@ -340,7 +342,7 @@ protected void SetCommonProperties(TarEntry entry, bool isDirectory = false) } else { - entry.ModificationTime = DateTimeOffset.MinValue; + entry.ModificationTime = default; } entry.ModificationTime = TestModificationTime; @@ -724,7 +726,7 @@ internal static IEnumerable GetNamesNonAsciiTestData(NameCapabilities ma // this is 256 but is supported because prefix is not required to end in separator. yield return Repeat(OneByteCharacter, 155) + Separator + Repeat(OneByteCharacter, 100); - // non-ascii prefix + name + // non-ascii prefix + name yield return Repeat(TwoBytesCharacter, 155 / 2) + Separator + Repeat(OneByteCharacter, 100); yield return Repeat(FourBytesCharacter, 155 / 4) + Separator + Repeat(OneByteCharacter, 100); @@ -798,6 +800,26 @@ internal static IEnumerable GetTooLongNamesTestData(NameCapabilities max } } + internal static int GetChecksum(byte[] value) + { + int count = 0; + foreach (byte c in value) + { + count += c; + } + return count; + } + + internal static int GetChecksum(string value) + { + int count = 0; + foreach (char c in value) + { + count += c; + } + return count; + } + internal static string Repeat(char c, int count) { return new string(c, count); diff --git a/src/runtime/src/libraries/System.Formats.Tar/tests/TarWriter/TarWriter.Tests.cs b/src/runtime/src/libraries/System.Formats.Tar/tests/TarWriter/TarWriter.Tests.cs index 1dbd3fc9fdf..647160421df 100644 --- a/src/runtime/src/libraries/System.Formats.Tar/tests/TarWriter/TarWriter.Tests.cs +++ b/src/runtime/src/libraries/System.Formats.Tar/tests/TarWriter/TarWriter.Tests.cs @@ -10,7 +10,6 @@ namespace System.Formats.Tar.Tests public partial class TarWriter_Tests : TarTestsBase { private readonly DateTimeOffset TimestampForChecksum = new DateTimeOffset(2022, 1, 2, 3, 45, 00, TimeSpan.Zero); - private readonly DateTimeOffset UnixEpochTimestampForChecksum = DateTimeOffset.UnixEpoch; [Fact] public void Constructors_NullStream() @@ -289,24 +288,26 @@ private int GetNameChecksum(TarEntryFormat format, bool longPath, out string ent { // 'a.b' = 97 + 46 + 98 = 241 entryName = "a.b"; - expectedChecksum += 241; + expectedChecksum += GetChecksum(entryName); } else { - entryName = new string('a', 100); - expectedChecksum += 9700; // 100 * 97 = 9700 (first 100 bytes go into 'name' field) + entryName = new string('a', 100); // 100 * 97 = 9700 (first 100 bytes go into 'name' field) + expectedChecksum += GetChecksum(entryName); // V7 does not support name fields larger than 100 + string extraNameForPrefix = string.Empty; if (format is not TarEntryFormat.V7) { - entryName += "/" + new string('a', 50); + extraNameForPrefix = new string('a', 50); // 50 * 97 = 4850 + entryName += "/" + extraNameForPrefix; } // Gnu and Pax writes first 100 bytes in 'name' field, then the full name is written in a metadata entry that precedes this one. if (format is TarEntryFormat.Ustar) { - // Ustar can write the directory into prefix. - expectedChecksum += 4850; // 50 * 97 = 4850 + // Ustar can write the directory into prefix (separator excluded). + expectedChecksum += GetChecksum(extraNameForPrefix); } } return expectedChecksum; @@ -319,16 +320,17 @@ private int GetLinkChecksum(TarEntryFormat format, bool longLink, out string lin { // 'a.b' = 97 + 46 + 98 = 241 linkName = "a.b"; - expectedChecksum += 241; + expectedChecksum += GetChecksum(linkName); } else { linkName = new string('a', 100); // 100 * 97 = 9700 (first 100 bytes go into 'linkName' field) - expectedChecksum += 9700; + expectedChecksum += GetChecksum(linkName); - // V7 and Ustar does not support name fields larger than 100 + // V7 and Ustar do not support name fields larger than 100. // Pax and Gnu write first 100 bytes in 'linkName' field, then the full link name is written in the - // preceding metadata entry (extended attributes for PAX, LongLink for GNU). + // preceding metadata entry (extended attributes for PAX, LongLink for GNU), meaning the linkname + // won't be part of the current entry's checksum. if (format is not TarEntryFormat.V7 and not TarEntryFormat.Ustar) { linkName += "/" + new string('a', 50); @@ -341,49 +343,55 @@ private int GetLinkChecksum(TarEntryFormat format, bool longLink, out string lin private int GetChecksumForCommonFields(TarEntry entry, TarEntryType entryType) { // Add 8 spaces to the sum: (8 x 32) = 256 - int expectedChecksum = 256; + int expectedChecksum = GetChecksum(" "); // '0000744\0' = 48 + 48 + 48 + 48 + 55 + 52 + 52 + 0 = 351 entry.Mode = AssetMode; // decimal 484 (octal 744) => u+rxw, g+r, o+r - expectedChecksum += 351; + string modeOctal = Convert.ToString((int)AssetMode, 8).PadLeft(7, '0'); + expectedChecksum += GetChecksum(modeOctal); // '0017351\0' = 48 + 48 + 49 + 55 + 51 + 53 + 49 + 0 = 353 entry.Uid = AssetUid; // 7913 (octal 17351) - expectedChecksum += 353; + string uidOctal = Convert.ToString(AssetUid, 8).PadLeft(7, '0'); + expectedChecksum += GetChecksum(uidOctal); // '0006773\0' = 48 + 48 + 48 + 54 + 55 + 55 + 51 + 0 = 359 entry.Gid = AssetGid; // 3579 (octal 6773) - expectedChecksum += 359; + string gidOctal = Convert.ToString(AssetGid, 8).PadLeft(7, '0'); + expectedChecksum += GetChecksum(gidOctal); // '14164217674\0' = 49 + 52 + 49 + 54 + 52 + 50 + 49 + 55 + 54 + 55 + 52 + 0 = 571 DateTimeOffset mtime = TimestampForChecksum; // ToUnixTimeSeconds() = 1641095100 (octal 14164217674) entry.ModificationTime = mtime; - expectedChecksum += 571; + expectedChecksum += GetChecksum(Convert.ToString(mtime.ToUnixTimeSeconds(), 8).PadLeft(11, '0')); if (entryType is TarEntryType.RegularFile or TarEntryType.V7RegularFile) { entry.DataStream = new MemoryStream(); byte[] buffer = [ 72, 101, 108, 108, 111 ]; // values don't matter, only length (5) - // '0000000005\0' = 48 + 48 + 48 + 48 + 48 + 48 + 48 + 48 + 48 + 48 + 53 + 0 = 533 + // '00000000005\0' = 48 + 48 + 48 + 48 + 48 + 48 + 48 + 48 + 48 + 48 + 53 + 0 = 533 entry.DataStream.Write(buffer); entry.DataStream.Seek(0, SeekOrigin.Begin); // Rewind to ensure it gets written from the beginning - expectedChecksum += 533; + expectedChecksum += GetChecksum(Convert.ToString(buffer.Length, 8).PadLeft(11, '0')); } else { - // '0000000000\0' = 48 + 48 + 48 + 48 + 48 + 48 + 48 + 48 + 48 + 48 + 48 + 0 = 528 - expectedChecksum += 528; + // '00000000000\0' = 48 + 48 + 48 + 48 + 48 + 48 + 48 + 48 + 48 + 48 + 48 + 0 = 528 + expectedChecksum += GetChecksum(new string('0', 11)); } + // Some examples: // If V7 regular file: '\0' = 0 // If Ustar/Pax/Gnu regular file: '0' = 48 + // If symbolic link: '2' = 50 // If block device: '4' = 52 expectedChecksum += (byte)entryType; // Checksum so far: 256 + 351 + 353 + 359 + 571 = decimal 1890 // If V7RegularFile: 1890 + 533 + 0 = 2423 (octal 4567) => '004567\0' // If RegularFile: 1890 + 533 + 48 = 2471 (octal 4647) => '004647\0' + // If SymbolicLink: 1890 + 528 + 50 = 2468 (octal 4644) => '004644\0' // If BlockDevice: 1890 + 0 + 52 = 1942 (octal 3626) => '003626\0' return expectedChecksum; } @@ -396,16 +404,16 @@ private int GetChecksumForFormatSpecificFields(TarEntry entry, TarEntryFormat fo case TarEntryFormat.Ustar: case TarEntryFormat.Pax: // Magic: 'ustar\0' = 117 + 115 + 116 + 97 + 114 + 0 = 559 - checksum += 559; + checksum += GetChecksum("ustar"); // Version: '00' = 48 + 48 = 96 - checksum += 96; + checksum += GetChecksum("00"); // Total: 655 break; case TarEntryFormat.Gnu: // Magic: 'ustar ' = 117 + 115 + 116 + 97 + 114 + 32 = 591 - checksum += 591; + checksum += GetChecksum("ustar "); // Version: ' \0' = 32 + 0 = 32 - checksum += 32; + checksum += GetChecksum(" "); // Total: 623 break; } @@ -414,20 +422,20 @@ private int GetChecksumForFormatSpecificFields(TarEntry entry, TarEntryFormat fo { // 'user' = 117 + 115 + 101 + 114 = 447 posixEntry.UserName = TestUName; - checksum += 447; + checksum += GetChecksum(TestUName); // 'group' = 103 + 114 + 111 + 117 + 112 = 557 posixEntry.GroupName = TestGName; - checksum += 557; + checksum += GetChecksum(TestGName); // Total: 1004 if (posixEntry.EntryType is TarEntryType.BlockDevice) { // '0000075\0' = 48 + 48 + 48 + 48 + 48 + 55 + 53 + 0 = 348 posixEntry.DeviceMajor = TestBlockDeviceMajor; // 61 (octal 75) - checksum += 348; + checksum += GetChecksum(Convert.ToString(TestBlockDeviceMajor, 8).PadLeft(7, '0')); // '0000101\0' = 48 + 48 + 48 + 48 + 49 + 48 + 49 + 0 = 338 posixEntry.DeviceMinor = TestBlockDeviceMinor; // 65 (octal 101) - checksum += 338; + checksum += GetChecksum(Convert.ToString(TestBlockDeviceMinor, 8).PadLeft(7, '0')); // Total: 686 } @@ -440,21 +448,22 @@ private int GetChecksumForFormatSpecificFields(TarEntry entry, TarEntryFormat fo gnuEntry.ChangeTime = expectedTimestampToTest; checksum += expectedTimestampChecksumToTest; - // Total: UnixEpoch = 1056, otherwise = 1142 + // Total: UnixEpoch = 0, otherwise = 1142 void GetTimestampToTest(bool testEpoch, out DateTimeOffset expectedTimestampToTest, out int expectedTimestampChecksumToTest) { if (!testEpoch) { - expectedTimestampChecksumToTest = 571; + expectedTimestampChecksumToTest = GetChecksum(Convert.ToString(TimestampForChecksum.ToUnixTimeSeconds(), 8).PadLeft(11, '0')); // '14164217674\0' = 49 + 52 + 49 + 54 + 52 + 50 + 49 + 55 + 54 + 55 + 52 + 0 = 571 expectedTimestampToTest = TimestampForChecksum; // ToUnixTimeSeconds() = decimal 1641095100, octal 14164217674; + return; } - expectedTimestampChecksumToTest = 528; - // '00000000000\0' = 0 - expectedTimestampToTest = UnixEpochTimestampForChecksum; // ToUnixTimeSeconds() = decimal 0, octal 0; + expectedTimestampChecksumToTest = 0; + // '\0\0\0\0\0\0\0\0\0\0\0\0' = 0 + expectedTimestampToTest = default; } } } @@ -464,11 +473,12 @@ void GetTimestampToTest(bool testEpoch, out DateTimeOffset expectedTimestampToTe // Ustar RegularFile: 655 + 1004 = 1659 // Pax RegularFile: 655 + 1004 = 1659 // Gnu RegularFile: 623 + 1004 + 1142 = 2769 + // Gnu SymbolicLink: 623 + 1004 + 0 = 1627 // Ustar BlockDevice: 655 + 1004 + 686 = 2345 // Pax BlockDevice: 655 + 1004 + 686 = 2345 // Gnu BlockDevice: // No epoch: 623 + 1004 + 686 + 1142 = 3455 - // Epoch: 623 + 1004 + 686 + 1056 = 3369 + // Epoch: 0 return checksum; } } diff --git a/src/runtime/src/libraries/System.Formats.Tar/tests/TarWriter/TarWriter.WriteEntry.Base.cs b/src/runtime/src/libraries/System.Formats.Tar/tests/TarWriter/TarWriter.WriteEntry.Base.cs index d8d4018c40b..6e04c67b3e9 100644 --- a/src/runtime/src/libraries/System.Formats.Tar/tests/TarWriter/TarWriter.WriteEntry.Base.cs +++ b/src/runtime/src/libraries/System.Formats.Tar/tests/TarWriter/TarWriter.WriteEntry.Base.cs @@ -108,7 +108,7 @@ private static IEnumerable GetWriteTimeStamps(TarEntryFormat for if (!formatIsOctalOnly) { // Min value property. - yield return DateTimeOffset.MinValue; // This is not representable with the octal format. + yield return default; // This is not representable with the octal format. // One second past what a 12-byte field can store with octal representation yield return DateTimeOffset.UnixEpoch + new TimeSpan((0x1FFFFFFFF + 1) * TimeSpan.TicksPerSecond); diff --git a/src/runtime/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems b/src/runtime/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems index d3f62e4c34b..5d1bfacb656 100644 --- a/src/runtime/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems +++ b/src/runtime/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems @@ -959,7 +959,8 @@ - + + @@ -2132,6 +2133,9 @@ Common\Interop\Windows\Ole32\Interop.CoCreateGuid.cs + + Interop\Windows\Ole32\Interop.CoGetContextToken.cs + Common\Interop\Windows\Ole32\Interop.CoGetStandardMarshal.cs @@ -2259,6 +2263,13 @@ + + + + + + + diff --git a/src/runtime/src/libraries/System.Private.CoreLib/src/System/ComAwareWeakReference.cs b/src/runtime/src/libraries/System.Private.CoreLib/src/System/ComAwareWeakReference.cs index 7d71cd93846..199b64bc8bb 100644 --- a/src/runtime/src/libraries/System.Private.CoreLib/src/System/ComAwareWeakReference.cs +++ b/src/runtime/src/libraries/System.Private.CoreLib/src/System/ComAwareWeakReference.cs @@ -24,11 +24,11 @@ internal sealed class ComInfo // _pComWeakRef is effectively readonly. // the only place where we change it after construction is in finalizer. private IntPtr _pComWeakRef; - private readonly long _wrapperId; + private readonly object? _context; internal object? ResolveTarget() { - return ComWeakRefToObject(_pComWeakRef, _wrapperId); + return ComWeakRefToObject(_pComWeakRef, _context); } [MethodImpl(MethodImplOptions.AggressiveInlining)] @@ -43,13 +43,13 @@ internal sealed class ComInfo [MethodImpl(MethodImplOptions.NoInlining)] private static ComInfo? FromObjectSlow(object target) { - IntPtr pComWeakRef = ObjectToComWeakRef(target, out long wrapperId); + IntPtr pComWeakRef = ObjectToComWeakRef(target, out object? context); if (pComWeakRef == 0) return null; try { - return new ComInfo(pComWeakRef, wrapperId); + return new ComInfo(pComWeakRef, context); } catch (OutOfMemoryException) { @@ -59,11 +59,11 @@ internal sealed class ComInfo } } - private ComInfo(IntPtr pComWeakRef, long wrapperId) + private ComInfo(IntPtr pComWeakRef, object? context) { Debug.Assert(pComWeakRef != IntPtr.Zero); _pComWeakRef = pComWeakRef; - _wrapperId = wrapperId; + _context = context; } ~ComInfo() diff --git a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Debugger.cs b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Debugger.cs index 77e97ba62f4..27ce5dc0095 100644 --- a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Debugger.cs +++ b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Diagnostics/Debugger.cs @@ -1,12 +1,22 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Diagnostics.CodeAnalysis; using System.Runtime.CompilerServices; namespace System.Diagnostics { public static partial class Debugger { + /// + /// Represents the default category of message with a constant. + /// + /// + /// The value of this default constant is `null`. + /// is used by . + /// + public static readonly string? DefaultCategory; + /// /// Signals a breakpoint to an attached debugger with the details /// if a .NET debugger is attached with break on user-unhandled exception enabled and a method @@ -17,5 +27,15 @@ public static partial class Debugger public static void BreakForUserUnhandledException(Exception exception) { } + + [FeatureSwitchDefinition("System.Diagnostics.Debugger.IsSupported")] + internal static bool IsSupported { get; } = InitializeIsSupported(); + + private static bool InitializeIsSupported() + { + return AppContext.TryGetSwitch("System.Diagnostics.Debugger.IsSupported", out bool isSupported) + ? isSupported + : true; + } } } diff --git a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/ConditionalWeakTable.cs b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/ConditionalWeakTable.cs index eb6af90b5a5..c955082f547 100644 --- a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/ConditionalWeakTable.cs +++ b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/ConditionalWeakTable.cs @@ -7,6 +7,7 @@ using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System.Numerics; +using System.Runtime.InteropServices; using System.Threading; namespace System.Runtime.CompilerServices @@ -538,6 +539,7 @@ private void CreateEntry(TKey key, TValue value) // When the dictionary grows the _entries table, it scours it for expired keys and does not // add those to the new container. //-------------------------------------------------------------------------------------------- + [StructLayout(LayoutKind.Auto)] private struct Entry { public DependentHandle depHnd; // Holds key and value using a weak reference for the key and a strong reference diff --git a/src/runtime/src/coreclr/nativeaot/System.Private.CoreLib/src/System/ComAwareWeakReference.NativeAot.cs b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ComAwareWeakReference.ComWrappers.cs similarity index 63% rename from src/runtime/src/coreclr/nativeaot/System.Private.CoreLib/src/System/ComAwareWeakReference.NativeAot.cs rename to src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ComAwareWeakReference.ComWrappers.cs index d95eab97160..2aae61b9390 100644 --- a/src/runtime/src/coreclr/nativeaot/System.Private.CoreLib/src/System/ComAwareWeakReference.NativeAot.cs +++ b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ComAwareWeakReference.ComWrappers.cs @@ -4,8 +4,6 @@ using System; using System.Runtime.CompilerServices; -#if FEATURE_COMINTEROP || FEATURE_COMWRAPPERS - namespace System { internal sealed partial class ComAwareWeakReference @@ -14,36 +12,35 @@ internal sealed partial class ComAwareWeakReference // In addition we don't want a direct reference to ComWrappers to allow for better // trimming. So we instead make use of delegates that ComWrappers registers when // it is used. - private static unsafe delegate* s_comWeakRefToObjectCallback; + private static unsafe delegate* s_comWeakRefToObjectCallback; private static unsafe delegate* s_possiblyComObjectCallback; - private static unsafe delegate* s_objectToComWeakRefCallback; + private static unsafe delegate* s_objectToComWeakRefCallback; internal static unsafe void InitializeCallbacks( - delegate* comWeakRefToObject, + delegate* comWeakRefToObject, delegate* possiblyComObject, - delegate* objectToComWeakRef) + delegate* objectToComWeakRef) { s_comWeakRefToObjectCallback = comWeakRefToObject; s_objectToComWeakRefCallback = objectToComWeakRef; s_possiblyComObjectCallback = possiblyComObject; } - internal static unsafe object? ComWeakRefToObject(IntPtr pComWeakRef, long wrapperId) + internal static unsafe object? ComWeakRefToComWrappersObject(IntPtr pComWeakRef, object? context) { - return s_comWeakRefToObjectCallback != null ? s_comWeakRefToObjectCallback(pComWeakRef, wrapperId) : null; + return s_comWeakRefToObjectCallback != null ? s_comWeakRefToObjectCallback(pComWeakRef, context) : null; } [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static unsafe bool PossiblyComObject(object target) + internal static unsafe bool PossiblyComWrappersObject(object target) { return s_possiblyComObjectCallback != null ? s_possiblyComObjectCallback(target) : false; } - internal static unsafe IntPtr ObjectToComWeakRef(object target, out long wrapperId) + internal static unsafe IntPtr ComWrappersObjectToComWeakRef(object target, out object? context) { - wrapperId = 0; - return s_objectToComWeakRefCallback != null ? s_objectToComWeakRefCallback(target, out wrapperId) : IntPtr.Zero; + context = null; + return s_objectToComWeakRefCallback != null ? s_objectToComWeakRefCallback(target, out context) : IntPtr.Zero; } } } -#endif diff --git a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.PlatformNotSupported.cs b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.PlatformNotSupported.cs index 37c25f85153..1d87d2b2e9d 100644 --- a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.PlatformNotSupported.cs +++ b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.PlatformNotSupported.cs @@ -7,8 +7,26 @@ namespace System.Runtime.InteropServices { - public abstract partial class ComWrappers + [UnsupportedOSPlatform("android")] + [UnsupportedOSPlatform("browser")] + [UnsupportedOSPlatform("ios")] + [UnsupportedOSPlatform("tvos")] + [CLSCompliant(false)] + public abstract class ComWrappers { + public struct ComInterfaceEntry + { + public Guid IID; + + public IntPtr Vtable; + } + + protected abstract unsafe ComInterfaceEntry* ComputeVtables(object obj, CreateComInterfaceFlags flags, out int count); + + protected abstract object? CreateObject(IntPtr externalComObject, CreateObjectFlags flags); + + protected internal abstract void ReleaseObjects(IEnumerable objects); + public static unsafe bool TryGetComInstance(object obj, out IntPtr unknown) { unknown = default; @@ -21,8 +39,9 @@ public static unsafe bool TryGetObject(IntPtr unknown, [NotNullWhen(true)] out o return false; } - public partial struct ComInterfaceDispatch + public struct ComInterfaceDispatch { + public IntPtr Vtable; public static unsafe T GetInstance(ComInterfaceDispatch* dispatchPtr) where T : class { throw new PlatformNotSupportedException(); diff --git a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.cs b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.cs index afc824b8025..639f72b2d93 100644 --- a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.cs +++ b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.cs @@ -2,101 +2,1366 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.Collections; +using System.Collections.Generic; +using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; +using System.Runtime.CompilerServices; using System.Runtime.Versioning; +using System.Threading; + +using Internal.Runtime; namespace System.Runtime.InteropServices { + /// - /// Enumeration of flags for . + /// Class for managing wrappers of COM IUnknown types. /// - [Flags] - public enum CreateComInterfaceFlags + [UnsupportedOSPlatform("android")] + [UnsupportedOSPlatform("browser")] + [UnsupportedOSPlatform("ios")] + [UnsupportedOSPlatform("tvos")] + [CLSCompliant(false)] + public abstract partial class ComWrappers { - None = 0, + /// + /// Interface type and pointer to targeted VTable. + /// + public struct ComInterfaceEntry + { + /// + /// Interface IID. + /// + public Guid IID; + + /// + /// Memory must have the same lifetime as the memory returned from the call to . + /// + public IntPtr Vtable; + } + + private const int TrackerRefShift = 32; + private const ulong TrackerRefCounter = 1UL << TrackerRefShift; + private const ulong DestroySentinel = 0x0000000080000000UL; + private const ulong TrackerRefCountMask = 0xffffffff00000000UL; + private const ulong ComRefCountMask = 0x000000007fffffffUL; + private const int COR_E_ACCESSING_CCW = unchecked((int)0x80131544); + + internal static readonly Guid IID_IUnknown = new Guid(0x00000000, 0x0000, 0x0000, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46); + internal static readonly Guid IID_IReferenceTrackerTarget = new Guid(0x64bd43f8, 0xbfee, 0x4ec4, 0xb7, 0xeb, 0x29, 0x35, 0x15, 0x8d, 0xae, 0x21); + internal static readonly Guid IID_TaggedImpl = new Guid(0x5c13e51c, 0x4f32, 0x4726, 0xa3, 0xfd, 0xf3, 0xed, 0xd6, 0x3d, 0xa3, 0xa0); + internal static readonly Guid IID_IReferenceTracker = new Guid(0x11D3B13A, 0x180E, 0x4789, 0xA8, 0xBE, 0x77, 0x12, 0x88, 0x28, 0x93, 0xE6); + internal static readonly Guid IID_IReferenceTrackerHost = new Guid(0x29a71c6a, 0x3c42, 0x4416, 0xa3, 0x9d, 0xe2, 0x82, 0x5a, 0x7, 0xa7, 0x73); + internal static readonly Guid IID_IReferenceTrackerManager = new Guid(0x3cf184b4, 0x7ccb, 0x4dda, 0x84, 0x55, 0x7e, 0x6c, 0xe9, 0x9a, 0x32, 0x98); + internal static readonly Guid IID_IFindReferenceTargetsCallback = new Guid(0x04b3486c, 0x4687, 0x4229, 0x8d, 0x14, 0x50, 0x5a, 0xb5, 0x84, 0xdd, 0x88); + + private static readonly Guid IID_IInspectable = new Guid(0xAF86E2E0, 0xB12D, 0x4c6a, 0x9C, 0x5A, 0xD7, 0xAA, 0x65, 0x10, 0x1E, 0x90); + private static readonly Guid IID_IWeakReferenceSource = new Guid(0x00000038, 0, 0, 0xC0, 0, 0, 0, 0, 0, 0, 0x46); + + private static readonly ConditionalWeakTable s_nativeObjectWrapperTable = []; /// - /// The caller will provide an IUnknown Vtable. + /// Associates an object with all the s that were created for it. /// - /// - /// This is useful in scenarios when the caller has no need to rely on an IUnknown instance - /// that is used when running managed code is not possible (i.e. during a GC). In traditional - /// COM scenarios this is common, but scenarios involving Reference Tracker hosting - /// calling of the IUnknown API during a GC is possible. - /// - CallerDefinedIUnknown = 1, + private static readonly ConditionalWeakTable> s_allManagedObjectWrapperTable = []; /// - /// Flag used to indicate the COM interface should implement IReferenceTrackerTarget. - /// When this flag is passed, the resulting COM interface will have an internal implementation of IUnknown - /// and as such none should be supplied by the caller. + /// Associates a managed object with the that was created for it by this instance. /// - TrackerSupport = 2, - } + private readonly ConditionalWeakTable _managedObjectWrapperTable = []; + private readonly RcwCache _rcwCache = new(); - /// - /// Enumeration of flags for . - /// - [Flags] - public enum CreateObjectFlags - { - None = 0, + internal static bool TryGetComInstanceForIID(object obj, Guid iid, out IntPtr unknown, out ComWrappers? comWrappers) + { + if (obj == null + || !s_nativeObjectWrapperTable.TryGetValue(obj, out NativeObjectWrapper? wrapper)) + { + unknown = IntPtr.Zero; + comWrappers = null; + return false; + } + + comWrappers = wrapper.ComWrappers; + return Marshal.QueryInterface(wrapper.ExternalComObject, iid, out unknown) == HResults.S_OK; + } + + public static unsafe bool TryGetComInstance(object obj, out IntPtr unknown) + { + unknown = IntPtr.Zero; + if (obj == null + || !s_nativeObjectWrapperTable.TryGetValue(obj, out NativeObjectWrapper? wrapper)) + { + return false; + } + + return Marshal.QueryInterface(wrapper.ExternalComObject, IID_IUnknown, out unknown) == HResults.S_OK; + } + + public static unsafe bool TryGetObject(IntPtr unknown, [NotNullWhen(true)] out object? obj) + { + obj = null; + if (unknown == IntPtr.Zero) + { + return false; + } + + ComInterfaceDispatch* comInterfaceDispatch = TryGetComInterfaceDispatch(unknown); + if (comInterfaceDispatch == null || + ComInterfaceDispatch.ToManagedObjectWrapper(comInterfaceDispatch)->MarkedToDestroy) + { + return false; + } + + obj = ComInterfaceDispatch.GetInstance(comInterfaceDispatch); + return true; + } /// - /// Indicate if the supplied external COM object implements the IReferenceTracker. + /// ABI for function dispatch of a COM interface. /// - TrackerObject = 1, + public unsafe partial struct ComInterfaceDispatch + { + public IntPtr Vtable; + + /// + /// Given a pointer from a generated Vtable, convert to the target type. + /// + /// Desired type. + /// Pointer supplied to Vtable function entry. + /// Instance of type associated with dispatched function call. + public static unsafe T GetInstance(ComInterfaceDispatch* dispatchPtr) where T : class + { + ManagedObjectWrapper* comInstance = ToManagedObjectWrapper(dispatchPtr); + return Unsafe.As(comInstance->Holder!.WrappedObject); + } + + internal static unsafe ManagedObjectWrapper* ToManagedObjectWrapper(ComInterfaceDispatch* dispatchPtr) + { + InternalComInterfaceDispatch* dispatch = (InternalComInterfaceDispatch*)unchecked((nuint)dispatchPtr & (nuint)InternalComInterfaceDispatch.DispatchAlignmentMask); + return dispatch->_thisPtr; + } + } + + internal unsafe struct InternalComInterfaceDispatch + { +#if TARGET_64BIT + internal const int DispatchAlignment = 64; + internal const int NumEntriesInDispatchTable = DispatchAlignment / 8 /* sizeof(void*) */ - 1; +#else + internal const int DispatchAlignment = 16; + internal const int NumEntriesInDispatchTable = DispatchAlignment / 4 /* sizeof(void*) */ - 1; +#endif + internal const ulong DispatchAlignmentMask = unchecked((ulong)~(InternalComInterfaceDispatch.DispatchAlignment - 1)); + + internal ManagedObjectWrapper* _thisPtr; + + public DispatchTable Vtables; + + [InlineArray(NumEntriesInDispatchTable)] + internal unsafe struct DispatchTable + { + private IntPtr _element; + } + } + + internal enum CreateComInterfaceFlagsEx + { + None = 0, + + /// + /// The caller will provide an IUnknown Vtable. + /// + /// + /// This is useful in scenarios when the caller has no need to rely on an IUnknown instance + /// that is used when running managed code is not possible (i.e. during a GC). In traditional + /// COM scenarios this is common, but scenarios involving Reference Tracker hosting + /// calling of the IUnknown API during a GC is possible. + /// + CallerDefinedIUnknown = 1, + + /// + /// Flag used to indicate the COM interface should implement IReferenceTrackerTarget. + /// When this flag is passed, the resulting COM interface will have an internal implementation of IUnknown + /// and as such none should be supplied by the caller. + /// + TrackerSupport = 2, + + LacksICustomQueryInterface = 1 << 29, + IsComActivated = 1 << 30, + IsPegged = 1 << 31, + + InternalMask = IsPegged | IsComActivated | LacksICustomQueryInterface, + } + + internal unsafe struct ManagedObjectWrapper + { + public volatile IntPtr HolderHandle; // This is GC Handle + public ulong RefCount; + + internal CreateComInterfaceFlagsEx Flags; + public int UserDefinedCount; + public ComInterfaceEntry* UserDefined; + internal InternalComInterfaceDispatch* Dispatches; + + public bool IsRooted + { + get + { + ulong refCount = Interlocked.Read(ref RefCount); + bool rooted = GetComCount(refCount) > 0; + if (!rooted) + { + rooted = GetTrackerCount(refCount) > 0 && + ((Flags & CreateComInterfaceFlagsEx.IsPegged) != 0 || TrackerObjectManager.IsGlobalPeggingEnabled); + } + return rooted; + } + } + + public ManagedObjectWrapperHolder? Holder + { + get + { + IntPtr handle = HolderHandle; + if (handle == IntPtr.Zero) + return null; + else + return Unsafe.As(GCHandle.FromIntPtr(handle).Target); + } + } + + public readonly bool MarkedToDestroy => IsMarkedToDestroy(RefCount); + + public uint AddRef() + { + return GetComCount(Interlocked.Increment(ref RefCount)); + } + + public uint Release() + { + Debug.Assert(GetComCount(RefCount) != 0); + return GetComCount(Interlocked.Decrement(ref RefCount)); + } + + public uint AddRefFromReferenceTracker() + { + ulong prev; + ulong curr; + do + { + prev = RefCount; + curr = prev + TrackerRefCounter; + } while (Interlocked.CompareExchange(ref RefCount, curr, prev) != prev); + + return GetTrackerCount(curr); + } + + public uint ReleaseFromReferenceTracker() + { + Debug.Assert(GetTrackerCount(RefCount) != 0); + ulong prev; + ulong curr; + do + { + prev = RefCount; + curr = prev - TrackerRefCounter; + } + while (Interlocked.CompareExchange(ref RefCount, curr, prev) != prev); + + // If we observe the destroy sentinel, then this release + // must destroy the wrapper. + if (curr == DestroySentinel) + Destroy(); + + return GetTrackerCount(curr); + } + + public uint Peg() + { + SetFlag(CreateComInterfaceFlagsEx.IsPegged); + return HResults.S_OK; + } + + public uint Unpeg() + { + ResetFlag(CreateComInterfaceFlagsEx.IsPegged); + return HResults.S_OK; + } + + + public unsafe int QueryInterfaceForTracker(in Guid riid, out IntPtr ppvObject) + { + if (IsMarkedToDestroy(RefCount) || Holder is null) + { + ppvObject = IntPtr.Zero; + return COR_E_ACCESSING_CCW; + } + + return QueryInterface(in riid, out ppvObject); + } + + public unsafe int QueryInterface(in Guid riid, out IntPtr ppvObject) + { + ppvObject = AsRuntimeDefined(in riid); + if (ppvObject == IntPtr.Zero) + { + if ((Flags & CreateComInterfaceFlagsEx.LacksICustomQueryInterface) == 0) + { + Debug.Assert(Holder is not null); + if (Holder.WrappedObject is not ICustomQueryInterface customQueryInterface) + { + SetFlag(CreateComInterfaceFlagsEx.LacksICustomQueryInterface); + } + else + { + Guid riidLocal = riid; + switch (customQueryInterface.GetInterface(ref riidLocal, out ppvObject)) + { + case CustomQueryInterfaceResult.Handled: + return HResults.S_OK; + case CustomQueryInterfaceResult.NotHandled: + break; + case CustomQueryInterfaceResult.Failed: + return HResults.COR_E_INVALIDCAST; + } + } + } + + ppvObject = AsUserDefined(in riid); + if (ppvObject == IntPtr.Zero) + return HResults.COR_E_INVALIDCAST; + } + + AddRef(); + return HResults.S_OK; + } + + public IntPtr As(in Guid riid) + { + // Find target interface and return dispatcher or null if not found. + IntPtr typeMaybe = AsRuntimeDefined(in riid); + if (typeMaybe == IntPtr.Zero) + typeMaybe = AsUserDefined(in riid); + + return typeMaybe; + } + + /// true if actually destroyed + public unsafe bool Destroy() + { + Debug.Assert(GetComCount(RefCount) == 0 || HolderHandle == IntPtr.Zero); + + if (HolderHandle == IntPtr.Zero) + { + // We either were previously destroyed or multiple ManagedObjectWrapperHolder + // were created by the ConditionalWeakTable for the same object and we lost the race. + return true; + } + + ulong prev, refCount; + do + { + prev = RefCount; + refCount = prev | DestroySentinel; + } while (Interlocked.CompareExchange(ref RefCount, refCount, prev) != prev); + + if (refCount == DestroySentinel) + { + IntPtr handle = Interlocked.Exchange(ref HolderHandle, IntPtr.Zero); + if (handle != IntPtr.Zero) + { + GCHandle.InternalFree(handle); + } + return true; + } + else + { + return false; + } + } + + private unsafe IntPtr GetDispatchPointerAtIndex(int index) + { + InternalComInterfaceDispatch* dispatch = &Dispatches[index / InternalComInterfaceDispatch.NumEntriesInDispatchTable]; + IntPtr* vtables = (IntPtr*)(void*)&dispatch->Vtables; + return (IntPtr)(&vtables[index % InternalComInterfaceDispatch.NumEntriesInDispatchTable]); + } + + private unsafe IntPtr AsRuntimeDefined(in Guid riid) + { + // The order of interface lookup here is important. + // See CreateManagedObjectWrapper() for the expected order. + int i = UserDefinedCount; + if ((Flags & CreateComInterfaceFlagsEx.CallerDefinedIUnknown) == 0) + { + if (riid == IID_IUnknown) + { + return GetDispatchPointerAtIndex(i); + } + + i++; + } + + if ((Flags & CreateComInterfaceFlagsEx.TrackerSupport) != 0) + { + if (riid == IID_IReferenceTrackerTarget) + { + return GetDispatchPointerAtIndex(i); + } + + i++; + } + + { + if (riid == IID_TaggedImpl) + { + return GetDispatchPointerAtIndex(i); + } + } + + return IntPtr.Zero; + } + + private unsafe IntPtr AsUserDefined(in Guid riid) + { + for (int i = 0; i < UserDefinedCount; ++i) + { + if (UserDefined[i].IID == riid) + { + return GetDispatchPointerAtIndex(i); + } + } + + return IntPtr.Zero; + } + + private void SetFlag(CreateComInterfaceFlagsEx flag) + { + int setMask = (int)flag; + Interlocked.Or(ref Unsafe.As(ref Flags), setMask); + } + + private void ResetFlag(CreateComInterfaceFlagsEx flag) + { + int resetMask = ~(int)flag; + Interlocked.And(ref Unsafe.As(ref Flags), resetMask); + } + + private static uint GetTrackerCount(ulong c) + { + return (uint)((c & TrackerRefCountMask) >> TrackerRefShift); + } + + private static uint GetComCount(ulong c) + { + return (uint)(c & ComRefCountMask); + } + + private static bool IsMarkedToDestroy(ulong c) + { + return (c & DestroySentinel) != 0; + } + } + + internal sealed unsafe partial class ManagedObjectWrapperHolder + { + static ManagedObjectWrapperHolder() + { + RegisterIsRootedCallback(); + } + + private readonly ManagedObjectWrapperReleaser _releaser; + private readonly object _wrappedObject; + + private readonly ManagedObjectWrapper* _wrapper; + + public ManagedObjectWrapperHolder(ManagedObjectWrapper* wrapper, object wrappedObject) + { + _wrapper = wrapper; + _wrappedObject = wrappedObject; + _releaser = new ManagedObjectWrapperReleaser(wrapper); + _wrapper->HolderHandle = AllocateRefCountedHandle(this); + } + + public unsafe IntPtr ComIp => _wrapper->As(in ComWrappers.IID_IUnknown); + + public object WrappedObject => _wrappedObject; + + public uint AddRef() => _wrapper->AddRef(); + + public bool IsActivated => _wrapper->Flags.HasFlag(CreateComInterfaceFlagsEx.IsComActivated); + + internal ManagedObjectWrapper* Wrapper => _wrapper; + } + + internal sealed unsafe class ManagedObjectWrapperReleaser + { + private ManagedObjectWrapper* _wrapper; + + public ManagedObjectWrapperReleaser(ManagedObjectWrapper* wrapper) + { + _wrapper = wrapper; + } + + ~ManagedObjectWrapperReleaser() + { + IntPtr refCountedHandle = _wrapper->HolderHandle; + if (refCountedHandle != IntPtr.Zero && GCHandle.InternalGet(refCountedHandle) != null) + { + // The ManagedObjectWrapperHolder has not been fully collected, so it is still + // potentially reachable via the Conditional Weak Table. + // Keep ourselves alive in case the wrapped object is resurrected. + GC.ReRegisterForFinalize(this); + return; + } + + // Release GC handle created when MOW was built. + if (_wrapper->Destroy()) + { + NativeMemory.AlignedFree(_wrapper); + _wrapper = null; + } + else + { + // There are still outstanding references on the COM side. + // This case should only be hit when an outstanding + // tracker refcount exists from AddRefFromReferenceTracker. + GC.ReRegisterForFinalize(this); + } + } + } + + internal unsafe class NativeObjectWrapper + { + private ComWrappers _comWrappers; + private IntPtr _externalComObject; + private IntPtr _inner; + private GCHandle _proxyHandle; + private GCHandle _proxyHandleTrackingResurrection; + private readonly bool _aggregatedManagedObjectWrapper; + private readonly bool _uniqueInstance; + + static NativeObjectWrapper() + { + // Registering the weak reference support callbacks to enable + // consulting ComWrappers when weak references are created + // for RCWs. + ComAwareWeakReference.InitializeCallbacks(&ComWeakRefToObject, &PossiblyComObject, &ObjectToComWeakRef); + } + + public static NativeObjectWrapper Create( + IntPtr externalComObject, + IntPtr inner, + ComWrappers comWrappers, + object comProxy, + CreateObjectFlags flags, + ref IntPtr referenceTrackerMaybe) + { + if (flags.HasFlag(CreateObjectFlags.TrackerObject)) + { + IntPtr trackerObject = referenceTrackerMaybe; + + // We're taking ownership of this reference tracker object, so reset the reference + referenceTrackerMaybe = IntPtr.Zero; + + // If we already have a reference tracker (that will be the case in aggregation scenarios), then reuse it. + // Otherwise, do the 'QueryInterface' call for it here. This allows us to only ever query for this IID once. + if (trackerObject != IntPtr.Zero || + Marshal.QueryInterface(externalComObject, IID_IReferenceTracker, out trackerObject) == HResults.S_OK) + { + return new ReferenceTrackerNativeObjectWrapper(externalComObject, inner, comWrappers, comProxy, flags, trackerObject); + } + } + + return new NativeObjectWrapper(externalComObject, inner, comWrappers, comProxy, flags); + } + + protected NativeObjectWrapper(IntPtr externalComObject, IntPtr inner, ComWrappers comWrappers, object comProxy, CreateObjectFlags flags) + { + _externalComObject = externalComObject; + _inner = inner; + _comWrappers = comWrappers; + _uniqueInstance = flags.HasFlag(CreateObjectFlags.UniqueInstance); + _proxyHandle = GCHandle.Alloc(comProxy, GCHandleType.Weak); + + // We have a separate handle tracking resurrection as we want to make sure + // we clean up the NativeObjectWrapper only after the RCW has been finalized + // due to it can access the native object in the finalizer. At the same time, + // we want other callers which are using ProxyHandle such as the reference tracker runtime + // to see the object as not alive once it is eligible for finalization. + _proxyHandleTrackingResurrection = GCHandle.Alloc(comProxy, GCHandleType.WeakTrackResurrection); + + // If this is an aggregation scenario and the identity object + // is a managed object wrapper, we need to call Release() to + // indicate this external object isn't rooted. In the event the + // object is passed out to native code an AddRef() must be called + // based on COM convention and will "fix" the count. + _aggregatedManagedObjectWrapper = flags.HasFlag(CreateObjectFlags.Aggregation) && TryGetComInterfaceDispatch(_externalComObject) != null; + if (_aggregatedManagedObjectWrapper) + { + Marshal.Release(externalComObject); + } + } + + internal IntPtr ExternalComObject => _externalComObject; + internal ComWrappers ComWrappers => _comWrappers; + internal GCHandle ProxyHandle => _proxyHandle; + internal bool IsUniqueInstance => _uniqueInstance; + internal bool IsAggregatedWithManagedObjectWrapper => _aggregatedManagedObjectWrapper; + + public virtual void Release() + { + if (!_uniqueInstance && _comWrappers is not null) + { + _comWrappers._rcwCache.Remove(_externalComObject, this); + _comWrappers = null!; + } + + if (_proxyHandle.IsAllocated) + { + _proxyHandle.Free(); + } + + if (_proxyHandleTrackingResurrection.IsAllocated) + { + _proxyHandleTrackingResurrection.Free(); + } + + // If the inner was supplied, we need to release our reference. + if (_inner != IntPtr.Zero) + { + Marshal.Release(_inner); + _inner = IntPtr.Zero; + } + + _externalComObject = IntPtr.Zero; + } + + ~NativeObjectWrapper() + { + if (_proxyHandleTrackingResurrection.IsAllocated && _proxyHandleTrackingResurrection.Target != null) + { + // The RCW object has not been fully collected, so it still + // can make calls on the native object in its finalizer. + // Keep ourselves alive until it is finalized. + GC.ReRegisterForFinalize(this); + return; + } + + Release(); + } + } + + internal sealed class ReferenceTrackerNativeObjectWrapper : NativeObjectWrapper + { + private IntPtr _trackerObject; + internal readonly IntPtr _contextToken; + private int _trackerObjectDisconnected; // Atomic boolean, so using int. + private readonly bool _releaseTrackerObject; + internal readonly GCHandle _nativeObjectWrapperWeakHandle; + + public IntPtr TrackerObject => (_trackerObject == IntPtr.Zero || _trackerObjectDisconnected == 1) ? IntPtr.Zero : _trackerObject; + + public ReferenceTrackerNativeObjectWrapper( + nint externalComObject, + nint inner, + ComWrappers comWrappers, + object comProxy, + CreateObjectFlags flags, + IntPtr trackerObject) + : base(externalComObject, inner, comWrappers, comProxy, flags) + { + Debug.Assert(flags.HasFlag(CreateObjectFlags.TrackerObject)); + Debug.Assert(trackerObject != IntPtr.Zero); + + _trackerObject = trackerObject; + _releaseTrackerObject = true; + + TrackerObjectManager.OnIReferenceTrackerFound(_trackerObject); + TrackerObjectManager.AfterWrapperCreated(_trackerObject); + + if (flags.HasFlag(CreateObjectFlags.Aggregation)) + { + // Aggregation with an IReferenceTracker instance creates an extra AddRef() + // on the outer (e.g. MOW) so we clean up that issue here. + _releaseTrackerObject = false; + IReferenceTracker.ReleaseFromTrackerSource(_trackerObject); // IReferenceTracker + Marshal.Release(_trackerObject); + } + + _contextToken = TrackerObjectManager.GetContextToken(); + _nativeObjectWrapperWeakHandle = GCHandle.Alloc(this, GCHandleType.Weak); + } + + public override void Release() + { + // Remove the entry from the cache that keeps track of the active NativeObjectWrappers. + if (_nativeObjectWrapperWeakHandle.IsAllocated) + { + TrackerObjectManager.s_referenceTrackerNativeObjectWrapperCache.Remove(_nativeObjectWrapperWeakHandle); + _nativeObjectWrapperWeakHandle.Free(); + } + + DisconnectTracker(); + + base.Release(); + } + + public void DisconnectTracker() + { + // Return if already disconnected or the tracker isn't set. + if (_trackerObject == IntPtr.Zero || Interlocked.CompareExchange(ref _trackerObjectDisconnected, 1, 0) != 0) + { + return; + } + + // Always release the tracker source during a disconnect. + // This to account for the implied IUnknown ownership by the runtime. + IReferenceTracker.ReleaseFromTrackerSource(_trackerObject); // IUnknown + + // Disconnect from the tracker. + if (_releaseTrackerObject) + { + IReferenceTracker.ReleaseFromTrackerSource(_trackerObject); // IReferenceTracker + Marshal.Release(_trackerObject); + _trackerObject = IntPtr.Zero; + } + } + } /// - /// Ignore any internal caching and always create a unique instance. + /// Globally registered instance of the ComWrappers class for reference tracker support. /// - UniqueInstance = 2, + private static ComWrappers? s_globalInstanceForTrackerSupport; + + internal static ComWrappers? GlobalInstanceForTrackerSupport => s_globalInstanceForTrackerSupport; /// - /// Defined when COM aggregation is involved (that is an inner instance supplied). + /// Globally registered instance of the ComWrappers class for marshalling. /// - Aggregation = 4, + private static ComWrappers? s_globalInstanceForMarshalling; + + internal static object? GetOrCreateObjectFromWrapper(ComWrappers wrapper, IntPtr externalComObject) + { + if (s_globalInstanceForTrackerSupport != null && s_globalInstanceForTrackerSupport == wrapper) + { + return s_globalInstanceForTrackerSupport.GetOrCreateObjectForComInstance(externalComObject, CreateObjectFlags.TrackerObject); + } + else if (s_globalInstanceForMarshalling != null && s_globalInstanceForMarshalling == wrapper) + { + return ComObjectForInterface(externalComObject); + } + else + { + return null; + } + } /// - /// Check if the supplied instance is actually a wrapper and if so return the underlying - /// managed object rather than creating a new wrapper. + /// Create a COM representation of the supplied object that can be passed to a non-managed environment. /// + /// The managed object to expose outside the .NET runtime. + /// Flags used to configure the generated interface. + /// The generated COM interface that can be passed outside the .NET runtime. /// - /// This matches the built-in RCW semantics for COM interop. + /// If a COM representation was previously created for the specified using + /// this instance, the previously created COM interface will be returned. + /// If not, a new one will be created. /// - Unwrap = 8, - } + public unsafe IntPtr GetOrCreateComInterfaceForObject(object instance, CreateComInterfaceFlags flags) + { + ArgumentNullException.ThrowIfNull(instance); + + ManagedObjectWrapperHolder managedObjectWrapper = _managedObjectWrapperTable.GetOrAdd(instance, static (c, state) => + { + ManagedObjectWrapper* value = state.This!.CreateManagedObjectWrapper(c, state.flags); + return new ManagedObjectWrapperHolder(value, c); + }, new { This = this, flags }); + + managedObjectWrapper.AddRef(); + RegisterManagedObjectWrapperForDiagnostics(instance, managedObjectWrapper); + + return managedObjectWrapper.ComIp; + } + + private static void RegisterManagedObjectWrapperForDiagnostics(object instance, ManagedObjectWrapperHolder wrapper) + { + if (!Debugger.IsSupported) + { + // If managed debugging support is disabled, don't add to the second table. + // Only the debugger will ever read it. + return; + } + + // Record the relationship between the managed object and this wrapper. + // This will ensure that we keep all ManagedObjectWrapperHolders alive as long as the managed object is alive, + // even if the ComWrappers instance dies. + // We must do this as the runtime's recording of the relationship between the managed object and the wrapper + // lives as long as the object is alive, and we record the raw pointer to the wrapper. + List allWrappersForThisInstance = s_allManagedObjectWrapperTable.GetOrCreateValue(instance); + lock (allWrappersForThisInstance) + { + allWrappersForThisInstance.Add(wrapper); + } + } + + private static nuint AlignUp(nuint value, nuint alignment) + { + nuint alignMask = alignment - 1; + return (nuint)((value + alignMask) & ~alignMask); + } + + private unsafe ManagedObjectWrapper* CreateManagedObjectWrapper(object instance, CreateComInterfaceFlags flags) + { + ComInterfaceEntry* userDefined = ComputeVtables(instance, flags, out int userDefinedCount); + if ((userDefined == null && userDefinedCount != 0) || userDefinedCount < 0) + { + throw new ArgumentException(); + } + + // Maximum number of runtime supplied vtables. + Span runtimeDefinedVtable = stackalloc IntPtr[3]; + int runtimeDefinedCount = 0; + + // Check if the caller will provide the IUnknown table. + if ((flags & CreateComInterfaceFlags.CallerDefinedIUnknown) == CreateComInterfaceFlags.None) + { + runtimeDefinedVtable[runtimeDefinedCount++] = DefaultIUnknownVftblPtr; + } + + if ((flags & CreateComInterfaceFlags.TrackerSupport) != 0) + { + runtimeDefinedVtable[runtimeDefinedCount++] = DefaultIReferenceTrackerTargetVftblPtr; + } + + { + runtimeDefinedVtable[runtimeDefinedCount++] = TaggedImplVftblPtr; + } + + // Compute size for ManagedObjectWrapper instance. + int totalDefinedCount = runtimeDefinedCount + userDefinedCount; + + int numSections = totalDefinedCount / InternalComInterfaceDispatch.NumEntriesInDispatchTable; + if (totalDefinedCount % InternalComInterfaceDispatch.NumEntriesInDispatchTable != 0) + { + // Account for a trailing partial section to fit all of the defined interfaces. + numSections++; + } + + nuint headerSize = AlignUp((nuint)sizeof(ManagedObjectWrapper), InternalComInterfaceDispatch.DispatchAlignment); + + // Instead of allocating a full section even when we have a trailing one, we'll allocate only + // as much space as we need to store all of our dispatch tables. + nuint dispatchSectionSize = (nuint)totalDefinedCount * (nuint)sizeof(void*) + (nuint)numSections * (nuint)sizeof(void*); + + // Allocate memory for the ManagedObjectWrapper with the correct alignment for our dispatch tables. + IntPtr wrapperMem = (IntPtr)NativeMemory.AlignedAlloc( + headerSize + dispatchSectionSize, + InternalComInterfaceDispatch.DispatchAlignment); + + // Dispatches follow the ManagedObjectWrapper. + InternalComInterfaceDispatch* pDispatches = (InternalComInterfaceDispatch*)((nuint)wrapperMem + headerSize); + Span dispatches = new Span(pDispatches, numSections); + for (int i = 0; i < dispatches.Length; i++) + { + dispatches[i]._thisPtr = (ManagedObjectWrapper*)wrapperMem; + Span dispatchVtables = dispatches[i].Vtables; + for (int j = 0; j < dispatchVtables.Length; j++) + { + int index = i * dispatchVtables.Length + j; + if (index >= totalDefinedCount) + { + break; + } + dispatchVtables[j] = (index < userDefinedCount) ? userDefined[index].Vtable : runtimeDefinedVtable[index - userDefinedCount]; + } + } + + ManagedObjectWrapper* mow = (ManagedObjectWrapper*)wrapperMem; + mow->HolderHandle = IntPtr.Zero; + mow->RefCount = 0; + mow->UserDefinedCount = userDefinedCount; + mow->UserDefined = userDefined; + mow->Flags = (CreateComInterfaceFlagsEx)flags; + mow->Dispatches = pDispatches; + return mow; + } - /// - /// Class for managing wrappers of COM IUnknown types. - /// - [UnsupportedOSPlatform("android")] - [UnsupportedOSPlatform("browser")] - [UnsupportedOSPlatform("ios")] - [UnsupportedOSPlatform("tvos")] - [CLSCompliant(false)] - public abstract partial class ComWrappers - { /// - /// Interface type and pointer to targeted VTable. + /// Get the currently registered managed object or creates a new managed object and registers it. /// - public struct ComInterfaceEntry + /// Object to import for usage into the .NET runtime. + /// Flags used to describe the external object. + /// Returns a managed object associated with the supplied external COM object. + /// + /// If a managed object was previously created for the specified + /// using this instance, the previously created object will be returned. + /// If not, a new one will be created. + /// + public object GetOrCreateObjectForComInstance(IntPtr externalComObject, CreateObjectFlags flags) { - /// - /// Interface IID. - /// - public Guid IID; + object? obj; + if (!TryGetOrCreateObjectForComInstanceInternal(externalComObject, IntPtr.Zero, flags, null, out obj)) + throw new ArgumentNullException(nameof(externalComObject)); + + return obj; + } + + /// + /// Get the currently registered managed object or uses the supplied managed object and registers it. + /// + /// Object to import for usage into the .NET runtime. + /// Flags used to describe the external object. + /// The to be used as the wrapper for the external object + /// Returns a managed object associated with the supplied external COM object. + /// + /// If the instance already has an associated external object a will be thrown. + /// + public object GetOrRegisterObjectForComInstance(IntPtr externalComObject, CreateObjectFlags flags, object wrapper) + { + return GetOrRegisterObjectForComInstance(externalComObject, flags, wrapper, IntPtr.Zero); + } + + /// + /// Get the currently registered managed object or uses the supplied managed object and registers it. + /// + /// Object to import for usage into the .NET runtime. + /// Flags used to describe the external object. + /// The to be used as the wrapper for the external object + /// Inner for COM aggregation scenarios + /// Returns a managed object associated with the supplied external COM object. + /// + /// This method override is for registering an aggregated COM instance with its associated inner. The inner + /// will be released when the associated wrapper is eventually freed. Note that it will be released on a thread + /// in an unknown apartment state. If the supplied inner is not known to be a free-threaded instance then + /// it is advised to not supply the inner. + /// + /// If the instance already has an associated external object a will be thrown. + /// + public object GetOrRegisterObjectForComInstance(IntPtr externalComObject, CreateObjectFlags flags, object wrapper, IntPtr inner) + { + ArgumentNullException.ThrowIfNull(wrapper); + + object? obj; + if (!TryGetOrCreateObjectForComInstanceInternal(externalComObject, inner, flags, wrapper, out obj)) + throw new ArgumentNullException(nameof(externalComObject)); + + return obj; + } + + private static unsafe ComInterfaceDispatch* TryGetComInterfaceDispatch(IntPtr comObject) + { + // If the first Vtable entry is part of a ManagedObjectWrapper impl, + // we know how to interpret the IUnknown. + IntPtr knownQI = ((IntPtr*)((IntPtr*)comObject)[0])[0]; + if (knownQI != ((IntPtr*)DefaultIUnknownVftblPtr)[0] + || knownQI != ((IntPtr*)DefaultIReferenceTrackerTargetVftblPtr)[0]) + { + // It is possible the user has defined their own IUnknown impl so + // we fallback to the tagged interface approach to be sure. + if (0 != Marshal.QueryInterface(comObject, IID_TaggedImpl, out nint implMaybe)) + { + return null; + } + + IntPtr currentVersion = GetTaggedImplCurrentVersion(); + int hr = ((delegate* unmanaged)(*(*(void***)implMaybe + 3 /* ITaggedImpl.IsCurrentVersion slot */)))(implMaybe, currentVersion); + Marshal.Release(implMaybe); + if (hr != 0) + { + return null; + } + } + + return (ComInterfaceDispatch*)comObject; + } + + private static void DetermineIdentityAndInner( + IntPtr externalComObject, + IntPtr innerMaybe, + CreateObjectFlags flags, + out IntPtr identity, + out IntPtr inner, + out IntPtr referenceTrackerMaybe) + { + inner = innerMaybe; + + IntPtr checkForIdentity = externalComObject; + + // Check if the flags indicate we are creating + // an object for an external IReferenceTracker instance + // that we are aggregating with. + bool refTrackerInnerScenario = flags.HasFlag(CreateObjectFlags.TrackerObject) + && flags.HasFlag(CreateObjectFlags.Aggregation); + if (refTrackerInnerScenario && + Marshal.QueryInterface(externalComObject, IID_IReferenceTracker, out IntPtr referenceTrackerPtr) == HResults.S_OK) + { + // We are checking the supplied external value + // for IReferenceTracker since in .NET 5 API usage scenarios + // this could actually be the inner and we want the true identity + // not the inner . This is a trick since the only way + // to get identity from an inner is through a non-IUnknown + // interface QI. Once we have the IReferenceTracker + // instance we can be sure the QI for IUnknown will really + // be the true identity. This allows us to keep the reference tracker + // reference alive, so we can reuse it later. + checkForIdentity = referenceTrackerPtr; + referenceTrackerMaybe = referenceTrackerPtr; + Marshal.ThrowExceptionForHR(Marshal.QueryInterface(checkForIdentity, IID_IUnknown, out identity)); + } + else + { + referenceTrackerMaybe = IntPtr.Zero; + Marshal.ThrowExceptionForHR(Marshal.QueryInterface(externalComObject, IID_IUnknown, out identity)); + } + + // Set the inner if scenario dictates an update. + if (innerMaybe == IntPtr.Zero && // User didn't supply inner - .NET 5 API scenario sanity check. + checkForIdentity != externalComObject && // Target of check was changed - .NET 5 API scenario sanity check. + externalComObject != identity && // The supplied object doesn't match the computed identity. + refTrackerInnerScenario) // The appropriate flags were set. + { + inner = externalComObject; + } + } + + /// + /// Get the currently registered managed object or creates a new managed object and registers it. + /// + /// Object to import for usage into the .NET runtime. + /// The inner instance if aggregation is involved + /// Flags used to describe the external object. + /// The to be used as the wrapper for the external object. + /// The managed object associated with the supplied external COM object or null if it could not be created. + /// Returns true if a managed object could be retrieved/created, false otherwise + private unsafe bool TryGetOrCreateObjectForComInstanceInternal( + IntPtr externalComObject, + IntPtr innerMaybe, + CreateObjectFlags flags, + object? wrapperMaybe, + [NotNullWhen(true)] out object? retValue) + { + if (externalComObject == IntPtr.Zero) + throw new ArgumentNullException(nameof(externalComObject)); + + if (innerMaybe != IntPtr.Zero && !flags.HasFlag(CreateObjectFlags.Aggregation)) + throw new InvalidOperationException(SR.InvalidOperation_SuppliedInnerMustBeMarkedAggregation); + + DetermineIdentityAndInner( + externalComObject, + innerMaybe, + flags, + out IntPtr identity, + out IntPtr inner, + out IntPtr referenceTrackerMaybe); + + try + { + // If the user has requested a unique instance, + // we will immediately create the object, register it, + // and return. + if (flags.HasFlag(CreateObjectFlags.UniqueInstance)) + { + retValue = CreateAndRegisterObjectForComInstance(identity, inner, flags, ref referenceTrackerMaybe); + return retValue is not null; + } + + // If we have a live cached wrapper currently, + // return that. + if (_rcwCache.FindProxyForComInstance(identity) is object liveCachedWrapper) + { + retValue = liveCachedWrapper; + return true; + } + + // If the user tried to provide a pre-created managed wrapper, try to register + // that object as the wrapper. + if (wrapperMaybe is not null) + { + retValue = RegisterObjectForComInstance(identity, inner, wrapperMaybe, flags, ref referenceTrackerMaybe); + return retValue is not null; + } + + // Check if the provided COM instance is actually a managed object wrapper from this + // ComWrappers instance, and use it if it is. + if (flags.HasFlag(CreateObjectFlags.Unwrap)) + { + ComInterfaceDispatch* comInterfaceDispatch = TryGetComInterfaceDispatch(identity); + if (comInterfaceDispatch != null) + { + // If we found a managed object wrapper in this ComWrappers instance + // and it has the same identity pointer as the one we're creating a NativeObjectWrapper for, + // unwrap it. We don't AddRef the wrapper as we don't take a reference to it. + // + // A managed object can have multiple managed object wrappers, with a max of one per context. + // Let's say we have a managed object A and ComWrappers instances C1 and C2. Let B1 and B2 be the + // managed object wrappers for A created with C1 and C2 respectively. + // If we are asked to create an EOC for B1 with the unwrap flag on the C2 ComWrappers instance, + // we will create a new wrapper. In this scenario, we'll only unwrap B2. + object unwrapped = ComInterfaceDispatch.GetInstance(comInterfaceDispatch); + if (_managedObjectWrapperTable.TryGetValue(unwrapped, out ManagedObjectWrapperHolder? unwrappedWrapperInThisContext)) + { + // The unwrapped object has a CCW in this context. Compare with identity + // so we can see if it's the CCW for the unwrapped object in this context. + // Don't unwrap Activated wrappers, as we shouldn't peer through COM Activation. + if (unwrappedWrapperInThisContext.ComIp == identity + && !unwrappedWrapperInThisContext.IsActivated) + { + retValue = unwrapped; + return true; + } + } + } + } + + // If the user didn't provide a wrapper and couldn't unwrap a managed object wrapper, + // create a new wrapper. + retValue = CreateAndRegisterObjectForComInstance(identity, inner, flags, ref referenceTrackerMaybe); + return retValue is not null; + } + finally + { + // Releasing a native object can never throw (it's a native call, so exceptions can't + // go through the ABI, it'd just crash the whole process). So we can use a single + // 'finally' block to release both native pointers we're holding in this scope. + Marshal.Release(identity); + + if (referenceTrackerMaybe != IntPtr.Zero) + { + Marshal.Release(referenceTrackerMaybe); + } + } + } + + private object? CreateAndRegisterObjectForComInstance( + IntPtr identity, + IntPtr inner, + CreateObjectFlags flags, + ref IntPtr referenceTrackerMaybe) + { + object? retValue = CreateObject(identity, flags); + if (retValue is null) + { + // If ComWrappers instance cannot create wrapper, we can do nothing here. + return null; + } + + return RegisterObjectForComInstance(identity, inner, retValue, flags, ref referenceTrackerMaybe); + } + + private object RegisterObjectForComInstance( + IntPtr identity, + IntPtr inner, + object comProxy, + CreateObjectFlags flags, + ref IntPtr referenceTrackerMaybe) + { + NativeObjectWrapper nativeObjectWrapper = NativeObjectWrapper.Create( + identity, + inner, + this, + comProxy, + flags, + ref referenceTrackerMaybe); + + object actualProxy = comProxy; + NativeObjectWrapper actualWrapper = nativeObjectWrapper; + if (!nativeObjectWrapper.IsUniqueInstance) + { + // Add our entry to the cache here, using an already existing entry if someone else beat us to it. + (actualWrapper, actualProxy) = _rcwCache.GetOrAddProxyForComInstance(identity, nativeObjectWrapper, comProxy); + if (actualWrapper != nativeObjectWrapper) + { + // We raced with another thread to map identity to nativeObjectWrapper + // and lost the race. We will use the other thread's nativeObjectWrapper, so we can release ours. + nativeObjectWrapper.Release(); + } + } + + // At this point, actualProxy is the RCW object for the identity + // and actualWrapper is the NativeObjectWrapper that is in the RCW cache (if not unique) that associates the identity with actualProxy. + // Register the NativeObjectWrapper to handle lifetime tracking of the references to the COM object. + RegisterWrapperForObject(actualWrapper, actualProxy); + + return actualProxy; + } + + private void RegisterWrapperForObject(NativeObjectWrapper wrapper, object comProxy) + { + // When we call into RegisterWrapperForObject, there is only one valid non-"unique instance" wrapper for a given + // COM instance, which is already registered in the RCW cache. + // If we find a wrapper in the table that is a different NativeObjectWrapper instance + // then it must be for a different COM instance. + // It's possible that we could race here with another thread that is trying to register the same comProxy + // for the same COM instance, but in that case we'll be passed the same NativeObjectWrapper instance + // for both threads. In that case, it doesn't matter which thread adds the entry to the NativeObjectWrapper table + // as the entry is always the same pair. + Debug.Assert(wrapper.ProxyHandle.Target == comProxy); + Debug.Assert(wrapper.IsUniqueInstance || _rcwCache.FindProxyForComInstance(wrapper.ExternalComObject) == comProxy); + + // Add the input wrapper bound to the COM proxy, if there isn't one already. If another thread raced + // against this one and this lost, we'd get the wrapper added from that thread instead. + NativeObjectWrapper registeredWrapper = s_nativeObjectWrapperTable.GetOrAdd(comProxy, wrapper); + + // We lost the race, so we cannot register the incoming wrapper with the target object + if (registeredWrapper != wrapper) + { + Debug.Assert(registeredWrapper.ExternalComObject != wrapper.ExternalComObject); + wrapper.Release(); + throw new NotSupportedException(); + } + + // Always register our wrapper to the reference tracker handle cache here. + // We may not be the thread that registered the handle, but we need to ensure that the wrapper + // is registered before we return to user code. Otherwise the wrapper won't be walked by the + // TrackerObjectManager and we could end up missing a section of the object graph. + // This cache deduplicates, so it is okay that the wrapper will be registered multiple times. + AddWrapperToReferenceTrackerHandleCache(registeredWrapper); + } + + private static void AddWrapperToReferenceTrackerHandleCache(NativeObjectWrapper wrapper) + { + if (wrapper is ReferenceTrackerNativeObjectWrapper referenceTrackerNativeObjectWrapper) + { + TrackerObjectManager.s_referenceTrackerNativeObjectWrapperCache.Add(referenceTrackerNativeObjectWrapper._nativeObjectWrapperWeakHandle); + } + } + + private sealed class RcwCache + { + private readonly Lock _lock = new Lock(useTrivialWaits: true); + private readonly Dictionary _cache = []; /// - /// Memory must have the same lifetime as the memory returned from the call to . + /// Gets the current RCW proxy object for if it exists in the cache or inserts a new entry with . /// - public IntPtr Vtable; + /// The com instance we want to get or record an RCW for. + /// The for . + /// The proxy object that is associated with . + /// The proxy object currently in the cache for or the proxy object owned by if no entry exists and the corresponding native wrapper. + public (NativeObjectWrapper actualWrapper, object actualProxy) GetOrAddProxyForComInstance(IntPtr comPointer, NativeObjectWrapper wrapper, object comProxy) + { + lock (_lock) + { + Debug.Assert(wrapper.ProxyHandle.Target == comProxy); + ref GCHandle rcwEntry = ref CollectionsMarshal.GetValueRefOrAddDefault(_cache, comPointer, out bool exists); + if (!exists) + { + // Someone else didn't beat us to adding the entry to the cache. + // Add our entry here. + rcwEntry = GCHandle.Alloc(wrapper, GCHandleType.Weak); + } + else if (rcwEntry.Target is not (NativeObjectWrapper cachedWrapper)) + { + Debug.Assert(rcwEntry.IsAllocated); + // The target was collected, so we need to update the cache entry. + rcwEntry.Target = wrapper; + } + else + { + object? existingProxy = cachedWrapper.ProxyHandle.Target; + // The target NativeObjectWrapper was not collected, but we need to make sure + // that the proxy object is still alive. + if (existingProxy is not null) + { + // The existing proxy object is still alive, we will use that. + return (cachedWrapper, existingProxy); + } + + // The proxy object was collected, so we need to update the cache entry. + rcwEntry.Target = wrapper; + } + + // We either added an entry to the cache or updated an existing entry that was dead. + // Return our target object. + return (wrapper, comProxy); + } + } + + public object? FindProxyForComInstance(IntPtr comPointer) + { + lock (_lock) + { + if (_cache.TryGetValue(comPointer, out GCHandle existingHandle)) + { + if (existingHandle.Target is NativeObjectWrapper { ProxyHandle.Target: object cachedProxy }) + { + // The target exists and is still alive. Return it. + return cachedProxy; + } + + // The target was collected, so we need to remove the entry from the cache. + _cache.Remove(comPointer); + existingHandle.Free(); + } + + return null; + } + } + + public void Remove(IntPtr comPointer, NativeObjectWrapper wrapper) + { + lock (_lock) + { + // TryGetOrCreateObjectForComInstanceInternal may have put a new entry into the cache + // in the time between the GC cleared the contents of the GC handle but before the + // NativeObjectWrapper finalizer ran. + // Only remove the entry if the target of the GC handle is the NativeObjectWrapper + // or is null (indicating that the corresponding NativeObjectWrapper has been scheduled for finalization). + if (_cache.TryGetValue(comPointer, out GCHandle cachedRef) + && (wrapper == cachedRef.Target + || cachedRef.Target is null)) + { + _cache.Remove(comPointer); + cachedRef.Free(); + } + } + } } + /// - /// ABI for function dispatch of a COM interface. + /// Register a instance to be used as the global instance for reference tracker support. /// - public partial struct ComInterfaceDispatch + /// Instance to register + /// + /// This function can only be called a single time. Subsequent calls to this function will result + /// in a being thrown. + /// + /// Scenarios where this global instance may be used are: + /// * Object tracking via the and flags. + /// + public static void RegisterForTrackerSupport(ComWrappers instance) { - public IntPtr Vtable; + ArgumentNullException.ThrowIfNull(instance); + + if (null != Interlocked.CompareExchange(ref s_globalInstanceForTrackerSupport, instance, null)) + { + throw new InvalidOperationException(SR.InvalidOperation_ResetGlobalComWrappersInstance); + } + } + + /// + /// Register a instance to be used as the global instance for marshalling in the runtime. + /// + /// Instance to register + /// + /// This function can only be called a single time. Subsequent calls to this function will result + /// in a being thrown. + /// + /// Scenarios where this global instance may be used are: + /// * Usage of COM-related Marshal APIs + /// * P/Invokes with COM-related types + /// * COM activation + /// + [SupportedOSPlatformAttribute("windows")] + public static void RegisterForMarshalling(ComWrappers instance) + { + ArgumentNullException.ThrowIfNull(instance); + + if (null != Interlocked.CompareExchange(ref s_globalInstanceForMarshalling, instance, null)) + { + throw new InvalidOperationException(SR.InvalidOperation_ResetGlobalComWrappersInstance); + } } /// @@ -130,6 +1395,364 @@ public partial struct ComInterfaceDispatch /// Called when a request is made for a collection of objects to be released outside of normal object or COM interface lifetime. /// /// Collection of objects to release. - protected abstract void ReleaseObjects(IEnumerable objects); + protected internal abstract void ReleaseObjects(IEnumerable objects); + + internal static IntPtr ComInterfaceForObject(object instance) + { + if (s_globalInstanceForMarshalling == null) + { + throw new NotSupportedException(SR.InvalidOperation_ComInteropRequireComWrapperInstance); + } + + return s_globalInstanceForMarshalling.GetOrCreateComInterfaceForObject(instance, CreateComInterfaceFlags.None); + } + + internal static unsafe IntPtr ComInterfaceForObject(object instance, Guid targetIID) + { + IntPtr unknownPtr = ComInterfaceForObject(instance); + IntPtr comObjectInterface; + ManagedObjectWrapper* wrapper = ComInterfaceDispatch.ToManagedObjectWrapper((ComInterfaceDispatch*)unknownPtr); + int resultCode = wrapper->QueryInterface(in targetIID, out comObjectInterface); + // We no longer need IUnknownPtr, release reference + Marshal.Release(unknownPtr); + if (resultCode != 0) + { + throw new InvalidCastException(); + } + + return comObjectInterface; + } + + internal static object ComObjectForInterface(IntPtr externalComObject) + { + if (s_globalInstanceForMarshalling == null) + { + throw new NotSupportedException(SR.InvalidOperation_ComInteropRequireComWrapperInstance); + } + + // TrackerObject support and unwrapping matches the built-in semantics that the global marshalling scenario mimics. + return s_globalInstanceForMarshalling.GetOrCreateObjectForComInstance(externalComObject, CreateObjectFlags.TrackerObject | CreateObjectFlags.Unwrap); + } + + internal static IntPtr GetOrCreateTrackerTarget(IntPtr externalComObject) + { + if (s_globalInstanceForTrackerSupport == null) + { + throw new NotSupportedException(SR.InvalidOperation_ComInteropRequireComWrapperTrackerInstance); + } + + object obj = s_globalInstanceForTrackerSupport.GetOrCreateObjectForComInstance(externalComObject, CreateObjectFlags.TrackerObject); + return s_globalInstanceForTrackerSupport.GetOrCreateComInterfaceForObject(obj, CreateComInterfaceFlags.TrackerSupport); + } + + // Lifetime maintained by stack - we don't care about ref counts + [UnmanagedCallersOnly] + internal static unsafe uint Untracked_AddRef(IntPtr _) + { + return 1; + } + + [UnmanagedCallersOnly] + internal static unsafe uint Untracked_Release(IntPtr _) + { + return 1; + } + + // Wrapper for IWeakReference + private static unsafe class IWeakReference + { + public static int Resolve(IntPtr pThis, Guid guid, out IntPtr inspectable) + { + fixed (IntPtr* inspectablePtr = &inspectable) + return (*(delegate* unmanaged**)pThis)[3](pThis, &guid, inspectablePtr); + } + } + + // Wrapper for IWeakReferenceSource + private static unsafe class IWeakReferenceSource + { + public static int GetWeakReference(IntPtr pThis, out IntPtr weakReference) + { + fixed (IntPtr* weakReferencePtr = &weakReference) + return (*(delegate* unmanaged**)pThis)[3](pThis, weakReferencePtr); + } + } + + private static object? ComWeakRefToObject(IntPtr pComWeakRef, object? context) + { + if (context is not ComWrappers comWrappers) + { + return null; + } + + // Using the IWeakReference*, get ahold of the target native COM object's IInspectable*. If this resolve fails or + // returns null, then we assume that the underlying native COM object is no longer alive, and thus we cannot create a + // new RCW for it. + if (IWeakReference.Resolve(pComWeakRef, IID_IInspectable, out IntPtr targetPtr) == HResults.S_OK && + targetPtr != IntPtr.Zero) + { + using ComHolder target = new ComHolder(targetPtr); + if (Marshal.QueryInterface(target.Ptr, IID_IUnknown, out IntPtr targetIdentityPtr) == HResults.S_OK) + { + using ComHolder targetIdentity = new ComHolder(targetIdentityPtr); + return GetOrCreateObjectFromWrapper(comWrappers, targetIdentity.Ptr); + } + } + + return null; + } + + private static unsafe bool PossiblyComObject(object target) + { + // If the RCW is an aggregated RCW, then the managed object cannot be recreated from the IUnknown + // as the outer IUnknown wraps the managed object. In this case, don't create a weak reference backed + // by a COM weak reference. + return s_nativeObjectWrapperTable.TryGetValue(target, out NativeObjectWrapper? wrapper) && !wrapper.IsAggregatedWithManagedObjectWrapper; + } + + private static unsafe IntPtr ObjectToComWeakRef(object target, out object? context) + { + context = null; + if (TryGetComInstanceForIID( + target, + IID_IWeakReferenceSource, + out IntPtr weakReferenceSourcePtr, + out ComWrappers? wrapper)) + { + context = wrapper; + using ComHolder weakReferenceSource = new ComHolder(weakReferenceSourcePtr); + if (IWeakReferenceSource.GetWeakReference(weakReferenceSource.Ptr, out IntPtr weakReference) == HResults.S_OK) + { + return weakReference; + } + } + + return IntPtr.Zero; + } + } + + // This is a GCHandle HashSet implementation based on LowLevelDictionary. + // It uses no locking for readers. While for writers (add / remove), + // it handles the locking itself. + // This implementation specifically makes sure that any readers of this + // collection during GC aren't impacted by other threads being + // frozen while in the middle of an write. It makes no guarantees on + // whether you will observe the element being added / removed, but does + // make sure the collection is in a good state and doesn't run into issues + // while iterating. + internal sealed class GCHandleSet : IEnumerable + { + private const int DefaultSize = 7; + + private Entry?[] _buckets = new Entry[DefaultSize]; + private int _numEntries; + private readonly Lock _lock = new Lock(useTrivialWaits: true); + + public Lock ModificationLock => _lock; + + public void Add(GCHandle handle) + { + using (_lock.EnterScope()) + { + int bucket = GetBucket(handle, _buckets.Length); + Entry? prev = null; + Entry? entry = _buckets[bucket]; + while (entry != null) + { + // Handle already exists, nothing to add. + if (handle.Equals(entry._value)) + { + return; + } + + prev = entry; + entry = entry._next; + } + + Entry newEntry = new Entry() + { + _value = handle + }; + + if (prev == null) + { + _buckets[bucket] = newEntry; + } + else + { + prev._next = newEntry; + } + + // _numEntries is only maintained for the purposes of deciding whether to + // expand the bucket and is not used during iteration to handle the + // scenario where element is in bucket but _numEntries hasn't been incremented + // yet. + _numEntries++; + if (_numEntries > (_buckets.Length * 2)) + { + ExpandBuckets(); + } + } + } + + private void ExpandBuckets() + { + int newNumBuckets = _buckets.Length * 2 + 1; + Entry?[] newBuckets = new Entry[newNumBuckets]; + for (int i = 0; i < _buckets.Length; i++) + { + Entry? entry = _buckets[i]; + while (entry != null) + { + Entry? nextEntry = entry._next; + + int bucket = GetBucket(entry._value, newNumBuckets); + + // We are allocating new entries for the bucket to ensure that + // if there is an enumeration already in progress, we don't + // modify what it observes by changing next in existing instances. + Entry newEntry = new Entry() + { + _value = entry._value, + _next = newBuckets[bucket], + }; + newBuckets[bucket] = newEntry; + + entry = nextEntry; + } + } + _buckets = newBuckets; + } + + public void Remove(GCHandle handle) + { + using (_lock.EnterScope()) + { + int bucket = GetBucket(handle, _buckets.Length); + Entry? prev = null; + Entry? entry = _buckets[bucket]; + while (entry != null) + { + if (handle.Equals(entry._value)) + { + if (prev == null) + { + _buckets[bucket] = entry._next; + } + else + { + prev._next = entry._next; + } + _numEntries--; + return; + } + + prev = entry; + entry = entry._next; + } + } + } + + private static int GetBucket(GCHandle handle, int numBuckets) + { + int h = handle.GetHashCode(); + return (int)((uint)h % (uint)numBuckets); + } + + public Enumerator GetEnumerator() => new Enumerator(this); + + IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); + + IEnumerator IEnumerable.GetEnumerator() => ((IEnumerable)this).GetEnumerator(); + + private sealed class Entry + { + public Entry? _next; + public GCHandle _value; + } + + public struct Enumerator : IEnumerator + { + private readonly Entry?[] _buckets; + private Entry? _currentEntry; + private int _currentIdx; + + public Enumerator(GCHandleSet set) + { + // We hold onto the buckets of the set rather than the set itself + // so that if it is ever expanded, we are not impacted by that during + // enumeration. + _buckets = set._buckets; + Reset(); + } + + public GCHandle Current + { + get + { + if (_currentEntry == null) + { + throw new InvalidOperationException("InvalidOperation_EnumOpCantHappen"); + } + + return _currentEntry._value; + } + } + + object IEnumerator.Current => Current; + + public void Dispose() + { + } + + public bool MoveNext() + { + if (_currentEntry != null) + { + _currentEntry = _currentEntry._next; + } + + if (_currentEntry == null) + { + // Certain buckets might be empty, so loop until we find + // one with an entry. + while (++_currentIdx != _buckets.Length) + { + _currentEntry = _buckets[_currentIdx]; + if (_currentEntry != null) + { + return true; + } + } + + return false; + } + + return true; + } + + public void Reset() + { + _currentIdx = -1; + _currentEntry = null; + } + } + } + + internal readonly struct ComHolder : IDisposable + { + private readonly IntPtr _ptr; + + internal readonly IntPtr Ptr => _ptr; + + public ComHolder(IntPtr ptr) + { + _ptr = ptr; + } + + public readonly void Dispose() + { + Marshal.Release(_ptr); + } } } diff --git a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/CreateComInterfaceFlags.cs b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/CreateComInterfaceFlags.cs new file mode 100644 index 00000000000..8d9847b8dfd --- /dev/null +++ b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/CreateComInterfaceFlags.cs @@ -0,0 +1,32 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace System.Runtime.InteropServices +{ + /// + /// Enumeration of flags for . + /// + [Flags] + public enum CreateComInterfaceFlags + { + None = 0, + + /// + /// The caller will provide an IUnknown Vtable. + /// + /// + /// This is useful in scenarios when the caller has no need to rely on an IUnknown instance + /// that is used when running managed code is not possible (i.e. during a GC). In traditional + /// COM scenarios this is common, but scenarios involving Reference Tracker hosting + /// calling of the IUnknown API during a GC is possible. + /// + CallerDefinedIUnknown = 1, + + /// + /// Flag used to indicate the COM interface should implement IReferenceTrackerTarget. + /// When this flag is passed, the resulting COM interface will have an internal implementation of IUnknown + /// and as such none should be supplied by the caller. + /// + TrackerSupport = 2, + } +} diff --git a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/CreateObjectFlags.cs b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/CreateObjectFlags.cs new file mode 100644 index 00000000000..337e955a57e --- /dev/null +++ b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/CreateObjectFlags.cs @@ -0,0 +1,42 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Collections; +using System.Runtime.Versioning; + +namespace System.Runtime.InteropServices +{ + + /// + /// Enumeration of flags for . + /// + [Flags] + public enum CreateObjectFlags + { + None = 0, + + /// + /// Indicate if the supplied external COM object implements the IReferenceTracker. + /// + TrackerObject = 1, + + /// + /// Ignore any internal caching and always create a unique instance. + /// + UniqueInstance = 2, + + /// + /// Defined when COM aggregation is involved (that is an inner instance supplied). + /// + Aggregation = 4, + + /// + /// Check if the supplied instance is actually a wrapper and if so return the underlying + /// managed object rather than creating a new wrapper. + /// + /// + /// This matches the built-in RCW semantics for COM interop. + /// + Unwrap = 8, + } +} diff --git a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/IReferenceTracker.cs b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/IReferenceTracker.cs new file mode 100644 index 00000000000..9d56d694576 --- /dev/null +++ b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/IReferenceTracker.cs @@ -0,0 +1,47 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +namespace System.Runtime.InteropServices +{ + // Wrapper for IReferenceTracker + internal static unsafe class IReferenceTracker + { + public static void ConnectFromTrackerSource(IntPtr pThis) + { + Marshal.ThrowExceptionForHR((*(delegate* unmanaged**)pThis)[3](pThis)); + } + + // Used during GC callback + public static int DisconnectFromTrackerSource(IntPtr pThis) + { + return (*(delegate* unmanaged**)pThis)[4](pThis); + } + + // Used during GC callback + public static int FindTrackerTargets(IntPtr pThis, IntPtr findReferenceTargetsCallback) + { + return (*(delegate* unmanaged**)pThis)[5](pThis, findReferenceTargetsCallback); + } + + public static void GetReferenceTrackerManager(IntPtr pThis, out IntPtr referenceTrackerManager) + { + fixed (IntPtr* ptr = &referenceTrackerManager) + Marshal.ThrowExceptionForHR((*(delegate* unmanaged**)pThis)[6](pThis, ptr)); + } + + public static void AddRefFromTrackerSource(IntPtr pThis) + { + Marshal.ThrowExceptionForHR((*(delegate* unmanaged**)pThis)[7](pThis)); + } + + public static void ReleaseFromTrackerSource(IntPtr pThis) + { + Marshal.ThrowExceptionForHR((*(delegate* unmanaged**)pThis)[8](pThis)); + } + + public static void PegFromTrackerSource(IntPtr pThis) + { + Marshal.ThrowExceptionForHR((*(delegate* unmanaged**)pThis)[9](pThis)); + } + } +} diff --git a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ReferenceTrackerHost.cs b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ReferenceTrackerHost.cs new file mode 100644 index 00000000000..a715c4e772d --- /dev/null +++ b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/ReferenceTrackerHost.cs @@ -0,0 +1,208 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System; +using System.Diagnostics; +using System.Runtime.CompilerServices; +using System.Threading; + +namespace System.Runtime.InteropServices +{ + internal static class ReferenceTrackerHost + { + [FixedAddressValueType] + private static readonly unsafe IntPtr s_globalHostServices = (IntPtr)Unsafe.AsPointer(in HostServices.Vftbl); + + // Called when an IReferenceTracker instance is found. + public static unsafe void SetReferenceTrackerHost(IntPtr trackerManager) + { + IReferenceTrackerManager.SetReferenceTrackerHost(trackerManager, (IntPtr)Unsafe.AsPointer(in s_globalHostServices)); + } + +#pragma warning disable IDE0060 + [UnmanagedCallersOnly] + internal static unsafe int IReferenceTrackerHost_DisconnectUnusedReferenceSources(IntPtr pThis, uint flags) +#pragma warning restore IDE0060 + { + try + { + // Defined in windows.ui.xaml.hosting.referencetracker.h. + const uint XAML_REFERENCETRACKER_DISCONNECT_SUSPEND = 0x00000001; + + if ((flags & XAML_REFERENCETRACKER_DISCONNECT_SUSPEND) != 0) + { + GC.Collect(2, GCCollectionMode.Optimized, blocking: true, compacting: false, lowMemoryPressure: true); + } + else + { + GC.Collect(); + } + return HResults.S_OK; + } + catch (Exception e) + { + return Marshal.GetHRForException(e); + } + } + +#pragma warning disable IDE0060 + [UnmanagedCallersOnly] + internal static unsafe int IReferenceTrackerHost_ReleaseDisconnectedReferenceSources(IntPtr pThis) +#pragma warning restore IDE0060 + { + // We'd like to call GC.WaitForPendingFinalizers() here, but this could lead to deadlock + // if the finalizer thread is trying to get back to this thread, because we are not pumping + // anymore. Disable this for now. See: https://github.com/dotnet/runtime/issues/109538. + return HResults.S_OK; + } + +#pragma warning disable IDE0060 + [UnmanagedCallersOnly] + internal static unsafe int IReferenceTrackerHost_NotifyEndOfReferenceTrackingOnThread(IntPtr pThis) +#pragma warning restore IDE0060 + { + try + { + TrackerObjectManager.ReleaseExternalObjectsFromCurrentThread(); + return HResults.S_OK; + } + catch (Exception e) + { + return Marshal.GetHRForException(e); + } + } + +#pragma warning disable IDE0060 + [UnmanagedCallersOnly] + internal static unsafe int IReferenceTrackerHost_GetTrackerTarget(IntPtr pThis, IntPtr punk, IntPtr* ppNewReference) +#pragma warning restore IDE0060 + { + if (punk == IntPtr.Zero) + { + return HResults.E_INVALIDARG; + } + + if (Marshal.QueryInterface(punk, ComWrappers.IID_IUnknown, out IntPtr ppv) != HResults.S_OK) + { + return HResults.COR_E_INVALIDCAST; + } + + try + { + using ComHolder identity = new ComHolder(ppv); + using ComHolder trackerTarget = new ComHolder(ComWrappers.GetOrCreateTrackerTarget(identity.Ptr)); + return Marshal.QueryInterface(trackerTarget.Ptr, ComWrappers.IID_IReferenceTrackerTarget, out *ppNewReference); + } + catch (Exception e) + { + return Marshal.GetHRForException(e); + } + } + +#pragma warning disable IDE0060 + [UnmanagedCallersOnly] + internal static unsafe int IReferenceTrackerHost_AddMemoryPressure(IntPtr pThis, long bytesAllocated) +#pragma warning restore IDE0060 + { + try + { + GC.AddMemoryPressure(bytesAllocated); + return HResults.S_OK; + } + catch (Exception e) + { + return Marshal.GetHRForException(e); + } + } + +#pragma warning disable IDE0060 + [UnmanagedCallersOnly] + internal static unsafe int IReferenceTrackerHost_RemoveMemoryPressure(IntPtr pThis, long bytesAllocated) +#pragma warning restore IDE0060 + { + try + { + GC.RemoveMemoryPressure(bytesAllocated); + return HResults.S_OK; + } + catch (Exception e) + { + return Marshal.GetHRForException(e); + } + } + + [UnmanagedCallersOnly] + internal static unsafe int IReferenceTrackerHost_QueryInterface(IntPtr pThis, Guid* guid, IntPtr* ppObject) + { + if (*guid == ComWrappers.IID_IReferenceTrackerHost || *guid == ComWrappers.IID_IUnknown) + { + *ppObject = pThis; + Marshal.AddRef(pThis); + return HResults.S_OK; + } + else + { + return HResults.COR_E_INVALIDCAST; + } + } + + private unsafe struct IReferenceTrackerHostVftbl + { + public delegate* unmanaged QueryInterface; + public delegate* unmanaged AddRef; + public delegate* unmanaged Release; + public delegate* unmanaged DisconnectUnusedReferenceSources; + public delegate* unmanaged ReleaseDisconnectedReferenceSources; + public delegate* unmanaged NotifyEndOfReferenceTrackingOnThread; + public delegate* unmanaged GetTrackerTarget; + public delegate* unmanaged AddMemoryPressure; + public delegate* unmanaged RemoveMemoryPressure; + } + + private static class HostServices + { + [FixedAddressValueType] + public static readonly IReferenceTrackerHostVftbl Vftbl; + + static unsafe HostServices() + { + Vftbl.QueryInterface = &IReferenceTrackerHost_QueryInterface; + Vftbl.AddRef = &ComWrappers.Untracked_AddRef; + Vftbl.Release = &ComWrappers.Untracked_Release; + Vftbl.DisconnectUnusedReferenceSources = &IReferenceTrackerHost_DisconnectUnusedReferenceSources; + Vftbl.ReleaseDisconnectedReferenceSources = &IReferenceTrackerHost_ReleaseDisconnectedReferenceSources; + Vftbl.NotifyEndOfReferenceTrackingOnThread = &IReferenceTrackerHost_NotifyEndOfReferenceTrackingOnThread; + Vftbl.GetTrackerTarget = &IReferenceTrackerHost_GetTrackerTarget; + Vftbl.AddMemoryPressure = &IReferenceTrackerHost_AddMemoryPressure; + Vftbl.RemoveMemoryPressure = &IReferenceTrackerHost_RemoveMemoryPressure; + } + } + } + + // Wrapper for IReferenceTrackerManager + internal static unsafe class IReferenceTrackerManager + { + // Used during GC callback + public static int ReferenceTrackingStarted(IntPtr pThis) + { + return (*(delegate* unmanaged**)pThis)[3](pThis); + } + + // Used during GC callback + public static int FindTrackerTargetsCompleted(IntPtr pThis, bool walkFailed) + { + return (*(delegate* unmanaged**)pThis)[4](pThis, walkFailed); + } + + // Used during GC callback + public static int ReferenceTrackingCompleted(IntPtr pThis) + { + return (*(delegate* unmanaged**)pThis)[5](pThis); + } + + public static void SetReferenceTrackerHost(IntPtr pThis, IntPtr referenceTrackerHost) + { + Marshal.ThrowExceptionForHR((*(delegate* unmanaged**)pThis)[6](pThis, referenceTrackerHost)); + } + } +} diff --git a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/TrackerObjectManager.cs b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/TrackerObjectManager.cs new file mode 100644 index 00000000000..df0053629c9 --- /dev/null +++ b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/TrackerObjectManager.cs @@ -0,0 +1,105 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Runtime.CompilerServices; +using System.Text; +using static System.Runtime.InteropServices.ComWrappers; + +namespace System.Runtime.InteropServices +{ + internal static partial class TrackerObjectManager + { + internal static readonly GCHandleSet s_referenceTrackerNativeObjectWrapperCache = new GCHandleSet(); + + internal static void OnIReferenceTrackerFound(IntPtr referenceTracker) + { + Debug.Assert(referenceTracker != IntPtr.Zero); + if (HasReferenceTrackerManager) + { + return; + } + + IReferenceTracker.GetReferenceTrackerManager(referenceTracker, out IntPtr referenceTrackerManager); + + // Attempt to set the tracker instance. + // If set, the ownership of referenceTrackerManager has been transferred + if (TryRegisterReferenceTrackerManager(referenceTrackerManager)) + { + ReferenceTrackerHost.SetReferenceTrackerHost(referenceTrackerManager); + RegisterGCCallbacks(); + } + else + { + Marshal.Release(referenceTrackerManager); + } + } + + internal static void AfterWrapperCreated(IntPtr referenceTracker) + { + Debug.Assert(referenceTracker != IntPtr.Zero); + + // Notify tracker runtime that we've created a new wrapper for this object. + // To avoid surprises, we should notify them before we fire the first AddRefFromTrackerSource. + IReferenceTracker.ConnectFromTrackerSource(referenceTracker); + + // Send out AddRefFromTrackerSource callbacks to notify tracker runtime we've done AddRef() + // for certain interfaces. We should do this *after* we made a AddRef() because we should never + // be in a state where report refs > actual refs + IReferenceTracker.AddRefFromTrackerSource(referenceTracker); // IUnknown + IReferenceTracker.AddRefFromTrackerSource(referenceTracker); // IReferenceTracker + } + + internal static void ReleaseExternalObjectsFromCurrentThread() + { + if (GlobalInstanceForTrackerSupport == null) + { + throw new NotSupportedException(SR.InvalidOperation_ComInteropRequireComWrapperTrackerInstance); + } + + IntPtr contextToken = GetContextToken(); + + List objects = new List(); + + // Here we aren't part of a GC callback, so other threads can still be running + // who are adding and removing from the collection. This means we can possibly race + // with a handle being removed and freed and we can end up accessing a freed handle. + // To avoid this, we take a lock on modifications to the collection while we gather + // the objects. + using (s_referenceTrackerNativeObjectWrapperCache.ModificationLock.EnterScope()) + { + foreach (GCHandle weakNativeObjectWrapperHandle in s_referenceTrackerNativeObjectWrapperCache) + { + ReferenceTrackerNativeObjectWrapper? nativeObjectWrapper = Unsafe.As(weakNativeObjectWrapperHandle.Target); + if (nativeObjectWrapper != null && + nativeObjectWrapper._contextToken == contextToken) + { + object? target = nativeObjectWrapper.ProxyHandle.Target; + if (target != null) + { + objects.Add(target); + } + + // Separate the wrapper from the tracker runtime prior to + // passing them. + nativeObjectWrapper.DisconnectTracker(); + } + } + } + + GlobalInstanceForTrackerSupport.ReleaseObjects(objects); + } + + internal static IntPtr GetContextToken() + { +#if TARGET_WINDOWS + Interop.Ole32.CoGetContextToken(out IntPtr contextToken); + return contextToken; +#else + return IntPtr.Zero; +#endif + } + } +} diff --git a/src/runtime/src/libraries/System.Text.RegularExpressions/gen/UpgradeToGeneratedRegexCodeFixer.cs b/src/runtime/src/libraries/System.Text.RegularExpressions/gen/UpgradeToGeneratedRegexCodeFixer.cs index 93e3f6f96aa..3f30f7e7ddd 100644 --- a/src/runtime/src/libraries/System.Text.RegularExpressions/gen/UpgradeToGeneratedRegexCodeFixer.cs +++ b/src/runtime/src/libraries/System.Text.RegularExpressions/gen/UpgradeToGeneratedRegexCodeFixer.cs @@ -298,7 +298,8 @@ static RegexOptions GetRegexOptionsFromArgument(ImmutableArray await VerifyCS.VerifyCodeFixAsync(test, expectedFixedCode); } + [Fact] + public async Task CodeFixForConstantPatternExpressionWithQuote() + { + // From https://github.com/dotnet/runtime/issues/104371 + // When constant expression patterns need to be escaped, we generate + // a verbatim string literal. However, we still need to escape quotes. + string expression = """ + "[" + @"\/:<>|" + "\"]" + """; + + string test = $@"using System.Text; +using System.Text.RegularExpressions; + +public class Program +{{ + public static void Main(string[] args) + {{ + var isMatch = [|Regex.IsMatch("""", {expression})|]; + }} +}}"; + + string verbatimPattern = """ + @"[\/:<>|""]" + """; + + string fixedSource = @$"using System.Text; +using System.Text.RegularExpressions; + +public partial class Program +{{ + public static void Main(string[] args) + {{ + var isMatch = MyRegex().IsMatch(""""); + }} + + [GeneratedRegex({verbatimPattern})] + private static partial Regex MyRegex(); +}}"; + + await VerifyCS.VerifyCodeFixAsync(test, fixedSource); + } + [Fact] public async Task RawStringLiteralSyntaxPreservedByFixer() { diff --git a/src/runtime/src/mono/System.Private.CoreLib/src/System/Diagnostics/Debugger.cs b/src/runtime/src/mono/System.Private.CoreLib/src/System/Diagnostics/Debugger.cs index ccd8fb6d75e..ceebcc47dd7 100644 --- a/src/runtime/src/mono/System.Private.CoreLib/src/System/Diagnostics/Debugger.cs +++ b/src/runtime/src/mono/System.Private.CoreLib/src/System/Diagnostics/Debugger.cs @@ -7,8 +7,6 @@ namespace System.Diagnostics { public static partial class Debugger { - public static readonly string? DefaultCategory; - public static bool IsAttached => IsAttached_internal(); [MethodImplAttribute(MethodImplOptions.InternalCall)] diff --git a/src/runtime/src/mono/mono/mini/intrinsics.c b/src/runtime/src/mono/mono/mini/intrinsics.c index 8c4edcb988b..273bf42ee3d 100644 --- a/src/runtime/src/mono/mono/mini/intrinsics.c +++ b/src/runtime/src/mono/mono/mini/intrinsics.c @@ -743,6 +743,7 @@ MONO_RESTORE_WARNING else if (tfrom_type == MONO_TYPE_U) tfrom_type = MONO_TYPE_U8; #endif +#if TARGET_SIZEOF_VOID_P == 8 || defined(TARGET_WASM) if ((tfrom_type == MONO_TYPE_R8) && ((tto_type == MONO_TYPE_I8) || (tto_type == MONO_TYPE_U8))) { opcode = OP_MOVE_F_TO_I8; tto_stack = STACK_I8; @@ -753,6 +754,9 @@ MONO_RESTORE_WARNING opcode = OP_MOVE; tto_stack = STACK_I8; } +#else + return NULL; +#endif } } else if (mini_class_is_simd (cfg, tfrom_klass) && mini_class_is_simd (cfg, tto_klass)) { #if TARGET_SIZEOF_VOID_P == 8 || defined(TARGET_WASM) diff --git a/src/runtime/src/tests/nativeaot/SmokeTests/Preinitialization/Preinitialization.cs b/src/runtime/src/tests/nativeaot/SmokeTests/Preinitialization/Preinitialization.cs index 8bf32c97f6a..a70277b0f85 100644 --- a/src/runtime/src/tests/nativeaot/SmokeTests/Preinitialization/Preinitialization.cs +++ b/src/runtime/src/tests/nativeaot/SmokeTests/Preinitialization/Preinitialization.cs @@ -68,6 +68,7 @@ private static int Main() TestVTableNegativeScenarios.Run(); TestByRefFieldAddressEquality.Run(); TestComInterfaceEntry.Run(); + TestPreinitializedBclTypes.Run(); #else Console.WriteLine("Preinitialization is disabled in multimodule builds for now. Skipping test."); #endif @@ -2107,6 +2108,16 @@ public static void Run() } } +unsafe class TestPreinitializedBclTypes +{ + // Verify that (given that all of the other tests have passed), that a select number of BCL types + // that depend on this optimization for high-performance scenarios are preinitialized. + public static void Run() + { + Assert.IsPreinitialized(Type.GetType("System.Runtime.InteropServices.ComWrappers+VtableImplementations, System.Private.CoreLib")); + } +} + static class Assert { [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2070:UnrecognizedReflectionPattern", diff --git a/src/source-manifest.json b/src/source-manifest.json index 44658c6f41d..26a3ddaf6b4 100644 --- a/src/source-manifest.json +++ b/src/source-manifest.json @@ -106,11 +106,11 @@ "commitSha": "fb6e4b4d3f36ff60dd731a7b2006dab231c70935" }, { - "packageVersion": "10.0.0-preview.5.25259.6", - "barId": 267717, + "packageVersion": "10.0.0-preview.5.25261.2", + "barId": 267807, "path": "runtime", "remoteUri": "https://github.com/dotnet/runtime", - "commitSha": "e67e997094b65c8ed7289b00f2304288d8f75a12" + "commitSha": "8b80947425177e7b500e13ec66d1b9936a67e5a5" }, { "packageVersion": "10.0.0-preview.25221.1", From 7a9adcc7957546fa191128560d640316ef8a662e Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 12 May 2025 09:04:26 +0200 Subject: [PATCH 05/32] [main] Source code updates from dotnet/sourcelink (#505) Co-authored-by: dotnet-maestro[bot] --- prereqs/git-info/sourcelink.props | 6 +++--- src/source-manifest.json | 6 +++--- src/sourcelink/eng/Version.Details.xml | 6 +++--- .../common/core-templates/steps/source-build.yml | 16 +++++----------- src/sourcelink/eng/common/tools.sh | 6 +++++- src/sourcelink/global.json | 2 +- 6 files changed, 20 insertions(+), 22 deletions(-) diff --git a/prereqs/git-info/sourcelink.props b/prereqs/git-info/sourcelink.props index e4e5de7ec0f..0385a8aed6e 100644 --- a/prereqs/git-info/sourcelink.props +++ b/prereqs/git-info/sourcelink.props @@ -1,8 +1,8 @@  - b1cdbdfa41d0f0135dbdb574cd47c7010dd5cf94 - 20250508.2 - 10.0.0-beta.25258.2 + 8be2b265e8ac8f8dc9a3e97026cfdc8ee2cb587c + 20250511.1 + 10.0.0-beta.25261.1 \ No newline at end of file diff --git a/src/source-manifest.json b/src/source-manifest.json index 26a3ddaf6b4..407651f85d3 100644 --- a/src/source-manifest.json +++ b/src/source-manifest.json @@ -141,11 +141,11 @@ "commitSha": "804fed8577d3f6226b1a12966af5ddde6928106b" }, { - "packageVersion": "10.0.0-beta.25258.2", - "barId": 267530, + "packageVersion": "10.0.0-beta.25261.1", + "barId": 267804, "path": "sourcelink", "remoteUri": "https://github.com/dotnet/sourcelink", - "commitSha": "b1cdbdfa41d0f0135dbdb574cd47c7010dd5cf94" + "commitSha": "8be2b265e8ac8f8dc9a3e97026cfdc8ee2cb587c" }, { "packageVersion": "2.2.0-beta.25256.1", diff --git a/src/sourcelink/eng/Version.Details.xml b/src/sourcelink/eng/Version.Details.xml index 597517d232e..f84b13bb2fe 100644 --- a/src/sourcelink/eng/Version.Details.xml +++ b/src/sourcelink/eng/Version.Details.xml @@ -1,6 +1,6 @@ - + https://github.com/dotnet/command-line-api @@ -8,9 +8,9 @@ - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb diff --git a/src/sourcelink/eng/common/core-templates/steps/source-build.yml b/src/sourcelink/eng/common/core-templates/steps/source-build.yml index 325231215d5..f2a0f347fdd 100644 --- a/src/sourcelink/eng/common/core-templates/steps/source-build.yml +++ b/src/sourcelink/eng/common/core-templates/steps/source-build.yml @@ -38,14 +38,9 @@ steps: targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}' fi - runtimeOsArgs= - if [ '${{ parameters.platform.runtimeOS }}' != '' ]; then - runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}' - fi - - baseOsArgs= - if [ '${{ parameters.platform.baseOS }}' != '' ]; then - baseOsArgs='/p:BaseOS=${{ parameters.platform.baseOS }}' + baseRidArgs= + if [ '${{ parameters.platform.baseRID }}' != '' ]; then + baseRidArgs='/p:BaseRid=${{ parameters.platform.baseRID }}' fi portableBuildArgs= @@ -59,8 +54,7 @@ steps: ${{ parameters.platform.buildArguments }} \ $internalRuntimeDownloadArgs \ $targetRidArgs \ - $runtimeOsArgs \ - $baseOsArgs \ + $baseRidArgs \ $portableBuildArgs \ /p:DotNetBuildSourceOnly=true \ /p:DotNetBuildRepo=true \ @@ -71,7 +65,7 @@ steps: is1ESPipeline: ${{ parameters.is1ESPipeline }} args: displayName: Publish BuildLogs - targetPath: artifacts/log/$[ coalesce(variables._BuildConfig, 'Release') ]/ + targetPath: artifacts/log/${{ coalesce(variables._BuildConfig, 'Release') }} artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt) continueOnError: true condition: succeededOrFailed() diff --git a/src/sourcelink/eng/common/tools.sh b/src/sourcelink/eng/common/tools.sh index d51f300c772..cc007b1f15a 100755 --- a/src/sourcelink/eng/common/tools.sh +++ b/src/sourcelink/eng/common/tools.sh @@ -5,6 +5,9 @@ # CI mode - set to true on CI server for PR validation build or official build. ci=${ci:-false} +# Build mode +source_build=${source_build:-false} + # Set to true to use the pipelines logger which will enable Azure logging output. # https://github.com/Microsoft/azure-pipelines-tasks/blob/master/docs/authoring/commands.md # This flag is meant as a temporary opt-opt for the feature while validate it across @@ -58,7 +61,8 @@ use_installed_dotnet_cli=${use_installed_dotnet_cli:-true} dotnetInstallScriptVersion=${dotnetInstallScriptVersion:-'v1'} # True to use global NuGet cache instead of restoring packages to repository-local directory. -if [[ "$ci" == true ]]; then +# Keep in sync with NuGetPackageroot in Arcade SDK's RepositoryLayout.props. +if [[ "$ci" == true || "$source_build" == true ]]; then use_global_nuget_cache=${use_global_nuget_cache:-false} else use_global_nuget_cache=${use_global_nuget_cache:-true} diff --git a/src/sourcelink/global.json b/src/sourcelink/global.json index 8a4131bdcd1..254bec3b082 100644 --- a/src/sourcelink/global.json +++ b/src/sourcelink/global.json @@ -3,7 +3,7 @@ "dotnet": "10.0.100-preview.3.25201.16" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25257.101", + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25260.104", "Microsoft.Build.NoTargets": "3.7.0" } } From 28e592354819a7fa380a0b57fa71827f65fa3675 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 12 May 2025 09:05:25 +0200 Subject: [PATCH 06/32] [main] Source code updates from dotnet/sdk, nuget/nuget.client (#492) Co-authored-by: dotnet-maestro[bot] --- prereqs/git-info/nuget-client.props | 6 +- prereqs/git-info/sdk.props | 6 +- .../.github/copilot-instructions.md | 2 +- src/nuget-client/docs/coding-guidelines.md | 2 + src/sdk/eng/Version.Details.xml | 68 ++++++++--------- src/sdk/eng/Versions.props | 24 +++--- .../dotnet/Commands/CliCommandStrings.resx | 5 +- .../Solution/Add/SolutionAddCommand.cs | 21 ++++- .../Solution/Add/SolutionAddCommandParser.cs | 8 ++ .../Commands/xlf/CliCommandStrings.cs.xlf | 5 ++ .../Commands/xlf/CliCommandStrings.de.xlf | 5 ++ .../Commands/xlf/CliCommandStrings.es.xlf | 5 ++ .../Commands/xlf/CliCommandStrings.fr.xlf | 5 ++ .../Commands/xlf/CliCommandStrings.it.xlf | 5 ++ .../Commands/xlf/CliCommandStrings.ja.xlf | 5 ++ .../Commands/xlf/CliCommandStrings.ko.xlf | 5 ++ .../Commands/xlf/CliCommandStrings.pl.xlf | 5 ++ .../Commands/xlf/CliCommandStrings.pt-BR.xlf | 5 ++ .../Commands/xlf/CliCommandStrings.ru.xlf | 5 ++ .../Commands/xlf/CliCommandStrings.tr.xlf | 5 ++ .../xlf/CliCommandStrings.zh-Hans.xlf | 5 ++ .../xlf/CliCommandStrings.zh-Hant.xlf | 5 ++ .../Layout/redist/targets/Crossgen.targets | 1 - .../Tasks/Data/StaticWebAssetPathPattern.cs | 4 +- .../Tasks/DefineStaticWebAssetEndpoints.cs | 2 +- .../Microsoft.NET.Sdk.Web.DefaultItems.props | 2 +- ...ootJsonManifest.Build.staticwebassets.json | 48 ++++++++++++ ...edToBuildOutput.Build.staticwebassets.json | 48 ++++++++++++ ...duleTargetPaths.Build.staticwebassets.json | 52 ++++++++++++- ...nitialization.Publish.staticwebassets.json | 72 ++++++++++++++++++ ...ublishModules.Publish.staticwebassets.json | 72 ++++++++++++++++++ ...nitialization.Publish.staticwebassets.json | 76 ++++++++++++++++++- ...0Hosted_Works.Publish.staticwebassets.json | 76 ++++++++++++++++++- ...tJsonManifest.Publish.staticwebassets.json | 72 ++++++++++++++++++ ...ldMinimal_Works.Build.staticwebassets.json | 48 ++++++++++++ ...ld_Hosted_Works.Build.staticwebassets.json | 52 ++++++++++++- ...Minimal_Works.Publish.staticwebassets.json | 72 ++++++++++++++++++ ...iles_AsAssets.Publish.staticwebassets.json | 76 ++++++++++++++++++- ..._Hosted_Works.Publish.staticwebassets.json | 76 ++++++++++++++++++- .../AspNetSdkBaselineTest.cs | 2 +- .../SlnFileWithReferencedProjects/A/A.csproj | 12 +++ .../SlnFileWithReferencedProjects/App.sln | 14 ++++ .../SlnFileWithReferencedProjects/App.slnx | 2 + .../SlnFileWithReferencedProjects/B/B.csproj | 10 +++ .../Solution/Add/GivenDotnetSlnAdd.cs | 38 ++++++++++ ...napshotTests.VerifyCompletions.verified.sh | 6 +- ...apshotTests.VerifyCompletions.verified.ps1 | 1 + ...apshotTests.VerifyCompletions.verified.zsh | 1 + src/source-manifest.json | 12 +-- 49 files changed, 1073 insertions(+), 81 deletions(-) create mode 100644 src/sdk/test/TestAssets/TestProjects/SlnFileWithReferencedProjects/A/A.csproj create mode 100644 src/sdk/test/TestAssets/TestProjects/SlnFileWithReferencedProjects/App.sln create mode 100644 src/sdk/test/TestAssets/TestProjects/SlnFileWithReferencedProjects/App.slnx create mode 100644 src/sdk/test/TestAssets/TestProjects/SlnFileWithReferencedProjects/B/B.csproj diff --git a/prereqs/git-info/nuget-client.props b/prereqs/git-info/nuget-client.props index e097599567c..4d2c97d280e 100644 --- a/prereqs/git-info/nuget-client.props +++ b/prereqs/git-info/nuget-client.props @@ -1,8 +1,8 @@  - ebbb676221eaa2a8aed9cf89e8719b7139251e10 - 6.15.0.45 - 6.15.0-preview.1.45 + 02b1c82c1e1855042556fdf5d205de501fd81590 + 6.15.0.47 + 6.15.0-preview.1.47 \ No newline at end of file diff --git a/prereqs/git-info/sdk.props b/prereqs/git-info/sdk.props index 23ec6aff0bd..635597d25b3 100644 --- a/prereqs/git-info/sdk.props +++ b/prereqs/git-info/sdk.props @@ -1,8 +1,8 @@  - c8d913c0a76d258b2858966139ba67b4ce7873a0 - 20250508.26 - 10.0.100-preview.5.25258.26 + e928797f1d6e217a706e441352571787bff8f5d1 + 20250509.8 + 10.0.100-preview.5.25259.8 \ No newline at end of file diff --git a/src/nuget-client/.github/copilot-instructions.md b/src/nuget-client/.github/copilot-instructions.md index 7ffb5a06e5b..6fee8ecdeaa 100644 --- a/src/nuget-client/.github/copilot-instructions.md +++ b/src/nuget-client/.github/copilot-instructions.md @@ -1 +1 @@ -For both new and existing code, help enforce a maximum line length of 120 characters. \ No newline at end of file +Use the following coding guidelines: https://github.com/NuGet/NuGet.Client/blob/dev/docs/coding-guidelines.md \ No newline at end of file diff --git a/src/nuget-client/docs/coding-guidelines.md b/src/nuget-client/docs/coding-guidelines.md index 0fc2cc69fff..e85eba46a7d 100644 --- a/src/nuget-client/docs/coding-guidelines.md +++ b/src/nuget-client/docs/coding-guidelines.md @@ -44,6 +44,8 @@ The general rule we follow is "use Visual Studio defaults". 1. Avoid more than one empty line at any time. For example, do not have two blank lines between members of a type. +1. Avoid lines of code longer than 120 characters. + 1. Avoid spurious free spaces. For example avoid `if (someVar == 0)...`, where the dots mark the spurious free spaces. Consider enabling "View White Space (Ctrl+R, Ctrl+W)" or "Edit -> Advanced -> View White Space" if using Visual Studio to aid detection. 1. If a file happens to differ in style from these guidelines (e.g. private members are named `m_member` rather than `_member`), the existing style in that file takes precedence. Changes/refactorings are possible, but depending on the complexity, change frequency of the file, might need to be considered on their own merits in a separate pull request. diff --git a/src/sdk/eng/Version.Details.xml b/src/sdk/eng/Version.Details.xml index 7fc7163f4fd..3c97b8e155d 100644 --- a/src/sdk/eng/Version.Details.xml +++ b/src/sdk/eng/Version.Details.xml @@ -133,74 +133,74 @@ https://github.com/dotnet/dotnet 5e6dacd4d3debda3266224b2a434811c6fa94987 - + https://github.com/nuget/nuget.client - ebbb676221eaa2a8aed9cf89e8719b7139251e10 + 02b1c82c1e1855042556fdf5d205de501fd81590 - + https://github.com/nuget/nuget.client - ebbb676221eaa2a8aed9cf89e8719b7139251e10 + 02b1c82c1e1855042556fdf5d205de501fd81590 - + https://github.com/nuget/nuget.client - ebbb676221eaa2a8aed9cf89e8719b7139251e10 + 02b1c82c1e1855042556fdf5d205de501fd81590 - + https://github.com/nuget/nuget.client - ebbb676221eaa2a8aed9cf89e8719b7139251e10 + 02b1c82c1e1855042556fdf5d205de501fd81590 - + https://github.com/nuget/nuget.client - ebbb676221eaa2a8aed9cf89e8719b7139251e10 + 02b1c82c1e1855042556fdf5d205de501fd81590 - + https://github.com/nuget/nuget.client - ebbb676221eaa2a8aed9cf89e8719b7139251e10 + 02b1c82c1e1855042556fdf5d205de501fd81590 - + https://github.com/nuget/nuget.client - ebbb676221eaa2a8aed9cf89e8719b7139251e10 + 02b1c82c1e1855042556fdf5d205de501fd81590 - + https://github.com/nuget/nuget.client - ebbb676221eaa2a8aed9cf89e8719b7139251e10 + 02b1c82c1e1855042556fdf5d205de501fd81590 - + https://github.com/nuget/nuget.client - ebbb676221eaa2a8aed9cf89e8719b7139251e10 + 02b1c82c1e1855042556fdf5d205de501fd81590 - + https://github.com/nuget/nuget.client - ebbb676221eaa2a8aed9cf89e8719b7139251e10 + 02b1c82c1e1855042556fdf5d205de501fd81590 - + https://github.com/nuget/nuget.client - ebbb676221eaa2a8aed9cf89e8719b7139251e10 + 02b1c82c1e1855042556fdf5d205de501fd81590 - + https://github.com/nuget/nuget.client - ebbb676221eaa2a8aed9cf89e8719b7139251e10 + 02b1c82c1e1855042556fdf5d205de501fd81590 - + https://github.com/nuget/nuget.client - ebbb676221eaa2a8aed9cf89e8719b7139251e10 + 02b1c82c1e1855042556fdf5d205de501fd81590 - + https://github.com/nuget/nuget.client - ebbb676221eaa2a8aed9cf89e8719b7139251e10 + 02b1c82c1e1855042556fdf5d205de501fd81590 - + https://github.com/nuget/nuget.client - ebbb676221eaa2a8aed9cf89e8719b7139251e10 + 02b1c82c1e1855042556fdf5d205de501fd81590 - + https://github.com/nuget/nuget.client - ebbb676221eaa2a8aed9cf89e8719b7139251e10 + 02b1c82c1e1855042556fdf5d205de501fd81590 - + https://github.com/nuget/nuget.client - ebbb676221eaa2a8aed9cf89e8719b7139251e10 + 02b1c82c1e1855042556fdf5d205de501fd81590 https://github.com/dotnet/dotnet diff --git a/src/sdk/eng/Versions.props b/src/sdk/eng/Versions.props index ff871cf879d..336c53e4d0b 100644 --- a/src/sdk/eng/Versions.props +++ b/src/sdk/eng/Versions.props @@ -161,18 +161,18 @@ - 6.15.0-preview.1.45 - 6.15.0-preview.1.45 - 6.15.0-preview.1.45 - 6.15.0-preview.1.45 - 6.15.0-preview.1.45 - 6.15.0-preview.1.45 - 6.15.0-preview.1.45 - 6.15.0-preview.1.45 - 6.15.0-preview.1.45 - 6.15.0-preview.1.45 - 6.15.0-preview.1.45 - 6.15.0-preview.1.45 + 6.15.0-preview.1.47 + 6.15.0-preview.1.47 + 6.15.0-preview.1.47 + 6.15.0-preview.1.47 + 6.15.0-preview.1.47 + 6.15.0-preview.1.47 + 6.15.0-preview.1.47 + 6.15.0-preview.1.47 + 6.15.0-preview.1.47 + 6.15.0-preview.1.47 + 6.15.0-preview.1.47 + 6.15.0-preview.1.47 diff --git a/src/sdk/src/Cli/dotnet/Commands/CliCommandStrings.resx b/src/sdk/src/Cli/dotnet/Commands/CliCommandStrings.resx index 5fb8a21e1ca..82b2f559d0f 100644 --- a/src/sdk/src/Cli/dotnet/Commands/CliCommandStrings.resx +++ b/src/sdk/src/Cli/dotnet/Commands/CliCommandStrings.resx @@ -2483,4 +2483,7 @@ To display a value, specify the corresponding command-line option without provid Zero tests ran - + + Recursively add projects' ReferencedProjects to solution + + \ No newline at end of file diff --git a/src/sdk/src/Cli/dotnet/Commands/Solution/Add/SolutionAddCommand.cs b/src/sdk/src/Cli/dotnet/Commands/Solution/Add/SolutionAddCommand.cs index b25ba4d85d2..5cf0b3817fd 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Solution/Add/SolutionAddCommand.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Solution/Add/SolutionAddCommand.cs @@ -22,6 +22,7 @@ internal class SolutionAddCommand : CommandBase private readonly IReadOnlyCollection _projects; private readonly string? _solutionFolderPath; private string _solutionFileFullPath = string.Empty; + private bool _includeReferences; private static string GetSolutionFolderPathWithForwardSlashes(string path) { @@ -43,6 +44,7 @@ public SolutionAddCommand(ParseResult parseResult) : base(parseResult) _projects = (IReadOnlyCollection)(parseResult.GetValue(SolutionAddCommandParser.ProjectPathArgument) ?? []); _inRoot = parseResult.GetValue(SolutionAddCommandParser.InRootOption); _solutionFolderPath = parseResult.GetValue(SolutionAddCommandParser.SolutionFolderOption); + _includeReferences = parseResult.GetValue(SolutionAddCommandParser.IncludeReferencesOption); SolutionArgumentValidator.ParseAndValidateArguments(_fileOrDirectory, _projects, SolutionArgumentValidator.CommandType.Add, _inRoot, _solutionFolderPath); _solutionFileFullPath = SlnFileFactory.GetSolutionFileFullPath(_fileOrDirectory); } @@ -138,7 +140,7 @@ private async Task AddProjectsToSolutionAsync(IEnumerable projectPaths, await serializer.SaveAsync(_solutionFileFullPath, solution, cancellationToken); } - private void AddProject(SolutionModel solution, string fullProjectPath, ISolutionSerializer serializer = null) + private void AddProject(SolutionModel solution, string fullProjectPath, ISolutionSerializer serializer = null, bool showMessageOnDuplicate = true) { string solutionRelativeProjectPath = Path.GetRelativePath(Path.GetDirectoryName(_solutionFileFullPath), fullProjectPath); @@ -175,7 +177,10 @@ private void AddProject(SolutionModel solution, string fullProjectPath, ISolutio } catch (SolutionArgumentException ex) when (ex.Type == SolutionErrorType.DuplicateProjectName || solution.FindProject(solutionRelativeProjectPath) is not null) { - Reporter.Output.WriteLine(CliStrings.SolutionAlreadyContainsProject, _solutionFileFullPath, solutionRelativeProjectPath); + if (showMessageOnDuplicate) + { + Reporter.Output.WriteLine(CliStrings.SolutionAlreadyContainsProject, _solutionFileFullPath, solutionRelativeProjectPath); + } return; } @@ -205,5 +210,17 @@ private void AddProject(SolutionModel solution, string fullProjectPath, ISolutio } Reporter.Output.WriteLine(CliStrings.ProjectAddedToTheSolution, solutionRelativeProjectPath); + + // Get referencedprojects from the project instance + var referencedProjectsFullPaths = projectInstance.GetItems("ProjectReference") + .Select(item => Path.GetFullPath(item.EvaluatedInclude, Path.GetDirectoryName(fullProjectPath))); + + if (_includeReferences) + { + foreach (var referencedProjectFullPath in referencedProjectsFullPaths) + { + AddProject(solution, referencedProjectFullPath, serializer, showMessageOnDuplicate: false); + } + } } } diff --git a/src/sdk/src/Cli/dotnet/Commands/Solution/Add/SolutionAddCommandParser.cs b/src/sdk/src/Cli/dotnet/Commands/Solution/Add/SolutionAddCommandParser.cs index afd116050f8..4925520938d 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Solution/Add/SolutionAddCommandParser.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Solution/Add/SolutionAddCommandParser.cs @@ -4,6 +4,7 @@ #nullable disable using System.CommandLine; +using System.CommandLine.Parsing; namespace Microsoft.DotNet.Cli.Commands.Solution.Add; @@ -26,6 +27,12 @@ public static class SolutionAddCommandParser Description = CliCommandStrings.AddProjectSolutionFolderArgumentDescription }; + public static readonly Option IncludeReferencesOption = new("--include-references") + { + Description = CliCommandStrings.SolutionAddReferencedProjectsOptionDescription, + DefaultValueFactory = (_) => true, + }; + private static readonly Command Command = ConstructCommand(); public static Command GetCommand() @@ -40,6 +47,7 @@ private static Command ConstructCommand() command.Arguments.Add(ProjectPathArgument); command.Options.Add(InRootOption); command.Options.Add(SolutionFolderOption); + command.Options.Add(IncludeReferencesOption); command.SetAction((parseResult) => new SolutionAddCommand(parseResult).Execute()); diff --git a/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.cs.xlf b/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.cs.xlf index c30a1ee4f56..905e767f24a 100644 --- a/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.cs.xlf +++ b/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.cs.xlf @@ -2721,6 +2721,11 @@ Your project targets multiple frameworks. Specify which framework to run using ' .slnx file {0} generated. + + Recursively add projects' ReferencedProjects to solution + Recursively add projects' ReferencedProjects to solution + + .NET modify solution file command .NET modify solution file command diff --git a/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.de.xlf b/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.de.xlf index 8fefe9ecb9f..3896c64b9e6 100644 --- a/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.de.xlf +++ b/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.de.xlf @@ -2721,6 +2721,11 @@ Your project targets multiple frameworks. Specify which framework to run using ' .slnx file {0} generated. + + Recursively add projects' ReferencedProjects to solution + Recursively add projects' ReferencedProjects to solution + + .NET modify solution file command .NET modify solution file command diff --git a/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.es.xlf b/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.es.xlf index d58d4302021..20afd4520f2 100644 --- a/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.es.xlf +++ b/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.es.xlf @@ -2721,6 +2721,11 @@ Your project targets multiple frameworks. Specify which framework to run using ' .slnx file {0} generated. + + Recursively add projects' ReferencedProjects to solution + Recursively add projects' ReferencedProjects to solution + + .NET modify solution file command .NET modify solution file command diff --git a/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.fr.xlf b/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.fr.xlf index 59225c3273f..71ff36a7e75 100644 --- a/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.fr.xlf +++ b/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.fr.xlf @@ -2721,6 +2721,11 @@ Your project targets multiple frameworks. Specify which framework to run using ' .slnx file {0} generated. + + Recursively add projects' ReferencedProjects to solution + Recursively add projects' ReferencedProjects to solution + + .NET modify solution file command .NET modify solution file command diff --git a/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.it.xlf b/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.it.xlf index 7a64459070a..3a29e67f41d 100644 --- a/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.it.xlf +++ b/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.it.xlf @@ -2721,6 +2721,11 @@ Your project targets multiple frameworks. Specify which framework to run using ' .slnx file {0} generated. + + Recursively add projects' ReferencedProjects to solution + Recursively add projects' ReferencedProjects to solution + + .NET modify solution file command .NET modify solution file command diff --git a/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.ja.xlf b/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.ja.xlf index c3bb747280e..5c1579261b1 100644 --- a/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.ja.xlf +++ b/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.ja.xlf @@ -2721,6 +2721,11 @@ Your project targets multiple frameworks. Specify which framework to run using ' .slnx file {0} generated. + + Recursively add projects' ReferencedProjects to solution + Recursively add projects' ReferencedProjects to solution + + .NET modify solution file command .NET modify solution file command diff --git a/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.ko.xlf b/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.ko.xlf index 07fbe8c1f4c..2b3218faac4 100644 --- a/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.ko.xlf +++ b/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.ko.xlf @@ -2721,6 +2721,11 @@ Your project targets multiple frameworks. Specify which framework to run using ' .slnx file {0} generated. + + Recursively add projects' ReferencedProjects to solution + Recursively add projects' ReferencedProjects to solution + + .NET modify solution file command .NET modify solution file command diff --git a/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.pl.xlf b/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.pl.xlf index 9f983fdf516..9a75d810dd4 100644 --- a/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.pl.xlf +++ b/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.pl.xlf @@ -2721,6 +2721,11 @@ Your project targets multiple frameworks. Specify which framework to run using ' .slnx file {0} generated. + + Recursively add projects' ReferencedProjects to solution + Recursively add projects' ReferencedProjects to solution + + .NET modify solution file command .NET modify solution file command diff --git a/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.pt-BR.xlf b/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.pt-BR.xlf index a3a94cf6a8b..72a2415040d 100644 --- a/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.pt-BR.xlf +++ b/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.pt-BR.xlf @@ -2721,6 +2721,11 @@ Your project targets multiple frameworks. Specify which framework to run using ' .slnx file {0} generated. + + Recursively add projects' ReferencedProjects to solution + Recursively add projects' ReferencedProjects to solution + + .NET modify solution file command .NET modify solution file command diff --git a/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.ru.xlf b/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.ru.xlf index 0f760888b54..04df2e5813c 100644 --- a/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.ru.xlf +++ b/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.ru.xlf @@ -2721,6 +2721,11 @@ Your project targets multiple frameworks. Specify which framework to run using ' .slnx file {0} generated. + + Recursively add projects' ReferencedProjects to solution + Recursively add projects' ReferencedProjects to solution + + .NET modify solution file command .NET modify solution file command diff --git a/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.tr.xlf b/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.tr.xlf index 732e31dbf8c..892aecbdce6 100644 --- a/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.tr.xlf +++ b/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.tr.xlf @@ -2721,6 +2721,11 @@ Your project targets multiple frameworks. Specify which framework to run using ' .slnx file {0} generated. + + Recursively add projects' ReferencedProjects to solution + Recursively add projects' ReferencedProjects to solution + + .NET modify solution file command .NET modify solution file command diff --git a/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.zh-Hans.xlf b/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.zh-Hans.xlf index 862bfeed422..08f128a0eea 100644 --- a/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.zh-Hans.xlf +++ b/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.zh-Hans.xlf @@ -2721,6 +2721,11 @@ Your project targets multiple frameworks. Specify which framework to run using ' .slnx file {0} generated. + + Recursively add projects' ReferencedProjects to solution + Recursively add projects' ReferencedProjects to solution + + .NET modify solution file command .NET modify solution file command diff --git a/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.zh-Hant.xlf b/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.zh-Hant.xlf index d0dd5815d7d..61319bc77d4 100644 --- a/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.zh-Hant.xlf +++ b/src/sdk/src/Cli/dotnet/Commands/xlf/CliCommandStrings.zh-Hant.xlf @@ -2721,6 +2721,11 @@ Your project targets multiple frameworks. Specify which framework to run using ' .slnx file {0} generated. + + Recursively add projects' ReferencedProjects to solution + Recursively add projects' ReferencedProjects to solution + + .NET modify solution file command .NET modify solution file command diff --git a/src/sdk/src/Layout/redist/targets/Crossgen.targets b/src/sdk/src/Layout/redist/targets/Crossgen.targets index 0f0454114ea..b80892ad82c 100644 --- a/src/sdk/src/Layout/redist/targets/Crossgen.targets +++ b/src/sdk/src/Layout/redist/targets/Crossgen.targets @@ -8,7 +8,6 @@ '$(DotNetBuildUseMonoRuntime)' != 'true'">true $(HostOSName)-$(BuildArchitecture) - $(SharedFrameworkRid) microsoft.netcore.app.crossgen2.$(Crossgen2Rid) diff --git a/src/sdk/src/StaticWebAssetsSdk/Tasks/Data/StaticWebAssetPathPattern.cs b/src/sdk/src/StaticWebAssetsSdk/Tasks/Data/StaticWebAssetPathPattern.cs index f54348e2e92..23a0f96f660 100644 --- a/src/sdk/src/StaticWebAssetsSdk/Tasks/Data/StaticWebAssetPathPattern.cs +++ b/src/sdk/src/StaticWebAssetsSdk/Tasks/Data/StaticWebAssetPathPattern.cs @@ -65,7 +65,7 @@ public StaticWebAssetPathPattern(List segments) // and other features. This is why we want to bake into the format itself the information that specifies under which paths the file will // be available at runtime so that tasks/tools can operate independently and produce correct results. // The current token we support is the 'fingerprint' token, which computes a web friendly version of the hash of the file suitable - // to be embedded in other contexts. + // to be embedded in other contexts. // We might include other tokens in the future, like `[{basepath}]` to give a file the ability to have its path be relative to the consuming // project base path, etc. public static StaticWebAssetPathPattern Parse(ReadOnlyMemory rawPathMemory, string assetIdentity = null) @@ -296,7 +296,7 @@ public static StaticWebAssetPathPattern Parse(string rawPath, string assetIdenti public IEnumerable ExpandPatternExpression() { // We are going to analyze each segment and produce the following: - // - For literals, we just concatenate + // - For literals, we just concatenate // - For parameter expressions without '?' we return the parameter expression. // - For parameter expressions with '?' we return // For example: diff --git a/src/sdk/src/StaticWebAssetsSdk/Tasks/DefineStaticWebAssetEndpoints.cs b/src/sdk/src/StaticWebAssetsSdk/Tasks/DefineStaticWebAssetEndpoints.cs index a86b20672fe..47e1256ed63 100644 --- a/src/sdk/src/StaticWebAssetsSdk/Tasks/DefineStaticWebAssetEndpoints.cs +++ b/src/sdk/src/StaticWebAssetsSdk/Tasks/DefineStaticWebAssetEndpoints.cs @@ -189,7 +189,7 @@ private void CreateAnAddEndpoints( // If in the future we change it to sha384 or sha512, the runtime will not need to be updated. properties[i++] = new StaticWebAssetEndpointProperty { Name = "integrity", Value = $"sha256-{asset.Integrity}" }; - var finalRoute = asset.IsProject() || asset.IsPackage() ? StaticWebAsset.Normalize(Path.Combine(asset.BasePath, route)) : route; + var finalRoute = asset.IsProject() || asset.IsPackage() ? StaticWebAsset.Normalize(Path.Combine(asset.BasePath, route)) : route; var endpoint = new StaticWebAssetEndpoint() { diff --git a/src/sdk/src/WebSdk/ProjectSystem/Targets/Microsoft.NET.Sdk.Web.DefaultItems.props b/src/sdk/src/WebSdk/ProjectSystem/Targets/Microsoft.NET.Sdk.Web.DefaultItems.props index 16bf21913b1..f7a5020bf36 100644 --- a/src/sdk/src/WebSdk/ProjectSystem/Targets/Microsoft.NET.Sdk.Web.DefaultItems.props +++ b/src/sdk/src/WebSdk/ProjectSystem/Targets/Microsoft.NET.Sdk.Web.DefaultItems.props @@ -26,7 +26,7 @@ Copyright (c) .NET Foundation. All rights reserved. - diff --git a/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/Build_DoesNotGenerateManifestJson_IncludesJSModulesOnBlazorBootJsonManifest.Build.staticwebassets.json b/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/Build_DoesNotGenerateManifestJson_IncludesJSModulesOnBlazorBootJsonManifest.Build.staticwebassets.json index b588b60e57f..a93823f893c 100644 --- a/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/Build_DoesNotGenerateManifestJson_IncludesJSModulesOnBlazorBootJsonManifest.Build.staticwebassets.json +++ b/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/Build_DoesNotGenerateManifestJson_IncludesJSModulesOnBlazorBootJsonManifest.Build.staticwebassets.json @@ -16795,6 +16795,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" @@ -36665,6 +36689,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" diff --git a/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/Build_SatelliteAssembliesAreCopiedToBuildOutput.Build.staticwebassets.json b/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/Build_SatelliteAssembliesAreCopiedToBuildOutput.Build.staticwebassets.json index 299c22ce0e4..b6fb6e6d228 100644 --- a/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/Build_SatelliteAssembliesAreCopiedToBuildOutput.Build.staticwebassets.json +++ b/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/Build_SatelliteAssembliesAreCopiedToBuildOutput.Build.staticwebassets.json @@ -19109,6 +19109,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" @@ -40967,6 +40991,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" diff --git a/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/JSModules_ManifestIncludesModuleTargetPaths.Build.staticwebassets.json b/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/JSModules_ManifestIncludesModuleTargetPaths.Build.staticwebassets.json index 5ade8f8ae41..aa31cefd68d 100644 --- a/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/JSModules_ManifestIncludesModuleTargetPaths.Build.staticwebassets.json +++ b/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/JSModules_ManifestIncludesModuleTargetPaths.Build.staticwebassets.json @@ -12,10 +12,10 @@ "Source": "blazorwasm", "GetPublishAssetsTargets": "ComputeFilesToPublish;GetCurrentProjectPublishStaticWebAssetItems", "AdditionalPublishProperties": "_PublishingBlazorWasmProject=true;BuildProjectReferences=false;ResolveAssemblyReferencesFindRelatedSatellites=true", - "AdditionalPublishPropertiesToRemove": "NoBuild;RuntimeIdentifier;WebPublishProfileFile;TargetFramework", + "AdditionalPublishPropertiesToRemove": "NoBuild;RuntimeIdentifier;WebPublishProfileFile;TargetFramework;RuntimeIdentifier;SelfContained", "GetBuildAssetsTargets": "GetCurrentProjectBuildStaticWebAssetItems", "AdditionalBuildProperties": "", - "AdditionalBuildPropertiesToRemove": "RuntimeIdentifier;SelfContained;WebPublishProfileFile;TargetFramework" + "AdditionalBuildPropertiesToRemove": "RuntimeIdentifier;SelfContained;WebPublishProfileFile;TargetFramework;RuntimeIdentifier;SelfContained" }, { "Identity": "${ProjectPath}\\razorclasslibrary\\RazorClassLibrary.csproj", @@ -17450,6 +17450,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" @@ -37620,6 +37644,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" diff --git a/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/JsModules_CanCustomizeBlazorInitialization.Publish.staticwebassets.json b/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/JsModules_CanCustomizeBlazorInitialization.Publish.staticwebassets.json index 821695ba33b..48c5b50e30c 100644 --- a/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/JsModules_CanCustomizeBlazorInitialization.Publish.staticwebassets.json +++ b/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/JsModules_CanCustomizeBlazorInitialization.Publish.staticwebassets.json @@ -18954,6 +18954,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" @@ -19054,6 +19078,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" @@ -20499,6 +20547,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" diff --git a/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/JsModules_CanHaveDifferentBuildAndPublishModules.Publish.staticwebassets.json b/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/JsModules_CanHaveDifferentBuildAndPublishModules.Publish.staticwebassets.json index 21863643f97..08a33256679 100644 --- a/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/JsModules_CanHaveDifferentBuildAndPublishModules.Publish.staticwebassets.json +++ b/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/JsModules_CanHaveDifferentBuildAndPublishModules.Publish.staticwebassets.json @@ -18685,6 +18685,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" @@ -18785,6 +18809,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" @@ -20230,6 +20278,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" diff --git a/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/JsModules_Hosted_CanCustomizeBlazorInitialization.Publish.staticwebassets.json b/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/JsModules_Hosted_CanCustomizeBlazorInitialization.Publish.staticwebassets.json index 14467ad1835..fe33f055ada 100644 --- a/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/JsModules_Hosted_CanCustomizeBlazorInitialization.Publish.staticwebassets.json +++ b/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/JsModules_Hosted_CanCustomizeBlazorInitialization.Publish.staticwebassets.json @@ -12,10 +12,10 @@ "Source": "blazorwasm", "GetPublishAssetsTargets": "ComputeFilesToPublish;GetCurrentProjectPublishStaticWebAssetItems", "AdditionalPublishProperties": "_PublishingBlazorWasmProject=true;BuildProjectReferences=false;ResolveAssemblyReferencesFindRelatedSatellites=true", - "AdditionalPublishPropertiesToRemove": "NoBuild;RuntimeIdentifier;WebPublishProfileFile;TargetFramework", + "AdditionalPublishPropertiesToRemove": "NoBuild;RuntimeIdentifier;WebPublishProfileFile;TargetFramework;RuntimeIdentifier;SelfContained", "GetBuildAssetsTargets": "GetCurrentProjectBuildStaticWebAssetItems", "AdditionalBuildProperties": "", - "AdditionalBuildPropertiesToRemove": "RuntimeIdentifier;SelfContained;WebPublishProfileFile;TargetFramework" + "AdditionalBuildPropertiesToRemove": "RuntimeIdentifier;SelfContained;WebPublishProfileFile;TargetFramework;RuntimeIdentifier;SelfContained" }, { "Identity": "${ProjectPath}\\razorclasslibrary\\RazorClassLibrary.csproj", @@ -20141,6 +20141,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" @@ -20241,6 +20265,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" @@ -22086,6 +22134,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" diff --git a/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/Publish60Hosted_Works.Publish.staticwebassets.json b/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/Publish60Hosted_Works.Publish.staticwebassets.json index 900c1538026..47d2727cbd4 100644 --- a/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/Publish60Hosted_Works.Publish.staticwebassets.json +++ b/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/Publish60Hosted_Works.Publish.staticwebassets.json @@ -12,10 +12,10 @@ "Source": "BlazorWasmHosted60.Client", "GetPublishAssetsTargets": "ComputeFilesToPublish;GetCurrentProjectPublishStaticWebAssetItems", "AdditionalPublishProperties": "_PublishingBlazorWasmProject=true;BuildProjectReferences=false;ResolveAssemblyReferencesFindRelatedSatellites=true", - "AdditionalPublishPropertiesToRemove": "NoBuild;RuntimeIdentifier;WebPublishProfileFile;TargetFramework", + "AdditionalPublishPropertiesToRemove": "NoBuild;RuntimeIdentifier;WebPublishProfileFile;TargetFramework;RuntimeIdentifier;SelfContained", "GetBuildAssetsTargets": "GetCurrentProjectBuildStaticWebAssetItems", "AdditionalBuildProperties": "", - "AdditionalBuildPropertiesToRemove": "RuntimeIdentifier;SelfContained;WebPublishProfileFile;TargetFramework" + "AdditionalBuildPropertiesToRemove": "RuntimeIdentifier;SelfContained;WebPublishProfileFile;TargetFramework;RuntimeIdentifier;SelfContained" } ], "DiscoveryPatterns": [ @@ -8836,6 +8836,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" @@ -8936,6 +8960,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" @@ -11109,6 +11157,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" diff --git a/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/Publish_DoesNotGenerateManifestJson_IncludesJSModulesOnBlazorBootJsonManifest.Publish.staticwebassets.json b/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/Publish_DoesNotGenerateManifestJson_IncludesJSModulesOnBlazorBootJsonManifest.Publish.staticwebassets.json index 6f18be40d93..5256ebb542b 100644 --- a/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/Publish_DoesNotGenerateManifestJson_IncludesJSModulesOnBlazorBootJsonManifest.Publish.staticwebassets.json +++ b/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/Publish_DoesNotGenerateManifestJson_IncludesJSModulesOnBlazorBootJsonManifest.Publish.staticwebassets.json @@ -18685,6 +18685,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" @@ -18785,6 +18809,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" @@ -20230,6 +20278,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" diff --git a/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/StaticWebAssets_BuildMinimal_Works.Build.staticwebassets.json b/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/StaticWebAssets_BuildMinimal_Works.Build.staticwebassets.json index 6cf5bc1db77..b057eeb4df7 100644 --- a/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/StaticWebAssets_BuildMinimal_Works.Build.staticwebassets.json +++ b/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/StaticWebAssets_BuildMinimal_Works.Build.staticwebassets.json @@ -16887,6 +16887,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" @@ -36757,6 +36781,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" diff --git a/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/StaticWebAssets_Build_Hosted_Works.Build.staticwebassets.json b/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/StaticWebAssets_Build_Hosted_Works.Build.staticwebassets.json index 6a1d5050e80..3169a84d666 100644 --- a/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/StaticWebAssets_Build_Hosted_Works.Build.staticwebassets.json +++ b/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/StaticWebAssets_Build_Hosted_Works.Build.staticwebassets.json @@ -12,10 +12,10 @@ "Source": "blazorwasm", "GetPublishAssetsTargets": "ComputeFilesToPublish;GetCurrentProjectPublishStaticWebAssetItems", "AdditionalPublishProperties": "_PublishingBlazorWasmProject=true;BuildProjectReferences=false;ResolveAssemblyReferencesFindRelatedSatellites=true", - "AdditionalPublishPropertiesToRemove": "NoBuild;RuntimeIdentifier;WebPublishProfileFile;TargetFramework", + "AdditionalPublishPropertiesToRemove": "NoBuild;RuntimeIdentifier;WebPublishProfileFile;TargetFramework;RuntimeIdentifier;SelfContained", "GetBuildAssetsTargets": "GetCurrentProjectBuildStaticWebAssetItems", "AdditionalBuildProperties": "", - "AdditionalBuildPropertiesToRemove": "RuntimeIdentifier;SelfContained;WebPublishProfileFile;TargetFramework" + "AdditionalBuildPropertiesToRemove": "RuntimeIdentifier;SelfContained;WebPublishProfileFile;TargetFramework;RuntimeIdentifier;SelfContained" }, { "Identity": "${ProjectPath}\\razorclasslibrary\\RazorClassLibrary.csproj", @@ -17175,6 +17175,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" @@ -37345,6 +37369,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" diff --git a/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/StaticWebAssets_PublishMinimal_Works.Publish.staticwebassets.json b/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/StaticWebAssets_PublishMinimal_Works.Publish.staticwebassets.json index 42437bc8a2f..93818a4ee96 100644 --- a/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/StaticWebAssets_PublishMinimal_Works.Publish.staticwebassets.json +++ b/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/StaticWebAssets_PublishMinimal_Works.Publish.staticwebassets.json @@ -19247,6 +19247,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" @@ -19347,6 +19371,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" @@ -21216,6 +21264,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" diff --git a/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/StaticWebAssets_Publish_DoesNotIncludeXmlDocumentationFiles_AsAssets.Publish.staticwebassets.json b/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/StaticWebAssets_Publish_DoesNotIncludeXmlDocumentationFiles_AsAssets.Publish.staticwebassets.json index 72ff207a767..f074edc252a 100644 --- a/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/StaticWebAssets_Publish_DoesNotIncludeXmlDocumentationFiles_AsAssets.Publish.staticwebassets.json +++ b/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/StaticWebAssets_Publish_DoesNotIncludeXmlDocumentationFiles_AsAssets.Publish.staticwebassets.json @@ -12,10 +12,10 @@ "Source": "blazorwasm", "GetPublishAssetsTargets": "ComputeFilesToPublish;GetCurrentProjectPublishStaticWebAssetItems", "AdditionalPublishProperties": "_PublishingBlazorWasmProject=true;BuildProjectReferences=false;ResolveAssemblyReferencesFindRelatedSatellites=true", - "AdditionalPublishPropertiesToRemove": "NoBuild;RuntimeIdentifier;WebPublishProfileFile;TargetFramework", + "AdditionalPublishPropertiesToRemove": "NoBuild;RuntimeIdentifier;WebPublishProfileFile;TargetFramework;RuntimeIdentifier;SelfContained", "GetBuildAssetsTargets": "GetCurrentProjectBuildStaticWebAssetItems", "AdditionalBuildProperties": "", - "AdditionalBuildPropertiesToRemove": "RuntimeIdentifier;SelfContained;WebPublishProfileFile;TargetFramework" + "AdditionalBuildPropertiesToRemove": "RuntimeIdentifier;SelfContained;WebPublishProfileFile;TargetFramework;RuntimeIdentifier;SelfContained" }, { "Identity": "${ProjectPath}\\razorclasslibrary\\RazorClassLibrary.csproj", @@ -19674,6 +19674,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" @@ -19774,6 +19798,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" @@ -21727,6 +21775,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" diff --git a/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/StaticWebAssets_Publish_Hosted_Works.Publish.staticwebassets.json b/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/StaticWebAssets_Publish_Hosted_Works.Publish.staticwebassets.json index 72ff207a767..f074edc252a 100644 --- a/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/StaticWebAssets_Publish_Hosted_Works.Publish.staticwebassets.json +++ b/src/sdk/test/Microsoft.NET.Sdk.BlazorWebAssembly.Tests/StaticWebAssetsBaselines/StaticWebAssets_Publish_Hosted_Works.Publish.staticwebassets.json @@ -12,10 +12,10 @@ "Source": "blazorwasm", "GetPublishAssetsTargets": "ComputeFilesToPublish;GetCurrentProjectPublishStaticWebAssetItems", "AdditionalPublishProperties": "_PublishingBlazorWasmProject=true;BuildProjectReferences=false;ResolveAssemblyReferencesFindRelatedSatellites=true", - "AdditionalPublishPropertiesToRemove": "NoBuild;RuntimeIdentifier;WebPublishProfileFile;TargetFramework", + "AdditionalPublishPropertiesToRemove": "NoBuild;RuntimeIdentifier;WebPublishProfileFile;TargetFramework;RuntimeIdentifier;SelfContained", "GetBuildAssetsTargets": "GetCurrentProjectBuildStaticWebAssetItems", "AdditionalBuildProperties": "", - "AdditionalBuildPropertiesToRemove": "RuntimeIdentifier;SelfContained;WebPublishProfileFile;TargetFramework" + "AdditionalBuildPropertiesToRemove": "RuntimeIdentifier;SelfContained;WebPublishProfileFile;TargetFramework;RuntimeIdentifier;SelfContained" }, { "Identity": "${ProjectPath}\\razorclasslibrary\\RazorClassLibrary.csproj", @@ -19674,6 +19674,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" @@ -19774,6 +19798,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" @@ -21727,6 +21775,30 @@ } ], "EndpointProperties": [ + { + "Name": "PreloadAs", + "Value": "script" + }, + { + "Name": "PreloadCrossorigin", + "Value": "anonymous" + }, + { + "Name": "PreloadGroup", + "Value": "webassembly" + }, + { + "Name": "PreloadOrder", + "Value": "1" + }, + { + "Name": "PreloadPriority", + "Value": "high" + }, + { + "Name": "PreloadRel", + "Value": "preload" + }, { "Name": "integrity", "Value": "__integrity__" diff --git a/src/sdk/test/Microsoft.NET.Sdk.Razor.Tests/AspNetSdkBaselineTest.cs b/src/sdk/test/Microsoft.NET.Sdk.Razor.Tests/AspNetSdkBaselineTest.cs index a5a2d2cb8ae..308873af250 100644 --- a/src/sdk/test/Microsoft.NET.Sdk.Razor.Tests/AspNetSdkBaselineTest.cs +++ b/src/sdk/test/Microsoft.NET.Sdk.Razor.Tests/AspNetSdkBaselineTest.cs @@ -25,7 +25,7 @@ public class AspNetSdkBaselineTest : AspNetSdkTest public static bool GenerateBaselines = bool.TryParse(Environment.GetEnvironmentVariable("ASPNETCORE_TEST_BASELINES"), out var result) && result; #endif - private readonly bool _generateBaselines = GenerateBaselines; + private bool _generateBaselines = GenerateBaselines; public AspNetSdkBaselineTest(ITestOutputHelper log) : base(log) { diff --git a/src/sdk/test/TestAssets/TestProjects/SlnFileWithReferencedProjects/A/A.csproj b/src/sdk/test/TestAssets/TestProjects/SlnFileWithReferencedProjects/A/A.csproj new file mode 100644 index 00000000000..6b3ec4712e9 --- /dev/null +++ b/src/sdk/test/TestAssets/TestProjects/SlnFileWithReferencedProjects/A/A.csproj @@ -0,0 +1,12 @@ + + + + Exe + net10.0 + enable + enable + + + + + diff --git a/src/sdk/test/TestAssets/TestProjects/SlnFileWithReferencedProjects/App.sln b/src/sdk/test/TestAssets/TestProjects/SlnFileWithReferencedProjects/App.sln new file mode 100644 index 00000000000..58ea5666442 --- /dev/null +++ b/src/sdk/test/TestAssets/TestProjects/SlnFileWithReferencedProjects/App.sln @@ -0,0 +1,14 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/src/sdk/test/TestAssets/TestProjects/SlnFileWithReferencedProjects/App.slnx b/src/sdk/test/TestAssets/TestProjects/SlnFileWithReferencedProjects/App.slnx new file mode 100644 index 00000000000..ba788ff0d17 --- /dev/null +++ b/src/sdk/test/TestAssets/TestProjects/SlnFileWithReferencedProjects/App.slnx @@ -0,0 +1,2 @@ + + diff --git a/src/sdk/test/TestAssets/TestProjects/SlnFileWithReferencedProjects/B/B.csproj b/src/sdk/test/TestAssets/TestProjects/SlnFileWithReferencedProjects/B/B.csproj new file mode 100644 index 00000000000..ed9781c223a --- /dev/null +++ b/src/sdk/test/TestAssets/TestProjects/SlnFileWithReferencedProjects/B/B.csproj @@ -0,0 +1,10 @@ + + + + Exe + net10.0 + enable + enable + + + diff --git a/src/sdk/test/dotnet.Tests/CommandTests/Solution/Add/GivenDotnetSlnAdd.cs b/src/sdk/test/dotnet.Tests/CommandTests/Solution/Add/GivenDotnetSlnAdd.cs index 9f9c69a6a51..97d8f36769d 100644 --- a/src/sdk/test/dotnet.Tests/CommandTests/Solution/Add/GivenDotnetSlnAdd.cs +++ b/src/sdk/test/dotnet.Tests/CommandTests/Solution/Add/GivenDotnetSlnAdd.cs @@ -8,6 +8,7 @@ using Microsoft.VisualStudio.SolutionPersistence; using Microsoft.VisualStudio.SolutionPersistence.Model; using Microsoft.DotNet.Cli.Commands; +using System.Threading.Tasks; namespace Microsoft.DotNet.Cli.Sln.Add.Tests { @@ -36,6 +37,7 @@ dotnet solution add [...] [options] Options: --in-root Place project in root of the solution, rather than creating a solution folder. -s, --solution-folder The destination solution folder path to add the projects to. + --include-references Recursively add projects' ReferencedProjects to solution [default: True] -?, -h, --help Show command line help"; public GivenDotnetSlnAdd(ITestOutputHelper log) : base(log) @@ -1154,6 +1156,40 @@ public async Task WhenAddingProjectOutsideDirectoryItShouldNotAddSolutionFolders solution.SolutionFolders.Count.Should().Be(0); } + [Theory] + [InlineData("sln", ".sln", "--include-references=true")] + [InlineData("solution", ".sln", "--include-references=true")] + [InlineData("sln", ".slnx", "--include-references=true")] + [InlineData("solution", ".slnx", "--include-references=true")] + [InlineData("sln", ".sln", "--include-references=false")] + [InlineData("solution", ".sln", "--include-references=false")] + [InlineData("sln", ".slnx", "--include-references=false")] + [InlineData("solution", ".slnx", "--include-references=false")] + public async Task WhenSolutionIsPassedAProjectWithReferenceItAddsOtherProjectUnlessSpecified(string solutionCommand, string solutionExtension, string option) + { + var projectDirectory = _testAssetsManager + .CopyTestAsset("SlnFileWithReferencedProjects", identifier: $"GivenDotnetSlnAdd-{solutionCommand}") + .WithSource() + .Path; + var projectToAdd = Path.Combine("A", "A.csproj"); + var cmd = new DotnetCommand(Log) + .WithWorkingDirectory(Path.Join(projectDirectory)) + .Execute(solutionCommand, $"App{solutionExtension}", "add", projectToAdd, option); + cmd.Should().Pass(); + // Should have two projects + ISolutionSerializer serializer = SolutionSerializers.GetSerializerByMoniker(Path.Join(projectDirectory, $"App{solutionExtension}")); + SolutionModel solution = await serializer.OpenAsync(Path.Join(projectDirectory, $"App{solutionExtension}"), CancellationToken.None); + + if (option.Equals("--include-references=false")) // Option is true by default + { + solution.SolutionProjects.Count.Should().Be(1); + } + else + { + solution.SolutionProjects.Count.Should().Be(2); + } + } + private string GetExpectedSlnContents( string slnPath, string slnTemplateName, @@ -1237,6 +1273,8 @@ public void WhenSolutionIsPassedAsProjectWithSolutionFolderItPrintsSuggestionAnd { VerifySuggestionAndUsage(solutionCommand, "--solution-folder", solutionExtension); } + + private void VerifySuggestionAndUsage(string solutionCommand, string arguments, string solutionExtension) { var projectDirectory = _testAssetsManager diff --git a/src/sdk/test/dotnet.Tests/CompletionTests/snapshots/bash/DotnetCliSnapshotTests.VerifyCompletions.verified.sh b/src/sdk/test/dotnet.Tests/CompletionTests/snapshots/bash/DotnetCliSnapshotTests.VerifyCompletions.verified.sh index f3989e9b1bc..6e76bbce585 100644 --- a/src/sdk/test/dotnet.Tests/CompletionTests/snapshots/bash/DotnetCliSnapshotTests.VerifyCompletions.verified.sh +++ b/src/sdk/test/dotnet.Tests/CompletionTests/snapshots/bash/DotnetCliSnapshotTests.VerifyCompletions.verified.sh @@ -1421,7 +1421,7 @@ _testhost_solution_add() { prev="${COMP_WORDS[COMP_CWORD-1]}" COMPREPLY=() - opts="--in-root --solution-folder --help" + opts="--in-root --solution-folder --include-references --help" if [[ $COMP_CWORD == "$1" ]]; then COMPREPLY=( $(compgen -W "$opts" -- "$cur") ) @@ -1433,6 +1433,10 @@ _testhost_solution_add() { COMPREPLY=( $(compgen -W "False True" -- "$cur") ) return ;; + --include-references) + COMPREPLY=( $(compgen -W "False True" -- "$cur") ) + return + ;; esac COMPREPLY=( $(compgen -W "$opts" -- "$cur") ) diff --git a/src/sdk/test/dotnet.Tests/CompletionTests/snapshots/pwsh/DotnetCliSnapshotTests.VerifyCompletions.verified.ps1 b/src/sdk/test/dotnet.Tests/CompletionTests/snapshots/pwsh/DotnetCliSnapshotTests.VerifyCompletions.verified.ps1 index 41d7d01919e..cbac51733cd 100644 --- a/src/sdk/test/dotnet.Tests/CompletionTests/snapshots/pwsh/DotnetCliSnapshotTests.VerifyCompletions.verified.ps1 +++ b/src/sdk/test/dotnet.Tests/CompletionTests/snapshots/pwsh/DotnetCliSnapshotTests.VerifyCompletions.verified.ps1 @@ -840,6 +840,7 @@ Register-ArgumentCompleter -Native -CommandName 'testhost' -ScriptBlock { [CompletionResult]::new('--in-root', '--in-root', [CompletionResultType]::ParameterName, "Place project in root of the solution, rather than creating a solution folder.") [CompletionResult]::new('--solution-folder', '--solution-folder', [CompletionResultType]::ParameterName, "The destination solution folder path to add the projects to.") [CompletionResult]::new('--solution-folder', '-s', [CompletionResultType]::ParameterName, "The destination solution folder path to add the projects to.") + [CompletionResult]::new('--include-references', '--include-references', [CompletionResultType]::ParameterName, "Recursively add projects`' ReferencedProjects to solution") [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, "Show command line help.") [CompletionResult]::new('--help', '-h', [CompletionResultType]::ParameterName, "Show command line help.") ) diff --git a/src/sdk/test/dotnet.Tests/CompletionTests/snapshots/zsh/DotnetCliSnapshotTests.VerifyCompletions.verified.zsh b/src/sdk/test/dotnet.Tests/CompletionTests/snapshots/zsh/DotnetCliSnapshotTests.VerifyCompletions.verified.zsh index 758af444236..109551b4e1a 100644 --- a/src/sdk/test/dotnet.Tests/CompletionTests/snapshots/zsh/DotnetCliSnapshotTests.VerifyCompletions.verified.zsh +++ b/src/sdk/test/dotnet.Tests/CompletionTests/snapshots/zsh/DotnetCliSnapshotTests.VerifyCompletions.verified.zsh @@ -888,6 +888,7 @@ _testhost() { '--in-root=[Place project in root of the solution, rather than creating a solution folder.]: :((False\:"False" True\:"True" ))' \ '--solution-folder=[The destination solution folder path to add the projects to.]: : ' \ '-s=[The destination solution folder path to add the projects to.]: : ' \ + '--include-references=[Recursively add projects'\'' ReferencedProjects to solution]: :((False\:"False" True\:"True" ))' \ '--help[Show command line help.]' \ '-h[Show command line help.]' \ '*::PROJECT_PATH -- The paths to the projects to add to the solution.: ' \ diff --git a/src/source-manifest.json b/src/source-manifest.json index 407651f85d3..8bf536154b8 100644 --- a/src/source-manifest.json +++ b/src/source-manifest.json @@ -78,11 +78,11 @@ "commitSha": "695b1ef88c242c19a95c9f6a504a2376661762c2" }, { - "packageVersion": "6.15.0-preview.1.45", - "barId": 267243, + "packageVersion": "6.15.0-preview.1.47", + "barId": 267524, "path": "nuget-client", "remoteUri": "https://github.com/nuget/nuget.client", - "commitSha": "ebbb676221eaa2a8aed9cf89e8719b7139251e10" + "commitSha": "02b1c82c1e1855042556fdf5d205de501fd81590" }, { "packageVersion": "10.0.0-preview.25257.4", @@ -120,11 +120,11 @@ "commitSha": "3ba55042a88ef20d2aba4475d7622d3fa14c0527" }, { - "packageVersion": "10.0.100-preview.5.25258.26", - "barId": 267522, + "packageVersion": "10.0.100-preview.5.25259.8", + "barId": 267677, "path": "sdk", "remoteUri": "https://github.com/dotnet/sdk", - "commitSha": "c8d913c0a76d258b2858966139ba67b4ce7873a0" + "commitSha": "e928797f1d6e217a706e441352571787bff8f5d1" }, { "packageVersion": "10.0.622801", From 6629f5423bb0d4db21c549074c540f736f945a0b Mon Sep 17 00:00:00 2001 From: Rainer Sigwald Date: Mon, 12 May 2025 07:34:22 -0500 Subject: [PATCH 07/32] Yield MSBuild node during repo builds (#181) Co-authored-by: Viktor Hofer --- repo-projects/Directory.Build.targets | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/repo-projects/Directory.Build.targets b/repo-projects/Directory.Build.targets index 9e7b8b3a007..1bd7df2d255 100644 --- a/repo-projects/Directory.Build.targets +++ b/repo-projects/Directory.Build.targets @@ -501,7 +501,8 @@ + IgnoreStandardErrorWarningFormat="true" + YieldDuringToolExecution="true"> From f5d6cb4f2a429bed3999b119b1beff82047a8939 Mon Sep 17 00:00:00 2001 From: Nikola Milosavljevic Date: Mon, 12 May 2025 06:05:32 -0700 Subject: [PATCH 08/32] Fix intermittent poison test failures (#502) --- eng/PublishSourceBuild.props | 3 +- ...UpdateNuGetConfigPackageSourcesMappings.cs | 10 +- .../assets/PoisonTests/PoisonUsage.txt | 716 +++++++++--------- .../PackageSourceMappingsTests.cs | 2 + 4 files changed, 371 insertions(+), 360 deletions(-) diff --git a/eng/PublishSourceBuild.props b/eng/PublishSourceBuild.props index 7b23c20af25..4206e9ab288 100644 --- a/eng/PublishSourceBuild.props +++ b/eng/PublishSourceBuild.props @@ -9,7 +9,8 @@ Outputs="$(BaseIntermediateOutputPath)ReportPoisonUsage.complete"> - + + diff --git a/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/UpdateNuGetConfigPackageSourcesMappings.cs b/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/UpdateNuGetConfigPackageSourcesMappings.cs index 7d526832d0d..5a6c99ae3bc 100644 --- a/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/UpdateNuGetConfigPackageSourcesMappings.cs +++ b/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/UpdateNuGetConfigPackageSourcesMappings.cs @@ -319,7 +319,15 @@ private void DiscoverPackagesFromAllSourceBuildSources(XElement pkgSourcesElemen continue; } - string[] packages = Directory.GetFiles(path, "*.nupkg", SearchOption.AllDirectories); + // previously-source-built source contains SBRP packages in a subfolder. + // We do not want to enumerate those packages as they already exist in reference packages source. + // SBRP folder will be removed with https://github.com/dotnet/source-build/issues/4930 + SearchOption searchOption = + packageSource.Equals(PreviouslySourceBuiltSourceName) + ? SearchOption.TopDirectoryOnly + : SearchOption.AllDirectories; + + string[] packages = Directory.GetFiles(path, "*.nupkg", searchOption); Array.Sort(packages); foreach (string package in packages) { diff --git a/test/Microsoft.DotNet.SourceBuild.Tests/assets/PoisonTests/PoisonUsage.txt b/test/Microsoft.DotNet.SourceBuild.Tests/assets/PoisonTests/PoisonUsage.txt index cfb3eb3691e..dbe36e0d43b 100644 --- a/test/Microsoft.DotNet.SourceBuild.Tests/assets/PoisonTests/PoisonUsage.txt +++ b/test/Microsoft.DotNet.SourceBuild.Tests/assets/PoisonTests/PoisonUsage.txt @@ -1,713 +1,713 @@ - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - - AssemblyAttribute + + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly - + SourceBuildReferenceAssembly diff --git a/test/Microsoft.DotNet.Tests/PackageSourceMappingsTests.cs b/test/Microsoft.DotNet.Tests/PackageSourceMappingsTests.cs index 452063d9ee4..7b150dbf2c0 100755 --- a/test/Microsoft.DotNet.Tests/PackageSourceMappingsTests.cs +++ b/test/Microsoft.DotNet.Tests/PackageSourceMappingsTests.cs @@ -207,6 +207,8 @@ private PackageSourceMappingsSetup() // Generate previously-source-built packages GenerateNuGetPackage(PreviouslySourceBuiltSource, "PSB.Package1", "1.0.0"); GenerateNuGetPackage(PreviouslySourceBuiltSource, "PSB.Package2", "1.0.0"); + GenerateNuGetPackage(Path.Combine(PreviouslySourceBuiltSource, "Reference"), "Reference.Package1", "1.0.0"); + GenerateNuGetPackage(Path.Combine(PreviouslySourceBuiltSource, "Reference"), "Reference.Package2", "1.0.0"); // Generate reference packages GenerateNuGetPackage(ReferencePackagesSource, "Reference.Package1", "1.0.0"); From c994754e177a2a8fbc83a6f6b0e5938aa69c924a Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 12 May 2025 19:41:15 +0200 Subject: [PATCH 09/32] [main] Source code updates from dotnet/wpf (#510) Co-authored-by: dotnet-maestro[bot] --- prereqs/git-info/wpf.props | 6 +- src/source-manifest.json | 6 +- src/wpf/eng/Version.Details.xml | 102 +++++++++--------- src/wpf/eng/Versions.props | 46 ++++---- .../core-templates/steps/source-build.yml | 16 +-- src/wpf/eng/common/tools.sh | 6 +- src/wpf/global.json | 4 +- .../Windows/Generated/ContentElement.cs | 24 ++--- .../Windows/Generated/TextDecoration.cs | 10 +- .../Generated/TextDecorationCollection.cs | 20 ++-- .../Generated/TextDecorationLocation.cs | 2 +- .../Windows/Generated/TextDecorationUnit.cs | 2 +- .../System/Windows/Generated/UIElement.cs | 38 +++---- .../System/Windows/Generated/UIElement3D.cs | 18 ++-- .../Media/Animation/Generated/Animatable.cs | 6 +- .../BooleanAnimationUsingKeyFrames.cs | 14 +-- .../Generated/BooleanKeyFrameCollection.cs | 8 +- .../Animation/Generated/ByteAnimation.cs | 2 +- .../Generated/ByteAnimationUsingKeyFrames.cs | 14 +-- .../Generated/ByteKeyFrameCollection.cs | 8 +- .../Generated/CharAnimationUsingKeyFrames.cs | 14 +-- .../Generated/CharKeyFrameCollection.cs | 8 +- .../Animation/Generated/ColorAnimation.cs | 2 +- .../Generated/ColorAnimationUsingKeyFrames.cs | 14 +-- .../Generated/ColorKeyFrameCollection.cs | 8 +- .../Animation/Generated/DecimalAnimation.cs | 2 +- .../DecimalAnimationUsingKeyFrames.cs | 14 +-- .../Generated/DecimalKeyFrameCollection.cs | 8 +- .../Animation/Generated/DoubleAnimation.cs | 2 +- .../DoubleAnimationUsingKeyFrames.cs | 14 +-- .../Generated/DoubleKeyFrameCollection.cs | 8 +- .../Animation/Generated/Int16Animation.cs | 2 +- .../Generated/Int16AnimationUsingKeyFrames.cs | 14 +-- .../Generated/Int16KeyFrameCollection.cs | 8 +- .../Animation/Generated/Int32Animation.cs | 2 +- .../Generated/Int32AnimationUsingKeyFrames.cs | 14 +-- .../Generated/Int32KeyFrameCollection.cs | 8 +- .../Animation/Generated/Int64Animation.cs | 2 +- .../Generated/Int64AnimationUsingKeyFrames.cs | 14 +-- .../Generated/Int64KeyFrameCollection.cs | 8 +- .../Media/Animation/Generated/KeyFrames.cs | 42 ++++---- .../MatrixAnimationUsingKeyFrames.cs | 14 +-- .../Generated/MatrixKeyFrameCollection.cs | 8 +- .../ObjectAnimationUsingKeyFrames.cs | 14 +-- .../Generated/ObjectKeyFrameCollection.cs | 8 +- .../Animation/Generated/Point3DAnimation.cs | 2 +- .../Point3DAnimationUsingKeyFrames.cs | 14 +-- .../Generated/Point3DKeyFrameCollection.cs | 8 +- .../Animation/Generated/PointAnimation.cs | 2 +- .../Generated/PointAnimationUsingKeyFrames.cs | 14 +-- .../Generated/PointKeyFrameCollection.cs | 8 +- .../Generated/QuaternionAnimation.cs | 2 +- .../QuaternionAnimationUsingKeyFrames.cs | 14 +-- .../Generated/QuaternionKeyFrameCollection.cs | 8 +- .../Animation/Generated/RectAnimation.cs | 2 +- .../Generated/RectAnimationUsingKeyFrames.cs | 14 +-- .../Generated/RectKeyFrameCollection.cs | 8 +- .../Generated/Rotation3DAnimation.cs | 2 +- .../Rotation3DAnimationUsingKeyFrames.cs | 14 +-- .../Generated/Rotation3DKeyFrameCollection.cs | 8 +- .../Animation/Generated/SingleAnimation.cs | 2 +- .../SingleAnimationUsingKeyFrames.cs | 14 +-- .../Generated/SingleKeyFrameCollection.cs | 8 +- .../Animation/Generated/SizeAnimation.cs | 2 +- .../Generated/SizeAnimationUsingKeyFrames.cs | 14 +-- .../Generated/SizeKeyFrameCollection.cs | 8 +- .../StringAnimationUsingKeyFrames.cs | 14 +-- .../Generated/StringKeyFrameCollection.cs | 8 +- .../Animation/Generated/TimelineCollection.cs | 20 ++-- .../Animation/Generated/TimelineGroup.cs | 2 +- .../Animation/Generated/Vector3DAnimation.cs | 2 +- .../Vector3DAnimationUsingKeyFrames.cs | 14 +-- .../Generated/Vector3DKeyFrameCollection.cs | 8 +- .../Animation/Generated/VectorAnimation.cs | 2 +- .../VectorAnimationUsingKeyFrames.cs | 14 +-- .../Generated/VectorKeyFrameCollection.cs | 8 +- .../Effects/Generated/BevelBitmapEffect.cs | 10 +- .../Generated/BitmapEffectCollection.cs | 20 ++-- .../Effects/Generated/BitmapEffectGroup.cs | 2 +- .../Effects/Generated/BitmapEffectInput.cs | 6 +- .../Effects/Generated/BlurBitmapEffect.cs | 4 +- .../Media/Effects/Generated/BlurEffect.cs | 6 +- .../Generated/DropShadowBitmapEffect.cs | 12 +-- .../Effects/Generated/DropShadowEffect.cs | 12 +-- .../Media/Effects/Generated/EdgeProfile.cs | 2 +- .../Effects/Generated/EmbossBitmapEffect.cs | 4 +- .../Media/Effects/Generated/KernelType.cs | 2 +- .../Generated/OuterGlowBitmapEffect.cs | 8 +- .../Media/Effects/Generated/PixelShader.cs | 4 +- .../Media/Effects/Generated/RenderingBias.cs | 2 +- .../Media/Effects/Generated/ShaderEffect.cs | 2 +- .../Effects/Generated/ShaderRenderMode.cs | 2 +- .../Windows/Media/Generated/AlignmentX.cs | 2 +- .../Windows/Media/Generated/AlignmentY.cs | 2 +- .../Windows/Media/Generated/ArcSegment.cs | 10 +- .../Windows/Media/Generated/BezierSegment.cs | 6 +- .../Windows/Media/Generated/BitmapCache.cs | 6 +- .../Media/Generated/BitmapCacheBrush.cs | 10 +- .../Media/Generated/BitmapScalingMode.cs | 2 +- .../System/Windows/Media/Generated/Brush.cs | 6 +- .../Media/Generated/BrushMappingMode.cs | 2 +- .../Windows/Media/Generated/CachingHint.cs | 2 +- .../Windows/Media/Generated/ClearTypeHint.cs | 2 +- .../Media/Generated/ColorInterpolationMode.cs | 2 +- .../Media/Generated/CombinedGeometry.cs | 6 +- .../Windows/Media/Generated/DashStyle.cs | 6 +- .../Media/Generated/DoubleCollection.cs | 10 +- .../Windows/Media/Generated/DrawingBrush.cs | 2 +- .../Media/Generated/DrawingCollection.cs | 20 ++-- .../Windows/Media/Generated/DrawingGroup.cs | 18 ++-- .../Windows/Media/Generated/DrawingImage.cs | 2 +- .../Windows/Media/Generated/EdgeMode.cs | 2 +- .../Media/Generated/EllipseGeometry.cs | 6 +- .../Windows/Media/Generated/FillRule.cs | 2 +- .../Generated/GeneralTransformCollection.cs | 20 ++-- .../Media/Generated/GeneralTransformGroup.cs | 2 +- .../Windows/Media/Generated/Geometry.cs | 2 +- .../Media/Generated/GeometryCollection.cs | 20 ++-- .../Media/Generated/GeometryCombineMode.cs | 2 +- .../Media/Generated/GeometryDrawing.cs | 6 +- .../Windows/Media/Generated/GeometryGroup.cs | 6 +- .../Media/Generated/GlyphRunDrawing.cs | 4 +- .../Windows/Media/Generated/GradientBrush.cs | 8 +- .../Media/Generated/GradientSpreadMethod.cs | 2 +- .../Media/Generated/GradientStopCollection.cs | 22 ++-- .../Windows/Media/Generated/GuidelineSet.cs | 10 +- .../Windows/Media/Generated/ImageBrush.cs | 2 +- .../Windows/Media/Generated/ImageDrawing.cs | 4 +- .../Media/Generated/Int32Collection.cs | 10 +- .../Windows/Media/Generated/LineGeometry.cs | 4 +- .../Windows/Media/Generated/LineSegment.cs | 2 +- .../Media/Generated/LinearGradientBrush.cs | 4 +- .../Media/Generated/MatrixTransform.cs | 2 +- .../Windows/Media/Generated/MediaTimeline.cs | 2 +- .../Windows/Media/Generated/PathFigure.cs | 8 +- .../Media/Generated/PathFigureCollection.cs | 22 ++-- .../Windows/Media/Generated/PathGeometry.cs | 4 +- .../Windows/Media/Generated/PathSegment.cs | 4 +- .../Media/Generated/PathSegmentCollection.cs | 20 ++-- .../System/Windows/Media/Generated/Pen.cs | 16 +-- .../Windows/Media/Generated/PenLineCap.cs | 2 +- .../Windows/Media/Generated/PenLineJoin.cs | 2 +- .../Media/Generated/PointCollection.cs | 10 +- .../Media/Generated/PolyBezierSegment.cs | 2 +- .../Generated/PolyBezierSegmentFigureLogic.cs | 4 +- .../Media/Generated/PolyLineSegment.cs | 2 +- .../Generated/PolyLineSegmentFigureLogic.cs | 4 +- .../Generated/PolyQuadraticBezierSegment.cs | 2 +- .../PolyQuadraticBezierSegmentFigureLogic.cs | 4 +- .../Media/Generated/QuadraticBezierSegment.cs | 4 +- .../Media/Generated/RadialGradientBrush.cs | 8 +- .../Media/Generated/RectangleGeometry.cs | 6 +- .../Generated/RenderDataDrawingContext.cs | 62 +++++------ .../Media/Generated/RotateTransform.cs | 6 +- .../Windows/Media/Generated/Rotation.cs | 2 +- .../Windows/Media/Generated/ScaleTransform.cs | 8 +- .../Windows/Media/Generated/SkewTransform.cs | 8 +- .../Media/Generated/SolidColorBrush.cs | 2 +- .../Windows/Media/Generated/StreamGeometry.cs | 2 +- .../System/Windows/Media/Generated/Stretch.cs | 2 +- .../Windows/Media/Generated/SweepDirection.cs | 2 +- .../Windows/Media/Generated/TextEffect.cs | 10 +- .../Media/Generated/TextEffectCollection.cs | 20 ++-- .../Media/Generated/TextHintingMode.cs | 2 +- .../Media/Generated/TextRenderingMode.cs | 2 +- .../Windows/Media/Generated/TileBrush.cs | 16 +-- .../Windows/Media/Generated/TileMode.cs | 2 +- .../Windows/Media/Generated/ToleranceType.cs | 2 +- .../Media/Generated/TransformCollection.cs | 20 ++-- .../Windows/Media/Generated/TransformGroup.cs | 4 +- .../Media/Generated/TranslateTransform.cs | 4 +- .../Media/Generated/VectorCollection.cs | 10 +- .../Windows/Media/Generated/VideoDrawing.cs | 4 +- .../Windows/Media/Generated/VisualBrush.cs | 4 +- .../Media/Imaging/Generated/BitmapImage.cs | 26 ++--- .../Imaging/Generated/ColorConvertedBitmap.cs | 16 +-- .../Media/Imaging/Generated/CroppedBitmap.cs | 12 +-- .../Generated/FormatConvertedBitmap.cs | 16 +-- .../Imaging/Generated/TransformedBitmap.cs | 12 +-- .../Media3D/Generated/AxisAngleRotation3D.cs | 4 +- .../Windows/Media3D/Generated/Camera.cs | 2 +- .../Media3D/Generated/DiffuseMaterial.cs | 6 +- .../Media3D/Generated/DirectionalLight.cs | 2 +- .../Media3D/Generated/EmissiveMaterial.cs | 4 +- .../Generated/GeneralTransform3DCollection.cs | 20 ++-- .../Generated/GeneralTransform3DGroup.cs | 2 +- .../Media3D/Generated/GeometryModel3D.cs | 6 +- .../System/Windows/Media3D/Generated/Light.cs | 2 +- .../Media3D/Generated/MaterialCollection.cs | 20 ++-- .../Media3D/Generated/MaterialGroup.cs | 4 +- .../Windows/Media3D/Generated/Matrix3D.cs | 6 +- .../Windows/Media3D/Generated/MatrixCamera.cs | 4 +- .../Media3D/Generated/MatrixTransform3D.cs | 2 +- .../Media3D/Generated/MeshGeometry3D.cs | 16 +-- .../Windows/Media3D/Generated/Model3D.cs | 2 +- .../Media3D/Generated/Model3DCollection.cs | 20 ++-- .../Windows/Media3D/Generated/Model3DGroup.cs | 4 +- .../Media3D/Generated/OrthographicCamera.cs | 2 +- .../Media3D/Generated/PerspectiveCamera.cs | 2 +- .../Windows/Media3D/Generated/Point3D.cs | 6 +- .../Media3D/Generated/Point3DCollection.cs | 10 +- .../Windows/Media3D/Generated/Point4D.cs | 6 +- .../Media3D/Generated/PointLightBase.cs | 10 +- .../Media3D/Generated/ProjectionCamera.cs | 10 +- .../Windows/Media3D/Generated/Quaternion.cs | 6 +- .../Windows/Media3D/Generated/Rect3D.cs | 6 +- .../Windows/Media3D/Generated/Size3D.cs | 6 +- .../Media3D/Generated/SpecularMaterial.cs | 6 +- .../Windows/Media3D/Generated/SpotLight.cs | 6 +- .../Generated/Transform3DCollection.cs | 20 ++-- .../Media3D/Generated/Transform3DGroup.cs | 4 +- .../Windows/Media3D/Generated/Vector3D.cs | 6 +- .../Media3D/Generated/Vector3DCollection.cs | 10 +- .../Windows/Media3D/Generated/Visual3D.cs | 6 +- .../Generated/FrameworkContentElement.cs | 18 ++-- .../Windows/Generated/FrameworkElement.cs | 22 ++-- .../Media/Animation/Generated/KeyFrames.cs | 2 +- .../Animation/Generated/ThicknessAnimation.cs | 2 +- .../ThicknessAnimationUsingKeyFrames.cs | 14 +-- .../Generated/ThicknessKeyFrameCollection.cs | 8 +- .../Generated/AlignmentXValidation.cs | 2 +- .../Generated/AlignmentYValidation.cs | 2 +- .../Generated/BitmapScalingModeValidation.cs | 2 +- .../Generated/BrushMappingModeValidation.cs | 2 +- .../Generated/CachingHintValidation.cs | 2 +- .../Generated/ClearTypeHintValidation.cs | 2 +- .../ColorInterpolationModeValidation.cs | 2 +- .../Internal/Generated/EdgeModeValidation.cs | 2 +- .../Generated/EdgeProfileValidation.cs | 2 +- .../Internal/Generated/FillRuleValidation.cs | 2 +- .../GeometryCombineModeValidation.cs | 2 +- .../GradientSpreadMethodValidation.cs | 2 +- .../Generated/KernelTypeValidation.cs | 2 +- .../Generated/PenLineCapValidation.cs | 2 +- .../Generated/PenLineJoinValidation.cs | 2 +- .../Generated/RenderingBiasValidation.cs | 2 +- .../Internal/Generated/RotationValidation.cs | 2 +- .../Generated/ShaderRenderModeValidation.cs | 2 +- .../Internal/Generated/StretchValidation.cs | 2 +- .../Generated/SweepDirectionValidation.cs | 2 +- .../TextDecorationLocationValidation.cs | 2 +- .../Generated/TextDecorationUnitValidation.cs | 2 +- .../Generated/TextHintingModeValidation.cs | 2 +- .../Generated/TextRenderingModeValidation.cs | 2 +- .../Internal/Generated/TileModeValidation.cs | 2 +- .../Generated/ToleranceTypeValidation.cs | 2 +- .../Styles/PasswordBox.xaml | 2 +- .../Styles/RichTextBox.xaml | 4 +- .../Styles/TextBox.xaml | 10 +- .../Themes/Fluent.Dark.xaml | 16 +-- .../Themes/Fluent.HC.xaml | 16 +-- .../Themes/Fluent.Light.xaml | 16 +-- .../System/Windows/Generated/Int32Rect.cs | 6 +- .../System/Windows/Generated/Point.cs | 6 +- .../System/Windows/Generated/Rect.cs | 6 +- .../System/Windows/Generated/Size.cs | 6 +- .../System/Windows/Generated/Vector.cs | 6 +- .../System/Windows/Media/Generated/Matrix.cs | 6 +- .../mcg/ResourceModel/ResourceModel.cs | 2 +- .../WpfGfx/codegen/mcg/ResourceModel/Type.cs | 2 +- .../codegen/mcg/Runtime/FileCodeSink.cs | 2 +- .../WpfGfx/codegen/mcg/Runtime/XmlLoader.cs | 2 +- .../mcg/generators/AnimationBaseTemplate.cs | 2 +- .../mcg/generators/AnimationTemplate.cs | 2 +- .../AnimationUsingKeyFramesTemplate.cs | 16 +-- .../mcg/generators/CommandStructure.cs | 2 +- .../codegen/mcg/generators/DuceResource.cs | 2 +- .../WpfGfx/codegen/mcg/generators/Elements.cs | 12 +-- .../generators/FrameworkElementTemplate.cs | 24 ++--- .../mcg/generators/IAnimatableHelper.cs | 6 +- .../generators/KeyFrameCollectionTemplate.cs | 8 +- .../mcg/generators/KeyFrameTemplate.cs | 2 +- .../codegen/mcg/generators/ManagedEnum.cs | 14 +-- .../codegen/mcg/generators/ManagedResource.cs | 14 +-- .../codegen/mcg/generators/ManagedStruct.cs | 8 +- .../mcg/generators/PolySegmentTemplate.cs | 4 +- .../mcg/generators/commandprocessmessage.cs | 2 +- .../codegen/mcg/generators/renderdata.cs | 22 ++-- .../codegen/mcg/helpers/CodeGenHelpers.cs | 16 +-- .../codegen/mcg/helpers/CollectionHelper.cs | 6 +- .../core/resources/renderdata_generated.cpp | 2 +- .../core/uce/generated_process_message.inl | 2 +- 282 files changed, 1130 insertions(+), 1132 deletions(-) diff --git a/prereqs/git-info/wpf.props b/prereqs/git-info/wpf.props index 2b3d052d672..14a11be4743 100644 --- a/prereqs/git-info/wpf.props +++ b/prereqs/git-info/wpf.props @@ -1,8 +1,8 @@  - fdce5403b04a7098f08d074589c8b38cf9dc7bf8 - 20250508.7 - 10.0.0-preview.5.25258.7 + bcdf1d61342fed2c3ceafe3f692c58d4eaca70ba + 20250512.1 + 10.0.0-preview.5.25262.1 \ No newline at end of file diff --git a/src/source-manifest.json b/src/source-manifest.json index 8bf536154b8..eec3110d8c0 100644 --- a/src/source-manifest.json +++ b/src/source-manifest.json @@ -183,11 +183,11 @@ "commitSha": "dd514dc4d78cab740356965cb7dd121c3dbf865d" }, { - "packageVersion": "10.0.0-preview.5.25258.7", - "barId": 267472, + "packageVersion": "10.0.0-preview.5.25262.1", + "barId": 267850, "path": "wpf", "remoteUri": "https://github.com/dotnet/wpf", - "commitSha": "fdce5403b04a7098f08d074589c8b38cf9dc7bf8" + "commitSha": "bcdf1d61342fed2c3ceafe3f692c58d4eaca70ba" }, { "packageVersion": "10.0.0-preview.25258.1", diff --git a/src/wpf/eng/Version.Details.xml b/src/wpf/eng/Version.Details.xml index 38fd3f03822..12fd98b2b4a 100644 --- a/src/wpf/eng/Version.Details.xml +++ b/src/wpf/eng/Version.Details.xml @@ -1,112 +1,112 @@ - + - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb https://dev.azure.com/dnceng/internal/_git/dotnet-wpf-int 462eb030906d5cfcbcbbe22126855da1073cda15 - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb diff --git a/src/wpf/eng/Versions.props b/src/wpf/eng/Versions.props index 02ca15e49c3..2ad4c0d0824 100644 --- a/src/wpf/eng/Versions.props +++ b/src/wpf/eng/Versions.props @@ -19,35 +19,35 @@ dotnet/winforms is handling versions for the analyzers. --> $(MajorVersion).$(MinorVersion).0.0 - 10.0.0-beta.25257.101 - 10.0.0-beta.25257.101 - 10.0.0-beta.25257.101 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 4.6.0-preview4.19176.11 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 @@ -61,7 +61,7 @@ 9.0.0-beta.24053.1 - 10.0.0-beta.25257.101 + 10.0.0-beta.25260.104 diff --git a/src/wpf/eng/common/core-templates/steps/source-build.yml b/src/wpf/eng/common/core-templates/steps/source-build.yml index 325231215d5..f2a0f347fdd 100644 --- a/src/wpf/eng/common/core-templates/steps/source-build.yml +++ b/src/wpf/eng/common/core-templates/steps/source-build.yml @@ -38,14 +38,9 @@ steps: targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}' fi - runtimeOsArgs= - if [ '${{ parameters.platform.runtimeOS }}' != '' ]; then - runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}' - fi - - baseOsArgs= - if [ '${{ parameters.platform.baseOS }}' != '' ]; then - baseOsArgs='/p:BaseOS=${{ parameters.platform.baseOS }}' + baseRidArgs= + if [ '${{ parameters.platform.baseRID }}' != '' ]; then + baseRidArgs='/p:BaseRid=${{ parameters.platform.baseRID }}' fi portableBuildArgs= @@ -59,8 +54,7 @@ steps: ${{ parameters.platform.buildArguments }} \ $internalRuntimeDownloadArgs \ $targetRidArgs \ - $runtimeOsArgs \ - $baseOsArgs \ + $baseRidArgs \ $portableBuildArgs \ /p:DotNetBuildSourceOnly=true \ /p:DotNetBuildRepo=true \ @@ -71,7 +65,7 @@ steps: is1ESPipeline: ${{ parameters.is1ESPipeline }} args: displayName: Publish BuildLogs - targetPath: artifacts/log/$[ coalesce(variables._BuildConfig, 'Release') ]/ + targetPath: artifacts/log/${{ coalesce(variables._BuildConfig, 'Release') }} artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt) continueOnError: true condition: succeededOrFailed() diff --git a/src/wpf/eng/common/tools.sh b/src/wpf/eng/common/tools.sh index d51f300c772..cc007b1f15a 100755 --- a/src/wpf/eng/common/tools.sh +++ b/src/wpf/eng/common/tools.sh @@ -5,6 +5,9 @@ # CI mode - set to true on CI server for PR validation build or official build. ci=${ci:-false} +# Build mode +source_build=${source_build:-false} + # Set to true to use the pipelines logger which will enable Azure logging output. # https://github.com/Microsoft/azure-pipelines-tasks/blob/master/docs/authoring/commands.md # This flag is meant as a temporary opt-opt for the feature while validate it across @@ -58,7 +61,8 @@ use_installed_dotnet_cli=${use_installed_dotnet_cli:-true} dotnetInstallScriptVersion=${dotnetInstallScriptVersion:-'v1'} # True to use global NuGet cache instead of restoring packages to repository-local directory. -if [[ "$ci" == true ]]; then +# Keep in sync with NuGetPackageroot in Arcade SDK's RepositoryLayout.props. +if [[ "$ci" == true || "$source_build" == true ]]; then use_global_nuget_cache=${use_global_nuget_cache:-false} else use_global_nuget_cache=${use_global_nuget_cache:-true} diff --git a/src/wpf/global.json b/src/wpf/global.json index 5a3f3c6be13..c10e1a046e4 100644 --- a/src/wpf/global.json +++ b/src/wpf/global.json @@ -14,8 +14,8 @@ } }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25257.101", - "Microsoft.DotNet.Helix.Sdk": "10.0.0-beta.25257.101", + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25260.104", + "Microsoft.DotNet.Helix.Sdk": "10.0.0-beta.25260.104", "Microsoft.Build.NoTargets": "3.7.56" }, "sdk": { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Generated/ContentElement.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Generated/ContentElement.cs index 6c5299aa65e..cdb53e3de15 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Generated/ContentElement.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Generated/ContentElement.cs @@ -85,7 +85,7 @@ public void ApplyAnimationClock( if (IsSealed) { throw new InvalidOperationException(SR.Format(SR.IAnimatable_CantAnimateSealedDO, dp, this.GetType())); - } + } AnimationStorage.ApplyAnimationClock(this, dp, clock, handoffBehavior); } @@ -136,7 +136,7 @@ public void BeginAnimation(DependencyProperty dp, AnimationTimeline animation, H throw new ArgumentException(SR.Format(SR.Animation_DependencyPropertyIsNotAnimatable, dp.Name, this.GetType()), nameof(dp)); } - if ( animation != null + if (animation != null && !AnimationStorage.IsAnimationValid(dp, animation)) { throw new ArgumentException(SR.Format(SR.Animation_AnimationTimelineTypeMismatch, animation.GetType(), dp.Name, dp.PropertyType), nameof(animation)); @@ -150,7 +150,7 @@ public void BeginAnimation(DependencyProperty dp, AnimationTimeline animation, H if (IsSealed) { throw new InvalidOperationException(SR.Format(SR.IAnimatable_CantAnimateSealedDO, dp, this.GetType())); - } + } AnimationStorage.BeginAnimation(this, dp, animation, handoffBehavior); } @@ -524,7 +524,7 @@ public void AddHandler( EnsureEventHandlersStore(); EventHandlersStore.AddRoutedEventHandler(routedEvent, handler, handledEventsToo); - OnAddHandler (routedEvent, handler); + OnAddHandler(routedEvent, handler); } /// @@ -581,7 +581,7 @@ public void RemoveHandler(RoutedEvent routedEvent, Delegate handler) { store.RemoveRoutedEventHandler(routedEvent, handler); - OnRemoveHandler (routedEvent, handler); + OnRemoveHandler(routedEvent, handler); if (store.Count == 0) { @@ -638,7 +638,7 @@ public void AddToEventRoute(EventRoute route, RoutedEventArgs e) // Add all class listeners for this ContentElement while (classListeners != null) { - for(int i = 0; i < classListeners.Handlers.Length; i++) + for (int i = 0; i < classListeners.Handlers.Length; i++) { route.Add(this, classListeners.Handlers[i].Handler, classListeners.Handlers[i].InvokeHandledEventsToo); } @@ -687,7 +687,7 @@ internal EventHandlersStore EventHandlersStore { get { - if(!ReadFlag(CoreFlags.ExistsEventHandlersStore)) + if (!ReadFlag(CoreFlags.ExistsEventHandlersStore)) { return null; } @@ -2240,7 +2240,7 @@ protected internal virtual void OnTouchLeave(TouchEventArgs e) {} private static void IsMouseDirectlyOver_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e) { - ((ContentElement) d).RaiseIsMouseDirectlyOverChanged(e); + ((ContentElement)d).RaiseIsMouseDirectlyOverChanged(e); } /// @@ -2315,7 +2315,7 @@ internal void RaiseIsKeyboardFocusWithinChanged(DependencyPropertyChangedEventAr private static void IsMouseCaptured_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e) { - ((ContentElement) d).RaiseIsMouseCapturedChanged(e); + ((ContentElement)d).RaiseIsMouseCapturedChanged(e); } /// @@ -2380,7 +2380,7 @@ internal void RaiseIsMouseCaptureWithinChanged(DependencyPropertyChangedEventArg private static void IsStylusDirectlyOver_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e) { - ((ContentElement) d).RaiseIsStylusDirectlyOverChanged(e); + ((ContentElement)d).RaiseIsStylusDirectlyOverChanged(e); } /// @@ -2415,7 +2415,7 @@ private void RaiseIsStylusDirectlyOverChanged(DependencyPropertyChangedEventArgs private static void IsStylusCaptured_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e) { - ((ContentElement) d).RaiseIsStylusCapturedChanged(e); + ((ContentElement)d).RaiseIsStylusCapturedChanged(e); } /// @@ -2480,7 +2480,7 @@ internal void RaiseIsStylusCaptureWithinChanged(DependencyPropertyChangedEventAr private static void IsKeyboardFocused_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e) { - ((ContentElement) d).RaiseIsKeyboardFocusedChanged(e); + ((ContentElement)d).RaiseIsKeyboardFocusedChanged(e); } /// diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Generated/TextDecoration.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Generated/TextDecoration.cs index 5fa2b3336f7..76f326234ce 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Generated/TextDecoration.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Generated/TextDecoration.cs @@ -67,7 +67,7 @@ public Pen Pen { get { - return (Pen) GetValue(PenProperty); + return (Pen)GetValue(PenProperty); } set { @@ -83,7 +83,7 @@ public double PenOffset { get { - return (double) GetValue(PenOffsetProperty); + return (double)GetValue(PenOffsetProperty); } set { @@ -99,7 +99,7 @@ public TextDecorationUnit PenOffsetUnit { get { - return (TextDecorationUnit) GetValue(PenOffsetUnitProperty); + return (TextDecorationUnit)GetValue(PenOffsetUnitProperty); } set { @@ -115,7 +115,7 @@ public TextDecorationUnit PenThicknessUnit { get { - return (TextDecorationUnit) GetValue(PenThicknessUnitProperty); + return (TextDecorationUnit)GetValue(PenThicknessUnitProperty); } set { @@ -131,7 +131,7 @@ public TextDecorationLocation Location { get { - return (TextDecorationLocation) GetValue(LocationProperty); + return (TextDecorationLocation)GetValue(LocationProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Generated/TextDecorationCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Generated/TextDecorationCollection.cs index c94751a7844..63ae156e705 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Generated/TextDecorationCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Generated/TextDecorationCollection.cs @@ -474,10 +474,10 @@ internal override void OnInheritanceContextChangedCore(EventArgs args) { base.OnInheritanceContextChangedCore(args); - for (int i=0; i protected override void CloneCore(Freezable source) { - TextDecorationCollection sourceTextDecorationCollection = (TextDecorationCollection) source; + TextDecorationCollection sourceTextDecorationCollection = (TextDecorationCollection)source; base.CloneCore(source); @@ -580,7 +580,7 @@ protected override void CloneCore(Freezable source) for (int i = 0; i < count; i++) { - TextDecoration newValue = (TextDecoration) sourceTextDecorationCollection._collection[i].Clone(); + TextDecoration newValue = (TextDecoration)sourceTextDecorationCollection._collection[i].Clone(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); @@ -592,7 +592,7 @@ protected override void CloneCore(Freezable source) /// protected override void CloneCurrentValueCore(Freezable source) { - TextDecorationCollection sourceTextDecorationCollection = (TextDecorationCollection) source; + TextDecorationCollection sourceTextDecorationCollection = (TextDecorationCollection)source; base.CloneCurrentValueCore(source); @@ -602,7 +602,7 @@ protected override void CloneCurrentValueCore(Freezable source) for (int i = 0; i < count; i++) { - TextDecoration newValue = (TextDecoration) sourceTextDecorationCollection._collection[i].CloneCurrentValue(); + TextDecoration newValue = (TextDecoration)sourceTextDecorationCollection._collection[i].CloneCurrentValue(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); @@ -614,7 +614,7 @@ protected override void CloneCurrentValueCore(Freezable source) /// protected override void GetAsFrozenCore(Freezable source) { - TextDecorationCollection sourceTextDecorationCollection = (TextDecorationCollection) source; + TextDecorationCollection sourceTextDecorationCollection = (TextDecorationCollection)source; base.GetAsFrozenCore(source); @@ -624,7 +624,7 @@ protected override void GetAsFrozenCore(Freezable source) for (int i = 0; i < count; i++) { - TextDecoration newValue = (TextDecoration) sourceTextDecorationCollection._collection[i].GetAsFrozen(); + TextDecoration newValue = (TextDecoration)sourceTextDecorationCollection._collection[i].GetAsFrozen(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); @@ -636,7 +636,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - TextDecorationCollection sourceTextDecorationCollection = (TextDecorationCollection) source; + TextDecorationCollection sourceTextDecorationCollection = (TextDecorationCollection)source; base.GetCurrentValueAsFrozenCore(source); @@ -646,7 +646,7 @@ protected override void GetCurrentValueAsFrozenCore(Freezable source) for (int i = 0; i < count; i++) { - TextDecoration newValue = (TextDecoration) sourceTextDecorationCollection._collection[i].GetCurrentValueAsFrozen(); + TextDecoration newValue = (TextDecoration)sourceTextDecorationCollection._collection[i].GetCurrentValueAsFrozen(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Generated/TextDecorationLocation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Generated/TextDecorationLocation.cs index 1c2963846db..eb327d72bfc 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Generated/TextDecorationLocation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Generated/TextDecorationLocation.cs @@ -35,5 +35,5 @@ public enum TextDecorationLocation /// Baseline - Baseline position /// Baseline = 3, - } + } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Generated/TextDecorationUnit.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Generated/TextDecorationUnit.cs index 5e2f5e01975..f44cbcc468a 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Generated/TextDecorationUnit.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Generated/TextDecorationUnit.cs @@ -30,5 +30,5 @@ public enum TextDecorationUnit /// Pixel - The unit is one pixel /// Pixel = 2, - } + } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Generated/UIElement.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Generated/UIElement.cs index 100ff155da4..fb1f6f2432e 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Generated/UIElement.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Generated/UIElement.cs @@ -85,7 +85,7 @@ public void ApplyAnimationClock( if (IsSealed) { throw new InvalidOperationException(SR.Format(SR.IAnimatable_CantAnimateSealedDO, dp, this.GetType())); - } + } AnimationStorage.ApplyAnimationClock(this, dp, clock, handoffBehavior); } @@ -136,7 +136,7 @@ public void BeginAnimation(DependencyProperty dp, AnimationTimeline animation, H throw new ArgumentException(SR.Format(SR.Animation_DependencyPropertyIsNotAnimatable, dp.Name, this.GetType()), nameof(dp)); } - if ( animation != null + if (animation != null && !AnimationStorage.IsAnimationValid(dp, animation)) { throw new ArgumentException(SR.Format(SR.Animation_AnimationTimelineTypeMismatch, animation.GetType(), dp.Name, dp.PropertyType), nameof(animation)); @@ -150,7 +150,7 @@ public void BeginAnimation(DependencyProperty dp, AnimationTimeline animation, H if (IsSealed) { throw new InvalidOperationException(SR.Format(SR.IAnimatable_CantAnimateSealedDO, dp, this.GetType())); - } + } AnimationStorage.BeginAnimation(this, dp, animation, handoffBehavior); } @@ -524,7 +524,7 @@ public void AddHandler( EnsureEventHandlersStore(); EventHandlersStore.AddRoutedEventHandler(routedEvent, handler, handledEventsToo); - OnAddHandler (routedEvent, handler); + OnAddHandler(routedEvent, handler); } /// @@ -581,7 +581,7 @@ public void RemoveHandler(RoutedEvent routedEvent, Delegate handler) { store.RemoveRoutedEventHandler(routedEvent, handler); - OnRemoveHandler (routedEvent, handler); + OnRemoveHandler(routedEvent, handler); if (store.Count == 0) { @@ -638,7 +638,7 @@ public void AddToEventRoute(EventRoute route, RoutedEventArgs e) // Add all class listeners for this UIElement while (classListeners != null) { - for(int i = 0; i < classListeners.Handlers.Length; i++) + for (int i = 0; i < classListeners.Handlers.Length; i++) { route.Add(this, classListeners.Handlers[i].Handler, classListeners.Handlers[i].InvokeHandledEventsToo); } @@ -687,7 +687,7 @@ internal EventHandlersStore EventHandlersStore { get { - if(!ReadFlag(CoreFlags.ExistsEventHandlersStore)) + if (!ReadFlag(CoreFlags.ExistsEventHandlersStore)) { return null; } @@ -807,7 +807,7 @@ internal static void RegisterEvents(Type type) private static void OnPreviewMouseDownThunk(object sender, MouseButtonEventArgs e) { - if(!e.Handled) + if (!e.Handled) { UIElement uie = sender as UIElement; @@ -836,12 +836,12 @@ private static void OnPreviewMouseDownThunk(object sender, MouseButtonEventArgs private static void OnMouseDownThunk(object sender, MouseButtonEventArgs e) { - if(!e.Handled) + if (!e.Handled) { CommandManager.TranslateInput((IInputElement)sender, e); } - if(!e.Handled) + if (!e.Handled) { UIElement uie = sender as UIElement; @@ -870,7 +870,7 @@ private static void OnMouseDownThunk(object sender, MouseButtonEventArgs e) private static void OnPreviewMouseUpThunk(object sender, MouseButtonEventArgs e) { - if(!e.Handled) + if (!e.Handled) { UIElement uie = sender as UIElement; @@ -899,7 +899,7 @@ private static void OnPreviewMouseUpThunk(object sender, MouseButtonEventArgs e) private static void OnMouseUpThunk(object sender, MouseButtonEventArgs e) { - if(!e.Handled) + if (!e.Handled) { UIElement uie = sender as UIElement; @@ -1207,7 +1207,7 @@ private static void OnMouseWheelThunk(object sender, MouseWheelEventArgs e) CommandManager.TranslateInput((IInputElement)sender, e); - if(!e.Handled) + if (!e.Handled) { UIElement uie = sender as UIElement; @@ -1937,7 +1937,7 @@ private static void OnKeyDownThunk(object sender, KeyEventArgs e) CommandManager.TranslateInput((IInputElement)sender, e); - if(!e.Handled) + if (!e.Handled) { UIElement uie = sender as UIElement; @@ -4206,7 +4206,7 @@ protected virtual void OnTouchLeave(TouchEventArgs e) {} private static void IsMouseDirectlyOver_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e) { - ((UIElement) d).RaiseIsMouseDirectlyOverChanged(e); + ((UIElement)d).RaiseIsMouseDirectlyOverChanged(e); } /// @@ -4342,7 +4342,7 @@ internal void RaiseIsKeyboardFocusWithinChanged(DependencyPropertyChangedEventAr private static void IsMouseCaptured_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e) { - ((UIElement) d).RaiseIsMouseCapturedChanged(e); + ((UIElement)d).RaiseIsMouseCapturedChanged(e); } /// @@ -4444,7 +4444,7 @@ internal void RaiseIsMouseCaptureWithinChanged(DependencyPropertyChangedEventArg private static void IsStylusDirectlyOver_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e) { - ((UIElement) d).RaiseIsStylusDirectlyOverChanged(e); + ((UIElement)d).RaiseIsStylusDirectlyOverChanged(e); } /// @@ -4498,7 +4498,7 @@ private void RaiseIsStylusDirectlyOverChanged(DependencyPropertyChangedEventArgs private static void IsStylusCaptured_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e) { - ((UIElement) d).RaiseIsStylusCapturedChanged(e); + ((UIElement)d).RaiseIsStylusCapturedChanged(e); } /// @@ -4600,7 +4600,7 @@ internal void RaiseIsStylusCaptureWithinChanged(DependencyPropertyChangedEventAr private static void IsKeyboardFocused_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e) { - ((UIElement) d).RaiseIsKeyboardFocusedChanged(e); + ((UIElement)d).RaiseIsKeyboardFocusedChanged(e); } /// diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Generated/UIElement3D.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Generated/UIElement3D.cs index 59cd7efeca4..2ba9a55b1e8 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Generated/UIElement3D.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Generated/UIElement3D.cs @@ -330,7 +330,7 @@ public void AddHandler( EnsureEventHandlersStore(); EventHandlersStore.AddRoutedEventHandler(routedEvent, handler, handledEventsToo); - OnAddHandler (routedEvent, handler); + OnAddHandler(routedEvent, handler); } /// @@ -387,7 +387,7 @@ public void RemoveHandler(RoutedEvent routedEvent, Delegate handler) { store.RemoveRoutedEventHandler(routedEvent, handler); - OnRemoveHandler (routedEvent, handler); + OnRemoveHandler(routedEvent, handler); if (store.Count == 0) { @@ -444,7 +444,7 @@ public void AddToEventRoute(EventRoute route, RoutedEventArgs e) // Add all class listeners for this UIElement3D while (classListeners != null) { - for(int i = 0; i < classListeners.Handlers.Length; i++) + for (int i = 0; i < classListeners.Handlers.Length; i++) { route.Add(this, classListeners.Handlers[i].Handler, classListeners.Handlers[i].InvokeHandledEventsToo); } @@ -493,7 +493,7 @@ internal EventHandlersStore EventHandlersStore { get { - if(!ReadFlag(CoreFlags.ExistsEventHandlersStore)) + if (!ReadFlag(CoreFlags.ExistsEventHandlersStore)) { return null; } @@ -1970,7 +1970,7 @@ protected internal virtual void OnTouchLeave(TouchEventArgs e) {} private static void IsMouseDirectlyOver_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e) { - ((UIElement3D) d).RaiseIsMouseDirectlyOverChanged(e); + ((UIElement3D)d).RaiseIsMouseDirectlyOverChanged(e); } /// @@ -2045,7 +2045,7 @@ internal void RaiseIsKeyboardFocusWithinChanged(DependencyPropertyChangedEventAr private static void IsMouseCaptured_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e) { - ((UIElement3D) d).RaiseIsMouseCapturedChanged(e); + ((UIElement3D)d).RaiseIsMouseCapturedChanged(e); } /// @@ -2110,7 +2110,7 @@ internal void RaiseIsMouseCaptureWithinChanged(DependencyPropertyChangedEventArg private static void IsStylusDirectlyOver_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e) { - ((UIElement3D) d).RaiseIsStylusDirectlyOverChanged(e); + ((UIElement3D)d).RaiseIsStylusDirectlyOverChanged(e); } /// @@ -2145,7 +2145,7 @@ private void RaiseIsStylusDirectlyOverChanged(DependencyPropertyChangedEventArgs private static void IsStylusCaptured_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e) { - ((UIElement3D) d).RaiseIsStylusCapturedChanged(e); + ((UIElement3D)d).RaiseIsStylusCapturedChanged(e); } /// @@ -2210,7 +2210,7 @@ internal void RaiseIsStylusCaptureWithinChanged(DependencyPropertyChangedEventAr private static void IsKeyboardFocused_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e) { - ((UIElement3D) d).RaiseIsKeyboardFocusedChanged(e); + ((UIElement3D)d).RaiseIsKeyboardFocusedChanged(e); } /// diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Animatable.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Animatable.cs index cdb3428f402..fd060194e6a 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Animatable.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Animatable.cs @@ -84,7 +84,7 @@ public void ApplyAnimationClock( if (IsSealed) { throw new InvalidOperationException(SR.Format(SR.IAnimatable_CantAnimateSealedDO, dp, this.GetType())); - } + } AnimationStorage.ApplyAnimationClock(this, dp, clock, handoffBehavior); } @@ -135,7 +135,7 @@ public void BeginAnimation(DependencyProperty dp, AnimationTimeline animation, H throw new ArgumentException(SR.Format(SR.Animation_DependencyPropertyIsNotAnimatable, dp.Name, this.GetType()), nameof(dp)); } - if ( animation != null + if (animation != null && !AnimationStorage.IsAnimationValid(dp, animation)) { throw new ArgumentException(SR.Format(SR.Animation_AnimationTimelineTypeMismatch, animation.GetType(), dp.Name, dp.PropertyType), nameof(animation)); @@ -149,7 +149,7 @@ public void BeginAnimation(DependencyProperty dp, AnimationTimeline animation, H if (IsSealed) { throw new InvalidOperationException(SR.Format(SR.IAnimatable_CantAnimateSealedDO, dp, this.GetType())); - } + } AnimationStorage.BeginAnimation(this, dp, animation, handoffBehavior); } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/BooleanAnimationUsingKeyFrames.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/BooleanAnimationUsingKeyFrames.cs index 2678fad576b..fa69138577e 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/BooleanAnimationUsingKeyFrames.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/BooleanAnimationUsingKeyFrames.cs @@ -112,7 +112,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - BooleanAnimationUsingKeyFrames sourceAnimation = (BooleanAnimationUsingKeyFrames) sourceFreezable; + BooleanAnimationUsingKeyFrames sourceAnimation = (BooleanAnimationUsingKeyFrames)sourceFreezable; base.CloneCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -123,7 +123,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - BooleanAnimationUsingKeyFrames sourceAnimation = (BooleanAnimationUsingKeyFrames) sourceFreezable; + BooleanAnimationUsingKeyFrames sourceAnimation = (BooleanAnimationUsingKeyFrames)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -134,7 +134,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable source) { - BooleanAnimationUsingKeyFrames sourceAnimation = (BooleanAnimationUsingKeyFrames) source; + BooleanAnimationUsingKeyFrames sourceAnimation = (BooleanAnimationUsingKeyFrames)source; base.GetAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -145,7 +145,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - BooleanAnimationUsingKeyFrames sourceAnimation = (BooleanAnimationUsingKeyFrames) source; + BooleanAnimationUsingKeyFrames sourceAnimation = (BooleanAnimationUsingKeyFrames)source; base.GetCurrentValueAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -722,11 +722,11 @@ private void ResolveKeyTimes() || type == KeyTimeType.TimeSpan) { break; - } + } else if (type == KeyTimeType.Paced) { hasPacedKeyTimes = true; - } + } } Debug.Assert(index < keyFrameCount, @@ -892,7 +892,7 @@ private void ResolvePacedKeyTimes() { index++; } - } + } while (index < maxKeyFrameIndex); } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/BooleanKeyFrameCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/BooleanKeyFrameCollection.cs index 257a6cf96ab..a80d2ce8fa1 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/BooleanKeyFrameCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/BooleanKeyFrameCollection.cs @@ -90,7 +90,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - BooleanKeyFrameCollection sourceCollection = (BooleanKeyFrameCollection) sourceFreezable; + BooleanKeyFrameCollection sourceCollection = (BooleanKeyFrameCollection)sourceFreezable; base.CloneCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -111,7 +111,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - BooleanKeyFrameCollection sourceCollection = (BooleanKeyFrameCollection) sourceFreezable; + BooleanKeyFrameCollection sourceCollection = (BooleanKeyFrameCollection)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -132,7 +132,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable sourceFreezable) { - BooleanKeyFrameCollection sourceCollection = (BooleanKeyFrameCollection) sourceFreezable; + BooleanKeyFrameCollection sourceCollection = (BooleanKeyFrameCollection)sourceFreezable; base.GetAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -153,7 +153,7 @@ protected override void GetAsFrozenCore(Freezable sourceFreezable) /// protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable) { - BooleanKeyFrameCollection sourceCollection = (BooleanKeyFrameCollection) sourceFreezable; + BooleanKeyFrameCollection sourceCollection = (BooleanKeyFrameCollection)sourceFreezable; base.GetCurrentValueAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ByteAnimation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ByteAnimation.cs index 9a94c45d3b7..de2a1983d2c 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ByteAnimation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ByteAnimation.cs @@ -229,7 +229,7 @@ protected override Byte GetCurrentValueCore(Byte defaultOriginValue, Byte defaul bool validateOrigin = false; bool validateDestination = false; - switch(_animationType) + switch (_animationType) { case AnimationType.Automatic: diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ByteAnimationUsingKeyFrames.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ByteAnimationUsingKeyFrames.cs index 4e6fff8093d..270a061924f 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ByteAnimationUsingKeyFrames.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ByteAnimationUsingKeyFrames.cs @@ -112,7 +112,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - ByteAnimationUsingKeyFrames sourceAnimation = (ByteAnimationUsingKeyFrames) sourceFreezable; + ByteAnimationUsingKeyFrames sourceAnimation = (ByteAnimationUsingKeyFrames)sourceFreezable; base.CloneCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -123,7 +123,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - ByteAnimationUsingKeyFrames sourceAnimation = (ByteAnimationUsingKeyFrames) sourceFreezable; + ByteAnimationUsingKeyFrames sourceAnimation = (ByteAnimationUsingKeyFrames)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -134,7 +134,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable source) { - ByteAnimationUsingKeyFrames sourceAnimation = (ByteAnimationUsingKeyFrames) source; + ByteAnimationUsingKeyFrames sourceAnimation = (ByteAnimationUsingKeyFrames)source; base.GetAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -145,7 +145,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - ByteAnimationUsingKeyFrames sourceAnimation = (ByteAnimationUsingKeyFrames) source; + ByteAnimationUsingKeyFrames sourceAnimation = (ByteAnimationUsingKeyFrames)source; base.GetCurrentValueAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -814,11 +814,11 @@ private void ResolveKeyTimes() || type == KeyTimeType.TimeSpan) { break; - } + } else if (type == KeyTimeType.Paced) { hasPacedKeyTimes = true; - } + } } Debug.Assert(index < keyFrameCount, @@ -984,7 +984,7 @@ private void ResolvePacedKeyTimes() { index++; } - } + } while (index < maxKeyFrameIndex); } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ByteKeyFrameCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ByteKeyFrameCollection.cs index 3e571db386e..5c24df3f7e6 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ByteKeyFrameCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ByteKeyFrameCollection.cs @@ -90,7 +90,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - ByteKeyFrameCollection sourceCollection = (ByteKeyFrameCollection) sourceFreezable; + ByteKeyFrameCollection sourceCollection = (ByteKeyFrameCollection)sourceFreezable; base.CloneCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -111,7 +111,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - ByteKeyFrameCollection sourceCollection = (ByteKeyFrameCollection) sourceFreezable; + ByteKeyFrameCollection sourceCollection = (ByteKeyFrameCollection)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -132,7 +132,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable sourceFreezable) { - ByteKeyFrameCollection sourceCollection = (ByteKeyFrameCollection) sourceFreezable; + ByteKeyFrameCollection sourceCollection = (ByteKeyFrameCollection)sourceFreezable; base.GetAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -153,7 +153,7 @@ protected override void GetAsFrozenCore(Freezable sourceFreezable) /// protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable) { - ByteKeyFrameCollection sourceCollection = (ByteKeyFrameCollection) sourceFreezable; + ByteKeyFrameCollection sourceCollection = (ByteKeyFrameCollection)sourceFreezable; base.GetCurrentValueAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/CharAnimationUsingKeyFrames.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/CharAnimationUsingKeyFrames.cs index ed87735d039..dec2fc75cdb 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/CharAnimationUsingKeyFrames.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/CharAnimationUsingKeyFrames.cs @@ -112,7 +112,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - CharAnimationUsingKeyFrames sourceAnimation = (CharAnimationUsingKeyFrames) sourceFreezable; + CharAnimationUsingKeyFrames sourceAnimation = (CharAnimationUsingKeyFrames)sourceFreezable; base.CloneCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -123,7 +123,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - CharAnimationUsingKeyFrames sourceAnimation = (CharAnimationUsingKeyFrames) sourceFreezable; + CharAnimationUsingKeyFrames sourceAnimation = (CharAnimationUsingKeyFrames)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -134,7 +134,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable source) { - CharAnimationUsingKeyFrames sourceAnimation = (CharAnimationUsingKeyFrames) source; + CharAnimationUsingKeyFrames sourceAnimation = (CharAnimationUsingKeyFrames)source; base.GetAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -145,7 +145,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - CharAnimationUsingKeyFrames sourceAnimation = (CharAnimationUsingKeyFrames) source; + CharAnimationUsingKeyFrames sourceAnimation = (CharAnimationUsingKeyFrames)source; base.GetCurrentValueAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -722,11 +722,11 @@ private void ResolveKeyTimes() || type == KeyTimeType.TimeSpan) { break; - } + } else if (type == KeyTimeType.Paced) { hasPacedKeyTimes = true; - } + } } Debug.Assert(index < keyFrameCount, @@ -892,7 +892,7 @@ private void ResolvePacedKeyTimes() { index++; } - } + } while (index < maxKeyFrameIndex); } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/CharKeyFrameCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/CharKeyFrameCollection.cs index dc0a7bd9d5a..fd41654f737 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/CharKeyFrameCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/CharKeyFrameCollection.cs @@ -90,7 +90,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - CharKeyFrameCollection sourceCollection = (CharKeyFrameCollection) sourceFreezable; + CharKeyFrameCollection sourceCollection = (CharKeyFrameCollection)sourceFreezable; base.CloneCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -111,7 +111,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - CharKeyFrameCollection sourceCollection = (CharKeyFrameCollection) sourceFreezable; + CharKeyFrameCollection sourceCollection = (CharKeyFrameCollection)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -132,7 +132,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable sourceFreezable) { - CharKeyFrameCollection sourceCollection = (CharKeyFrameCollection) sourceFreezable; + CharKeyFrameCollection sourceCollection = (CharKeyFrameCollection)sourceFreezable; base.GetAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -153,7 +153,7 @@ protected override void GetAsFrozenCore(Freezable sourceFreezable) /// protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable) { - CharKeyFrameCollection sourceCollection = (CharKeyFrameCollection) sourceFreezable; + CharKeyFrameCollection sourceCollection = (CharKeyFrameCollection)sourceFreezable; base.GetCurrentValueAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ColorAnimation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ColorAnimation.cs index 02bd39bce19..296fa9bf487 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ColorAnimation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ColorAnimation.cs @@ -229,7 +229,7 @@ protected override Color GetCurrentValueCore(Color defaultOriginValue, Color def bool validateOrigin = false; bool validateDestination = false; - switch(_animationType) + switch (_animationType) { case AnimationType.Automatic: diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ColorAnimationUsingKeyFrames.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ColorAnimationUsingKeyFrames.cs index 278458b00cd..83185840fe1 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ColorAnimationUsingKeyFrames.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ColorAnimationUsingKeyFrames.cs @@ -112,7 +112,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - ColorAnimationUsingKeyFrames sourceAnimation = (ColorAnimationUsingKeyFrames) sourceFreezable; + ColorAnimationUsingKeyFrames sourceAnimation = (ColorAnimationUsingKeyFrames)sourceFreezable; base.CloneCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -123,7 +123,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - ColorAnimationUsingKeyFrames sourceAnimation = (ColorAnimationUsingKeyFrames) sourceFreezable; + ColorAnimationUsingKeyFrames sourceAnimation = (ColorAnimationUsingKeyFrames)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -134,7 +134,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable source) { - ColorAnimationUsingKeyFrames sourceAnimation = (ColorAnimationUsingKeyFrames) source; + ColorAnimationUsingKeyFrames sourceAnimation = (ColorAnimationUsingKeyFrames)source; base.GetAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -145,7 +145,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - ColorAnimationUsingKeyFrames sourceAnimation = (ColorAnimationUsingKeyFrames) source; + ColorAnimationUsingKeyFrames sourceAnimation = (ColorAnimationUsingKeyFrames)source; base.GetCurrentValueAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -814,11 +814,11 @@ private void ResolveKeyTimes() || type == KeyTimeType.TimeSpan) { break; - } + } else if (type == KeyTimeType.Paced) { hasPacedKeyTimes = true; - } + } } Debug.Assert(index < keyFrameCount, @@ -984,7 +984,7 @@ private void ResolvePacedKeyTimes() { index++; } - } + } while (index < maxKeyFrameIndex); } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ColorKeyFrameCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ColorKeyFrameCollection.cs index eed2b9e9d5b..84f377b99dc 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ColorKeyFrameCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ColorKeyFrameCollection.cs @@ -90,7 +90,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - ColorKeyFrameCollection sourceCollection = (ColorKeyFrameCollection) sourceFreezable; + ColorKeyFrameCollection sourceCollection = (ColorKeyFrameCollection)sourceFreezable; base.CloneCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -111,7 +111,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - ColorKeyFrameCollection sourceCollection = (ColorKeyFrameCollection) sourceFreezable; + ColorKeyFrameCollection sourceCollection = (ColorKeyFrameCollection)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -132,7 +132,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable sourceFreezable) { - ColorKeyFrameCollection sourceCollection = (ColorKeyFrameCollection) sourceFreezable; + ColorKeyFrameCollection sourceCollection = (ColorKeyFrameCollection)sourceFreezable; base.GetAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -153,7 +153,7 @@ protected override void GetAsFrozenCore(Freezable sourceFreezable) /// protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable) { - ColorKeyFrameCollection sourceCollection = (ColorKeyFrameCollection) sourceFreezable; + ColorKeyFrameCollection sourceCollection = (ColorKeyFrameCollection)sourceFreezable; base.GetCurrentValueAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/DecimalAnimation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/DecimalAnimation.cs index 5ffeccf0cfe..9b8145f0d32 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/DecimalAnimation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/DecimalAnimation.cs @@ -229,7 +229,7 @@ protected override Decimal GetCurrentValueCore(Decimal defaultOriginValue, Decim bool validateOrigin = false; bool validateDestination = false; - switch(_animationType) + switch (_animationType) { case AnimationType.Automatic: diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/DecimalAnimationUsingKeyFrames.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/DecimalAnimationUsingKeyFrames.cs index e4c409d294a..b019778c1a9 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/DecimalAnimationUsingKeyFrames.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/DecimalAnimationUsingKeyFrames.cs @@ -112,7 +112,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - DecimalAnimationUsingKeyFrames sourceAnimation = (DecimalAnimationUsingKeyFrames) sourceFreezable; + DecimalAnimationUsingKeyFrames sourceAnimation = (DecimalAnimationUsingKeyFrames)sourceFreezable; base.CloneCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -123,7 +123,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - DecimalAnimationUsingKeyFrames sourceAnimation = (DecimalAnimationUsingKeyFrames) sourceFreezable; + DecimalAnimationUsingKeyFrames sourceAnimation = (DecimalAnimationUsingKeyFrames)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -134,7 +134,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable source) { - DecimalAnimationUsingKeyFrames sourceAnimation = (DecimalAnimationUsingKeyFrames) source; + DecimalAnimationUsingKeyFrames sourceAnimation = (DecimalAnimationUsingKeyFrames)source; base.GetAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -145,7 +145,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - DecimalAnimationUsingKeyFrames sourceAnimation = (DecimalAnimationUsingKeyFrames) source; + DecimalAnimationUsingKeyFrames sourceAnimation = (DecimalAnimationUsingKeyFrames)source; base.GetCurrentValueAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -814,11 +814,11 @@ private void ResolveKeyTimes() || type == KeyTimeType.TimeSpan) { break; - } + } else if (type == KeyTimeType.Paced) { hasPacedKeyTimes = true; - } + } } Debug.Assert(index < keyFrameCount, @@ -984,7 +984,7 @@ private void ResolvePacedKeyTimes() { index++; } - } + } while (index < maxKeyFrameIndex); } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/DecimalKeyFrameCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/DecimalKeyFrameCollection.cs index dea2af7f2fa..5d989188532 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/DecimalKeyFrameCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/DecimalKeyFrameCollection.cs @@ -90,7 +90,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - DecimalKeyFrameCollection sourceCollection = (DecimalKeyFrameCollection) sourceFreezable; + DecimalKeyFrameCollection sourceCollection = (DecimalKeyFrameCollection)sourceFreezable; base.CloneCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -111,7 +111,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - DecimalKeyFrameCollection sourceCollection = (DecimalKeyFrameCollection) sourceFreezable; + DecimalKeyFrameCollection sourceCollection = (DecimalKeyFrameCollection)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -132,7 +132,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable sourceFreezable) { - DecimalKeyFrameCollection sourceCollection = (DecimalKeyFrameCollection) sourceFreezable; + DecimalKeyFrameCollection sourceCollection = (DecimalKeyFrameCollection)sourceFreezable; base.GetAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -153,7 +153,7 @@ protected override void GetAsFrozenCore(Freezable sourceFreezable) /// protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable) { - DecimalKeyFrameCollection sourceCollection = (DecimalKeyFrameCollection) sourceFreezable; + DecimalKeyFrameCollection sourceCollection = (DecimalKeyFrameCollection)sourceFreezable; base.GetCurrentValueAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/DoubleAnimation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/DoubleAnimation.cs index f3686303f01..8004ae0e7c2 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/DoubleAnimation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/DoubleAnimation.cs @@ -229,7 +229,7 @@ protected override Double GetCurrentValueCore(Double defaultOriginValue, Double bool validateOrigin = false; bool validateDestination = false; - switch(_animationType) + switch (_animationType) { case AnimationType.Automatic: diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/DoubleAnimationUsingKeyFrames.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/DoubleAnimationUsingKeyFrames.cs index 996becb274c..184e71fa8ae 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/DoubleAnimationUsingKeyFrames.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/DoubleAnimationUsingKeyFrames.cs @@ -112,7 +112,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - DoubleAnimationUsingKeyFrames sourceAnimation = (DoubleAnimationUsingKeyFrames) sourceFreezable; + DoubleAnimationUsingKeyFrames sourceAnimation = (DoubleAnimationUsingKeyFrames)sourceFreezable; base.CloneCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -123,7 +123,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - DoubleAnimationUsingKeyFrames sourceAnimation = (DoubleAnimationUsingKeyFrames) sourceFreezable; + DoubleAnimationUsingKeyFrames sourceAnimation = (DoubleAnimationUsingKeyFrames)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -134,7 +134,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable source) { - DoubleAnimationUsingKeyFrames sourceAnimation = (DoubleAnimationUsingKeyFrames) source; + DoubleAnimationUsingKeyFrames sourceAnimation = (DoubleAnimationUsingKeyFrames)source; base.GetAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -145,7 +145,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - DoubleAnimationUsingKeyFrames sourceAnimation = (DoubleAnimationUsingKeyFrames) source; + DoubleAnimationUsingKeyFrames sourceAnimation = (DoubleAnimationUsingKeyFrames)source; base.GetCurrentValueAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -814,11 +814,11 @@ private void ResolveKeyTimes() || type == KeyTimeType.TimeSpan) { break; - } + } else if (type == KeyTimeType.Paced) { hasPacedKeyTimes = true; - } + } } Debug.Assert(index < keyFrameCount, @@ -984,7 +984,7 @@ private void ResolvePacedKeyTimes() { index++; } - } + } while (index < maxKeyFrameIndex); } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/DoubleKeyFrameCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/DoubleKeyFrameCollection.cs index 41af303d287..b97b7742025 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/DoubleKeyFrameCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/DoubleKeyFrameCollection.cs @@ -90,7 +90,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - DoubleKeyFrameCollection sourceCollection = (DoubleKeyFrameCollection) sourceFreezable; + DoubleKeyFrameCollection sourceCollection = (DoubleKeyFrameCollection)sourceFreezable; base.CloneCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -111,7 +111,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - DoubleKeyFrameCollection sourceCollection = (DoubleKeyFrameCollection) sourceFreezable; + DoubleKeyFrameCollection sourceCollection = (DoubleKeyFrameCollection)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -132,7 +132,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable sourceFreezable) { - DoubleKeyFrameCollection sourceCollection = (DoubleKeyFrameCollection) sourceFreezable; + DoubleKeyFrameCollection sourceCollection = (DoubleKeyFrameCollection)sourceFreezable; base.GetAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -153,7 +153,7 @@ protected override void GetAsFrozenCore(Freezable sourceFreezable) /// protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable) { - DoubleKeyFrameCollection sourceCollection = (DoubleKeyFrameCollection) sourceFreezable; + DoubleKeyFrameCollection sourceCollection = (DoubleKeyFrameCollection)sourceFreezable; base.GetCurrentValueAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int16Animation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int16Animation.cs index d45c65ec73e..aaa89833f3b 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int16Animation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int16Animation.cs @@ -229,7 +229,7 @@ protected override Int16 GetCurrentValueCore(Int16 defaultOriginValue, Int16 def bool validateOrigin = false; bool validateDestination = false; - switch(_animationType) + switch (_animationType) { case AnimationType.Automatic: diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int16AnimationUsingKeyFrames.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int16AnimationUsingKeyFrames.cs index a607043a8e0..89192dd58b9 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int16AnimationUsingKeyFrames.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int16AnimationUsingKeyFrames.cs @@ -112,7 +112,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - Int16AnimationUsingKeyFrames sourceAnimation = (Int16AnimationUsingKeyFrames) sourceFreezable; + Int16AnimationUsingKeyFrames sourceAnimation = (Int16AnimationUsingKeyFrames)sourceFreezable; base.CloneCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -123,7 +123,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - Int16AnimationUsingKeyFrames sourceAnimation = (Int16AnimationUsingKeyFrames) sourceFreezable; + Int16AnimationUsingKeyFrames sourceAnimation = (Int16AnimationUsingKeyFrames)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -134,7 +134,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable source) { - Int16AnimationUsingKeyFrames sourceAnimation = (Int16AnimationUsingKeyFrames) source; + Int16AnimationUsingKeyFrames sourceAnimation = (Int16AnimationUsingKeyFrames)source; base.GetAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -145,7 +145,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - Int16AnimationUsingKeyFrames sourceAnimation = (Int16AnimationUsingKeyFrames) source; + Int16AnimationUsingKeyFrames sourceAnimation = (Int16AnimationUsingKeyFrames)source; base.GetCurrentValueAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -814,11 +814,11 @@ private void ResolveKeyTimes() || type == KeyTimeType.TimeSpan) { break; - } + } else if (type == KeyTimeType.Paced) { hasPacedKeyTimes = true; - } + } } Debug.Assert(index < keyFrameCount, @@ -984,7 +984,7 @@ private void ResolvePacedKeyTimes() { index++; } - } + } while (index < maxKeyFrameIndex); } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int16KeyFrameCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int16KeyFrameCollection.cs index 30c7dffe694..5db440e5cf1 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int16KeyFrameCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int16KeyFrameCollection.cs @@ -90,7 +90,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - Int16KeyFrameCollection sourceCollection = (Int16KeyFrameCollection) sourceFreezable; + Int16KeyFrameCollection sourceCollection = (Int16KeyFrameCollection)sourceFreezable; base.CloneCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -111,7 +111,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - Int16KeyFrameCollection sourceCollection = (Int16KeyFrameCollection) sourceFreezable; + Int16KeyFrameCollection sourceCollection = (Int16KeyFrameCollection)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -132,7 +132,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable sourceFreezable) { - Int16KeyFrameCollection sourceCollection = (Int16KeyFrameCollection) sourceFreezable; + Int16KeyFrameCollection sourceCollection = (Int16KeyFrameCollection)sourceFreezable; base.GetAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -153,7 +153,7 @@ protected override void GetAsFrozenCore(Freezable sourceFreezable) /// protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable) { - Int16KeyFrameCollection sourceCollection = (Int16KeyFrameCollection) sourceFreezable; + Int16KeyFrameCollection sourceCollection = (Int16KeyFrameCollection)sourceFreezable; base.GetCurrentValueAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int32Animation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int32Animation.cs index 4a507a8560e..4d2e75fe208 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int32Animation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int32Animation.cs @@ -229,7 +229,7 @@ protected override Int32 GetCurrentValueCore(Int32 defaultOriginValue, Int32 def bool validateOrigin = false; bool validateDestination = false; - switch(_animationType) + switch (_animationType) { case AnimationType.Automatic: diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int32AnimationUsingKeyFrames.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int32AnimationUsingKeyFrames.cs index 86bf53a24f4..d85af82dbf4 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int32AnimationUsingKeyFrames.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int32AnimationUsingKeyFrames.cs @@ -112,7 +112,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - Int32AnimationUsingKeyFrames sourceAnimation = (Int32AnimationUsingKeyFrames) sourceFreezable; + Int32AnimationUsingKeyFrames sourceAnimation = (Int32AnimationUsingKeyFrames)sourceFreezable; base.CloneCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -123,7 +123,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - Int32AnimationUsingKeyFrames sourceAnimation = (Int32AnimationUsingKeyFrames) sourceFreezable; + Int32AnimationUsingKeyFrames sourceAnimation = (Int32AnimationUsingKeyFrames)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -134,7 +134,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable source) { - Int32AnimationUsingKeyFrames sourceAnimation = (Int32AnimationUsingKeyFrames) source; + Int32AnimationUsingKeyFrames sourceAnimation = (Int32AnimationUsingKeyFrames)source; base.GetAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -145,7 +145,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - Int32AnimationUsingKeyFrames sourceAnimation = (Int32AnimationUsingKeyFrames) source; + Int32AnimationUsingKeyFrames sourceAnimation = (Int32AnimationUsingKeyFrames)source; base.GetCurrentValueAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -814,11 +814,11 @@ private void ResolveKeyTimes() || type == KeyTimeType.TimeSpan) { break; - } + } else if (type == KeyTimeType.Paced) { hasPacedKeyTimes = true; - } + } } Debug.Assert(index < keyFrameCount, @@ -984,7 +984,7 @@ private void ResolvePacedKeyTimes() { index++; } - } + } while (index < maxKeyFrameIndex); } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int32KeyFrameCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int32KeyFrameCollection.cs index 01189e6edc2..3b6526cdc03 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int32KeyFrameCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int32KeyFrameCollection.cs @@ -90,7 +90,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - Int32KeyFrameCollection sourceCollection = (Int32KeyFrameCollection) sourceFreezable; + Int32KeyFrameCollection sourceCollection = (Int32KeyFrameCollection)sourceFreezable; base.CloneCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -111,7 +111,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - Int32KeyFrameCollection sourceCollection = (Int32KeyFrameCollection) sourceFreezable; + Int32KeyFrameCollection sourceCollection = (Int32KeyFrameCollection)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -132,7 +132,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable sourceFreezable) { - Int32KeyFrameCollection sourceCollection = (Int32KeyFrameCollection) sourceFreezable; + Int32KeyFrameCollection sourceCollection = (Int32KeyFrameCollection)sourceFreezable; base.GetAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -153,7 +153,7 @@ protected override void GetAsFrozenCore(Freezable sourceFreezable) /// protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable) { - Int32KeyFrameCollection sourceCollection = (Int32KeyFrameCollection) sourceFreezable; + Int32KeyFrameCollection sourceCollection = (Int32KeyFrameCollection)sourceFreezable; base.GetCurrentValueAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int64Animation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int64Animation.cs index f86324af0af..824556ee640 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int64Animation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int64Animation.cs @@ -229,7 +229,7 @@ protected override Int64 GetCurrentValueCore(Int64 defaultOriginValue, Int64 def bool validateOrigin = false; bool validateDestination = false; - switch(_animationType) + switch (_animationType) { case AnimationType.Automatic: diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int64AnimationUsingKeyFrames.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int64AnimationUsingKeyFrames.cs index 96e61e2c16c..6a62d039b8e 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int64AnimationUsingKeyFrames.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int64AnimationUsingKeyFrames.cs @@ -112,7 +112,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - Int64AnimationUsingKeyFrames sourceAnimation = (Int64AnimationUsingKeyFrames) sourceFreezable; + Int64AnimationUsingKeyFrames sourceAnimation = (Int64AnimationUsingKeyFrames)sourceFreezable; base.CloneCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -123,7 +123,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - Int64AnimationUsingKeyFrames sourceAnimation = (Int64AnimationUsingKeyFrames) sourceFreezable; + Int64AnimationUsingKeyFrames sourceAnimation = (Int64AnimationUsingKeyFrames)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -134,7 +134,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable source) { - Int64AnimationUsingKeyFrames sourceAnimation = (Int64AnimationUsingKeyFrames) source; + Int64AnimationUsingKeyFrames sourceAnimation = (Int64AnimationUsingKeyFrames)source; base.GetAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -145,7 +145,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - Int64AnimationUsingKeyFrames sourceAnimation = (Int64AnimationUsingKeyFrames) source; + Int64AnimationUsingKeyFrames sourceAnimation = (Int64AnimationUsingKeyFrames)source; base.GetCurrentValueAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -814,11 +814,11 @@ private void ResolveKeyTimes() || type == KeyTimeType.TimeSpan) { break; - } + } else if (type == KeyTimeType.Paced) { hasPacedKeyTimes = true; - } + } } Debug.Assert(index < keyFrameCount, @@ -984,7 +984,7 @@ private void ResolvePacedKeyTimes() { index++; } - } + } while (index < maxKeyFrameIndex); } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int64KeyFrameCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int64KeyFrameCollection.cs index 6a100245dbe..728794a8c29 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int64KeyFrameCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Int64KeyFrameCollection.cs @@ -90,7 +90,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - Int64KeyFrameCollection sourceCollection = (Int64KeyFrameCollection) sourceFreezable; + Int64KeyFrameCollection sourceCollection = (Int64KeyFrameCollection)sourceFreezable; base.CloneCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -111,7 +111,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - Int64KeyFrameCollection sourceCollection = (Int64KeyFrameCollection) sourceFreezable; + Int64KeyFrameCollection sourceCollection = (Int64KeyFrameCollection)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -132,7 +132,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable sourceFreezable) { - Int64KeyFrameCollection sourceCollection = (Int64KeyFrameCollection) sourceFreezable; + Int64KeyFrameCollection sourceCollection = (Int64KeyFrameCollection)sourceFreezable; base.GetAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -153,7 +153,7 @@ protected override void GetAsFrozenCore(Freezable sourceFreezable) /// protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable) { - Int64KeyFrameCollection sourceCollection = (Int64KeyFrameCollection) sourceFreezable; + Int64KeyFrameCollection sourceCollection = (Int64KeyFrameCollection)sourceFreezable; base.GetCurrentValueAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/KeyFrames.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/KeyFrames.cs index 1228fec536f..95ccb1de7d0 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/KeyFrames.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/KeyFrames.cs @@ -152,7 +152,7 @@ protected abstract Boolean InterpolateValueCore( double keyFrameProgress); #endregion - } + } /// @@ -293,7 +293,7 @@ protected abstract Byte InterpolateValueCore( double keyFrameProgress); #endregion - } + } /// @@ -434,7 +434,7 @@ protected abstract Char InterpolateValueCore( double keyFrameProgress); #endregion - } + } /// @@ -575,7 +575,7 @@ protected abstract Color InterpolateValueCore( double keyFrameProgress); #endregion - } + } /// @@ -716,7 +716,7 @@ protected abstract Decimal InterpolateValueCore( double keyFrameProgress); #endregion - } + } /// @@ -857,7 +857,7 @@ protected abstract Double InterpolateValueCore( double keyFrameProgress); #endregion - } + } /// @@ -998,7 +998,7 @@ protected abstract Int16 InterpolateValueCore( double keyFrameProgress); #endregion - } + } /// @@ -1139,7 +1139,7 @@ protected abstract Int32 InterpolateValueCore( double keyFrameProgress); #endregion - } + } /// @@ -1280,7 +1280,7 @@ protected abstract Int64 InterpolateValueCore( double keyFrameProgress); #endregion - } + } /// @@ -1421,7 +1421,7 @@ protected abstract Matrix InterpolateValueCore( double keyFrameProgress); #endregion - } + } /// @@ -1562,7 +1562,7 @@ protected abstract Object InterpolateValueCore( double keyFrameProgress); #endregion - } + } /// @@ -1703,7 +1703,7 @@ protected abstract Point InterpolateValueCore( double keyFrameProgress); #endregion - } + } /// @@ -1844,7 +1844,7 @@ protected abstract Point3D InterpolateValueCore( double keyFrameProgress); #endregion - } + } /// @@ -1985,7 +1985,7 @@ protected abstract Quaternion InterpolateValueCore( double keyFrameProgress); #endregion - } + } /// @@ -2126,7 +2126,7 @@ protected abstract Rotation3D InterpolateValueCore( double keyFrameProgress); #endregion - } + } /// @@ -2267,7 +2267,7 @@ protected abstract Rect InterpolateValueCore( double keyFrameProgress); #endregion - } + } /// @@ -2408,7 +2408,7 @@ protected abstract Single InterpolateValueCore( double keyFrameProgress); #endregion - } + } /// @@ -2549,7 +2549,7 @@ protected abstract Size InterpolateValueCore( double keyFrameProgress); #endregion - } + } /// @@ -2690,7 +2690,7 @@ protected abstract String InterpolateValueCore( double keyFrameProgress); #endregion - } + } /// @@ -2831,7 +2831,7 @@ protected abstract Vector InterpolateValueCore( double keyFrameProgress); #endregion - } + } /// @@ -2972,6 +2972,6 @@ protected abstract Vector3D InterpolateValueCore( double keyFrameProgress); #endregion - } + } } \ No newline at end of file diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/MatrixAnimationUsingKeyFrames.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/MatrixAnimationUsingKeyFrames.cs index 9c9e0ed87a0..77ab2d1bc2a 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/MatrixAnimationUsingKeyFrames.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/MatrixAnimationUsingKeyFrames.cs @@ -112,7 +112,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - MatrixAnimationUsingKeyFrames sourceAnimation = (MatrixAnimationUsingKeyFrames) sourceFreezable; + MatrixAnimationUsingKeyFrames sourceAnimation = (MatrixAnimationUsingKeyFrames)sourceFreezable; base.CloneCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -123,7 +123,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - MatrixAnimationUsingKeyFrames sourceAnimation = (MatrixAnimationUsingKeyFrames) sourceFreezable; + MatrixAnimationUsingKeyFrames sourceAnimation = (MatrixAnimationUsingKeyFrames)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -134,7 +134,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable source) { - MatrixAnimationUsingKeyFrames sourceAnimation = (MatrixAnimationUsingKeyFrames) source; + MatrixAnimationUsingKeyFrames sourceAnimation = (MatrixAnimationUsingKeyFrames)source; base.GetAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -145,7 +145,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - MatrixAnimationUsingKeyFrames sourceAnimation = (MatrixAnimationUsingKeyFrames) source; + MatrixAnimationUsingKeyFrames sourceAnimation = (MatrixAnimationUsingKeyFrames)source; base.GetCurrentValueAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -722,11 +722,11 @@ private void ResolveKeyTimes() || type == KeyTimeType.TimeSpan) { break; - } + } else if (type == KeyTimeType.Paced) { hasPacedKeyTimes = true; - } + } } Debug.Assert(index < keyFrameCount, @@ -892,7 +892,7 @@ private void ResolvePacedKeyTimes() { index++; } - } + } while (index < maxKeyFrameIndex); } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/MatrixKeyFrameCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/MatrixKeyFrameCollection.cs index 8bb7cee5438..0f529a73a1c 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/MatrixKeyFrameCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/MatrixKeyFrameCollection.cs @@ -90,7 +90,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - MatrixKeyFrameCollection sourceCollection = (MatrixKeyFrameCollection) sourceFreezable; + MatrixKeyFrameCollection sourceCollection = (MatrixKeyFrameCollection)sourceFreezable; base.CloneCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -111,7 +111,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - MatrixKeyFrameCollection sourceCollection = (MatrixKeyFrameCollection) sourceFreezable; + MatrixKeyFrameCollection sourceCollection = (MatrixKeyFrameCollection)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -132,7 +132,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable sourceFreezable) { - MatrixKeyFrameCollection sourceCollection = (MatrixKeyFrameCollection) sourceFreezable; + MatrixKeyFrameCollection sourceCollection = (MatrixKeyFrameCollection)sourceFreezable; base.GetAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -153,7 +153,7 @@ protected override void GetAsFrozenCore(Freezable sourceFreezable) /// protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable) { - MatrixKeyFrameCollection sourceCollection = (MatrixKeyFrameCollection) sourceFreezable; + MatrixKeyFrameCollection sourceCollection = (MatrixKeyFrameCollection)sourceFreezable; base.GetCurrentValueAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ObjectAnimationUsingKeyFrames.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ObjectAnimationUsingKeyFrames.cs index eacc9172c6a..147ba8b9506 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ObjectAnimationUsingKeyFrames.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ObjectAnimationUsingKeyFrames.cs @@ -112,7 +112,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - ObjectAnimationUsingKeyFrames sourceAnimation = (ObjectAnimationUsingKeyFrames) sourceFreezable; + ObjectAnimationUsingKeyFrames sourceAnimation = (ObjectAnimationUsingKeyFrames)sourceFreezable; base.CloneCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -123,7 +123,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - ObjectAnimationUsingKeyFrames sourceAnimation = (ObjectAnimationUsingKeyFrames) sourceFreezable; + ObjectAnimationUsingKeyFrames sourceAnimation = (ObjectAnimationUsingKeyFrames)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -134,7 +134,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable source) { - ObjectAnimationUsingKeyFrames sourceAnimation = (ObjectAnimationUsingKeyFrames) source; + ObjectAnimationUsingKeyFrames sourceAnimation = (ObjectAnimationUsingKeyFrames)source; base.GetAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -145,7 +145,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - ObjectAnimationUsingKeyFrames sourceAnimation = (ObjectAnimationUsingKeyFrames) source; + ObjectAnimationUsingKeyFrames sourceAnimation = (ObjectAnimationUsingKeyFrames)source; base.GetCurrentValueAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -722,11 +722,11 @@ private void ResolveKeyTimes() || type == KeyTimeType.TimeSpan) { break; - } + } else if (type == KeyTimeType.Paced) { hasPacedKeyTimes = true; - } + } } Debug.Assert(index < keyFrameCount, @@ -892,7 +892,7 @@ private void ResolvePacedKeyTimes() { index++; } - } + } while (index < maxKeyFrameIndex); } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ObjectKeyFrameCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ObjectKeyFrameCollection.cs index 12ff3b4e66c..40500673f8e 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ObjectKeyFrameCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/ObjectKeyFrameCollection.cs @@ -90,7 +90,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - ObjectKeyFrameCollection sourceCollection = (ObjectKeyFrameCollection) sourceFreezable; + ObjectKeyFrameCollection sourceCollection = (ObjectKeyFrameCollection)sourceFreezable; base.CloneCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -111,7 +111,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - ObjectKeyFrameCollection sourceCollection = (ObjectKeyFrameCollection) sourceFreezable; + ObjectKeyFrameCollection sourceCollection = (ObjectKeyFrameCollection)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -132,7 +132,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable sourceFreezable) { - ObjectKeyFrameCollection sourceCollection = (ObjectKeyFrameCollection) sourceFreezable; + ObjectKeyFrameCollection sourceCollection = (ObjectKeyFrameCollection)sourceFreezable; base.GetAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -153,7 +153,7 @@ protected override void GetAsFrozenCore(Freezable sourceFreezable) /// protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable) { - ObjectKeyFrameCollection sourceCollection = (ObjectKeyFrameCollection) sourceFreezable; + ObjectKeyFrameCollection sourceCollection = (ObjectKeyFrameCollection)sourceFreezable; base.GetCurrentValueAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Point3DAnimation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Point3DAnimation.cs index b6791a86099..efcf4197520 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Point3DAnimation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Point3DAnimation.cs @@ -229,7 +229,7 @@ protected override Point3D GetCurrentValueCore(Point3D defaultOriginValue, Point bool validateOrigin = false; bool validateDestination = false; - switch(_animationType) + switch (_animationType) { case AnimationType.Automatic: diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Point3DAnimationUsingKeyFrames.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Point3DAnimationUsingKeyFrames.cs index 3367d3b4f35..2d3e5222dd7 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Point3DAnimationUsingKeyFrames.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Point3DAnimationUsingKeyFrames.cs @@ -112,7 +112,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - Point3DAnimationUsingKeyFrames sourceAnimation = (Point3DAnimationUsingKeyFrames) sourceFreezable; + Point3DAnimationUsingKeyFrames sourceAnimation = (Point3DAnimationUsingKeyFrames)sourceFreezable; base.CloneCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -123,7 +123,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - Point3DAnimationUsingKeyFrames sourceAnimation = (Point3DAnimationUsingKeyFrames) sourceFreezable; + Point3DAnimationUsingKeyFrames sourceAnimation = (Point3DAnimationUsingKeyFrames)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -134,7 +134,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable source) { - Point3DAnimationUsingKeyFrames sourceAnimation = (Point3DAnimationUsingKeyFrames) source; + Point3DAnimationUsingKeyFrames sourceAnimation = (Point3DAnimationUsingKeyFrames)source; base.GetAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -145,7 +145,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - Point3DAnimationUsingKeyFrames sourceAnimation = (Point3DAnimationUsingKeyFrames) source; + Point3DAnimationUsingKeyFrames sourceAnimation = (Point3DAnimationUsingKeyFrames)source; base.GetCurrentValueAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -814,11 +814,11 @@ private void ResolveKeyTimes() || type == KeyTimeType.TimeSpan) { break; - } + } else if (type == KeyTimeType.Paced) { hasPacedKeyTimes = true; - } + } } Debug.Assert(index < keyFrameCount, @@ -984,7 +984,7 @@ private void ResolvePacedKeyTimes() { index++; } - } + } while (index < maxKeyFrameIndex); } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Point3DKeyFrameCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Point3DKeyFrameCollection.cs index 425e8b682aa..65bc9fc596b 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Point3DKeyFrameCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Point3DKeyFrameCollection.cs @@ -90,7 +90,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - Point3DKeyFrameCollection sourceCollection = (Point3DKeyFrameCollection) sourceFreezable; + Point3DKeyFrameCollection sourceCollection = (Point3DKeyFrameCollection)sourceFreezable; base.CloneCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -111,7 +111,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - Point3DKeyFrameCollection sourceCollection = (Point3DKeyFrameCollection) sourceFreezable; + Point3DKeyFrameCollection sourceCollection = (Point3DKeyFrameCollection)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -132,7 +132,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable sourceFreezable) { - Point3DKeyFrameCollection sourceCollection = (Point3DKeyFrameCollection) sourceFreezable; + Point3DKeyFrameCollection sourceCollection = (Point3DKeyFrameCollection)sourceFreezable; base.GetAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -153,7 +153,7 @@ protected override void GetAsFrozenCore(Freezable sourceFreezable) /// protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable) { - Point3DKeyFrameCollection sourceCollection = (Point3DKeyFrameCollection) sourceFreezable; + Point3DKeyFrameCollection sourceCollection = (Point3DKeyFrameCollection)sourceFreezable; base.GetCurrentValueAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/PointAnimation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/PointAnimation.cs index 82558d14539..4a8e2e80832 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/PointAnimation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/PointAnimation.cs @@ -229,7 +229,7 @@ protected override Point GetCurrentValueCore(Point defaultOriginValue, Point def bool validateOrigin = false; bool validateDestination = false; - switch(_animationType) + switch (_animationType) { case AnimationType.Automatic: diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/PointAnimationUsingKeyFrames.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/PointAnimationUsingKeyFrames.cs index c6553b24ab4..a0f2fa239f2 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/PointAnimationUsingKeyFrames.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/PointAnimationUsingKeyFrames.cs @@ -112,7 +112,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - PointAnimationUsingKeyFrames sourceAnimation = (PointAnimationUsingKeyFrames) sourceFreezable; + PointAnimationUsingKeyFrames sourceAnimation = (PointAnimationUsingKeyFrames)sourceFreezable; base.CloneCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -123,7 +123,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - PointAnimationUsingKeyFrames sourceAnimation = (PointAnimationUsingKeyFrames) sourceFreezable; + PointAnimationUsingKeyFrames sourceAnimation = (PointAnimationUsingKeyFrames)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -134,7 +134,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable source) { - PointAnimationUsingKeyFrames sourceAnimation = (PointAnimationUsingKeyFrames) source; + PointAnimationUsingKeyFrames sourceAnimation = (PointAnimationUsingKeyFrames)source; base.GetAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -145,7 +145,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - PointAnimationUsingKeyFrames sourceAnimation = (PointAnimationUsingKeyFrames) source; + PointAnimationUsingKeyFrames sourceAnimation = (PointAnimationUsingKeyFrames)source; base.GetCurrentValueAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -814,11 +814,11 @@ private void ResolveKeyTimes() || type == KeyTimeType.TimeSpan) { break; - } + } else if (type == KeyTimeType.Paced) { hasPacedKeyTimes = true; - } + } } Debug.Assert(index < keyFrameCount, @@ -984,7 +984,7 @@ private void ResolvePacedKeyTimes() { index++; } - } + } while (index < maxKeyFrameIndex); } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/PointKeyFrameCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/PointKeyFrameCollection.cs index 9b7bd27a743..167cebdaa30 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/PointKeyFrameCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/PointKeyFrameCollection.cs @@ -90,7 +90,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - PointKeyFrameCollection sourceCollection = (PointKeyFrameCollection) sourceFreezable; + PointKeyFrameCollection sourceCollection = (PointKeyFrameCollection)sourceFreezable; base.CloneCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -111,7 +111,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - PointKeyFrameCollection sourceCollection = (PointKeyFrameCollection) sourceFreezable; + PointKeyFrameCollection sourceCollection = (PointKeyFrameCollection)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -132,7 +132,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable sourceFreezable) { - PointKeyFrameCollection sourceCollection = (PointKeyFrameCollection) sourceFreezable; + PointKeyFrameCollection sourceCollection = (PointKeyFrameCollection)sourceFreezable; base.GetAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -153,7 +153,7 @@ protected override void GetAsFrozenCore(Freezable sourceFreezable) /// protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable) { - PointKeyFrameCollection sourceCollection = (PointKeyFrameCollection) sourceFreezable; + PointKeyFrameCollection sourceCollection = (PointKeyFrameCollection)sourceFreezable; base.GetCurrentValueAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/QuaternionAnimation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/QuaternionAnimation.cs index ce4d5333aeb..fa5c601a302 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/QuaternionAnimation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/QuaternionAnimation.cs @@ -229,7 +229,7 @@ protected override Quaternion GetCurrentValueCore(Quaternion defaultOriginValue, bool validateOrigin = false; bool validateDestination = false; - switch(_animationType) + switch (_animationType) { case AnimationType.Automatic: diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/QuaternionAnimationUsingKeyFrames.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/QuaternionAnimationUsingKeyFrames.cs index cfe368798c4..5b3492493c5 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/QuaternionAnimationUsingKeyFrames.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/QuaternionAnimationUsingKeyFrames.cs @@ -112,7 +112,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - QuaternionAnimationUsingKeyFrames sourceAnimation = (QuaternionAnimationUsingKeyFrames) sourceFreezable; + QuaternionAnimationUsingKeyFrames sourceAnimation = (QuaternionAnimationUsingKeyFrames)sourceFreezable; base.CloneCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -123,7 +123,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - QuaternionAnimationUsingKeyFrames sourceAnimation = (QuaternionAnimationUsingKeyFrames) sourceFreezable; + QuaternionAnimationUsingKeyFrames sourceAnimation = (QuaternionAnimationUsingKeyFrames)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -134,7 +134,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable source) { - QuaternionAnimationUsingKeyFrames sourceAnimation = (QuaternionAnimationUsingKeyFrames) source; + QuaternionAnimationUsingKeyFrames sourceAnimation = (QuaternionAnimationUsingKeyFrames)source; base.GetAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -145,7 +145,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - QuaternionAnimationUsingKeyFrames sourceAnimation = (QuaternionAnimationUsingKeyFrames) source; + QuaternionAnimationUsingKeyFrames sourceAnimation = (QuaternionAnimationUsingKeyFrames)source; base.GetCurrentValueAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -814,11 +814,11 @@ private void ResolveKeyTimes() || type == KeyTimeType.TimeSpan) { break; - } + } else if (type == KeyTimeType.Paced) { hasPacedKeyTimes = true; - } + } } Debug.Assert(index < keyFrameCount, @@ -984,7 +984,7 @@ private void ResolvePacedKeyTimes() { index++; } - } + } while (index < maxKeyFrameIndex); } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/QuaternionKeyFrameCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/QuaternionKeyFrameCollection.cs index a496b20fb71..9470f2cdc9c 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/QuaternionKeyFrameCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/QuaternionKeyFrameCollection.cs @@ -90,7 +90,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - QuaternionKeyFrameCollection sourceCollection = (QuaternionKeyFrameCollection) sourceFreezable; + QuaternionKeyFrameCollection sourceCollection = (QuaternionKeyFrameCollection)sourceFreezable; base.CloneCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -111,7 +111,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - QuaternionKeyFrameCollection sourceCollection = (QuaternionKeyFrameCollection) sourceFreezable; + QuaternionKeyFrameCollection sourceCollection = (QuaternionKeyFrameCollection)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -132,7 +132,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable sourceFreezable) { - QuaternionKeyFrameCollection sourceCollection = (QuaternionKeyFrameCollection) sourceFreezable; + QuaternionKeyFrameCollection sourceCollection = (QuaternionKeyFrameCollection)sourceFreezable; base.GetAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -153,7 +153,7 @@ protected override void GetAsFrozenCore(Freezable sourceFreezable) /// protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable) { - QuaternionKeyFrameCollection sourceCollection = (QuaternionKeyFrameCollection) sourceFreezable; + QuaternionKeyFrameCollection sourceCollection = (QuaternionKeyFrameCollection)sourceFreezable; base.GetCurrentValueAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/RectAnimation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/RectAnimation.cs index 28168201391..4f36496fd65 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/RectAnimation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/RectAnimation.cs @@ -229,7 +229,7 @@ protected override Rect GetCurrentValueCore(Rect defaultOriginValue, Rect defaul bool validateOrigin = false; bool validateDestination = false; - switch(_animationType) + switch (_animationType) { case AnimationType.Automatic: diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/RectAnimationUsingKeyFrames.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/RectAnimationUsingKeyFrames.cs index b28bfdf0565..a28630e60be 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/RectAnimationUsingKeyFrames.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/RectAnimationUsingKeyFrames.cs @@ -112,7 +112,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - RectAnimationUsingKeyFrames sourceAnimation = (RectAnimationUsingKeyFrames) sourceFreezable; + RectAnimationUsingKeyFrames sourceAnimation = (RectAnimationUsingKeyFrames)sourceFreezable; base.CloneCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -123,7 +123,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - RectAnimationUsingKeyFrames sourceAnimation = (RectAnimationUsingKeyFrames) sourceFreezable; + RectAnimationUsingKeyFrames sourceAnimation = (RectAnimationUsingKeyFrames)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -134,7 +134,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable source) { - RectAnimationUsingKeyFrames sourceAnimation = (RectAnimationUsingKeyFrames) source; + RectAnimationUsingKeyFrames sourceAnimation = (RectAnimationUsingKeyFrames)source; base.GetAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -145,7 +145,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - RectAnimationUsingKeyFrames sourceAnimation = (RectAnimationUsingKeyFrames) source; + RectAnimationUsingKeyFrames sourceAnimation = (RectAnimationUsingKeyFrames)source; base.GetCurrentValueAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -814,11 +814,11 @@ private void ResolveKeyTimes() || type == KeyTimeType.TimeSpan) { break; - } + } else if (type == KeyTimeType.Paced) { hasPacedKeyTimes = true; - } + } } Debug.Assert(index < keyFrameCount, @@ -984,7 +984,7 @@ private void ResolvePacedKeyTimes() { index++; } - } + } while (index < maxKeyFrameIndex); } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/RectKeyFrameCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/RectKeyFrameCollection.cs index 094df968c3c..ce86798a0e7 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/RectKeyFrameCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/RectKeyFrameCollection.cs @@ -90,7 +90,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - RectKeyFrameCollection sourceCollection = (RectKeyFrameCollection) sourceFreezable; + RectKeyFrameCollection sourceCollection = (RectKeyFrameCollection)sourceFreezable; base.CloneCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -111,7 +111,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - RectKeyFrameCollection sourceCollection = (RectKeyFrameCollection) sourceFreezable; + RectKeyFrameCollection sourceCollection = (RectKeyFrameCollection)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -132,7 +132,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable sourceFreezable) { - RectKeyFrameCollection sourceCollection = (RectKeyFrameCollection) sourceFreezable; + RectKeyFrameCollection sourceCollection = (RectKeyFrameCollection)sourceFreezable; base.GetAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -153,7 +153,7 @@ protected override void GetAsFrozenCore(Freezable sourceFreezable) /// protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable) { - RectKeyFrameCollection sourceCollection = (RectKeyFrameCollection) sourceFreezable; + RectKeyFrameCollection sourceCollection = (RectKeyFrameCollection)sourceFreezable; base.GetCurrentValueAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Rotation3DAnimation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Rotation3DAnimation.cs index dcbf6577880..4e8e367c0bd 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Rotation3DAnimation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Rotation3DAnimation.cs @@ -229,7 +229,7 @@ protected override Rotation3D GetCurrentValueCore(Rotation3D defaultOriginValue, bool validateOrigin = false; bool validateDestination = false; - switch(_animationType) + switch (_animationType) { case AnimationType.Automatic: diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Rotation3DAnimationUsingKeyFrames.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Rotation3DAnimationUsingKeyFrames.cs index edfb1496f61..24f657aeb0f 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Rotation3DAnimationUsingKeyFrames.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Rotation3DAnimationUsingKeyFrames.cs @@ -112,7 +112,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - Rotation3DAnimationUsingKeyFrames sourceAnimation = (Rotation3DAnimationUsingKeyFrames) sourceFreezable; + Rotation3DAnimationUsingKeyFrames sourceAnimation = (Rotation3DAnimationUsingKeyFrames)sourceFreezable; base.CloneCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -123,7 +123,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - Rotation3DAnimationUsingKeyFrames sourceAnimation = (Rotation3DAnimationUsingKeyFrames) sourceFreezable; + Rotation3DAnimationUsingKeyFrames sourceAnimation = (Rotation3DAnimationUsingKeyFrames)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -134,7 +134,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable source) { - Rotation3DAnimationUsingKeyFrames sourceAnimation = (Rotation3DAnimationUsingKeyFrames) source; + Rotation3DAnimationUsingKeyFrames sourceAnimation = (Rotation3DAnimationUsingKeyFrames)source; base.GetAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -145,7 +145,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - Rotation3DAnimationUsingKeyFrames sourceAnimation = (Rotation3DAnimationUsingKeyFrames) source; + Rotation3DAnimationUsingKeyFrames sourceAnimation = (Rotation3DAnimationUsingKeyFrames)source; base.GetCurrentValueAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -814,11 +814,11 @@ private void ResolveKeyTimes() || type == KeyTimeType.TimeSpan) { break; - } + } else if (type == KeyTimeType.Paced) { hasPacedKeyTimes = true; - } + } } Debug.Assert(index < keyFrameCount, @@ -984,7 +984,7 @@ private void ResolvePacedKeyTimes() { index++; } - } + } while (index < maxKeyFrameIndex); } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Rotation3DKeyFrameCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Rotation3DKeyFrameCollection.cs index b802c6f2160..84542b5d9f7 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Rotation3DKeyFrameCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Rotation3DKeyFrameCollection.cs @@ -90,7 +90,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - Rotation3DKeyFrameCollection sourceCollection = (Rotation3DKeyFrameCollection) sourceFreezable; + Rotation3DKeyFrameCollection sourceCollection = (Rotation3DKeyFrameCollection)sourceFreezable; base.CloneCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -111,7 +111,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - Rotation3DKeyFrameCollection sourceCollection = (Rotation3DKeyFrameCollection) sourceFreezable; + Rotation3DKeyFrameCollection sourceCollection = (Rotation3DKeyFrameCollection)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -132,7 +132,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable sourceFreezable) { - Rotation3DKeyFrameCollection sourceCollection = (Rotation3DKeyFrameCollection) sourceFreezable; + Rotation3DKeyFrameCollection sourceCollection = (Rotation3DKeyFrameCollection)sourceFreezable; base.GetAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -153,7 +153,7 @@ protected override void GetAsFrozenCore(Freezable sourceFreezable) /// protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable) { - Rotation3DKeyFrameCollection sourceCollection = (Rotation3DKeyFrameCollection) sourceFreezable; + Rotation3DKeyFrameCollection sourceCollection = (Rotation3DKeyFrameCollection)sourceFreezable; base.GetCurrentValueAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/SingleAnimation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/SingleAnimation.cs index 6d69877fcf5..14d4ea20da2 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/SingleAnimation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/SingleAnimation.cs @@ -229,7 +229,7 @@ protected override Single GetCurrentValueCore(Single defaultOriginValue, Single bool validateOrigin = false; bool validateDestination = false; - switch(_animationType) + switch (_animationType) { case AnimationType.Automatic: diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/SingleAnimationUsingKeyFrames.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/SingleAnimationUsingKeyFrames.cs index c5a495b878d..7db67919900 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/SingleAnimationUsingKeyFrames.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/SingleAnimationUsingKeyFrames.cs @@ -112,7 +112,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - SingleAnimationUsingKeyFrames sourceAnimation = (SingleAnimationUsingKeyFrames) sourceFreezable; + SingleAnimationUsingKeyFrames sourceAnimation = (SingleAnimationUsingKeyFrames)sourceFreezable; base.CloneCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -123,7 +123,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - SingleAnimationUsingKeyFrames sourceAnimation = (SingleAnimationUsingKeyFrames) sourceFreezable; + SingleAnimationUsingKeyFrames sourceAnimation = (SingleAnimationUsingKeyFrames)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -134,7 +134,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable source) { - SingleAnimationUsingKeyFrames sourceAnimation = (SingleAnimationUsingKeyFrames) source; + SingleAnimationUsingKeyFrames sourceAnimation = (SingleAnimationUsingKeyFrames)source; base.GetAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -145,7 +145,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - SingleAnimationUsingKeyFrames sourceAnimation = (SingleAnimationUsingKeyFrames) source; + SingleAnimationUsingKeyFrames sourceAnimation = (SingleAnimationUsingKeyFrames)source; base.GetCurrentValueAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -814,11 +814,11 @@ private void ResolveKeyTimes() || type == KeyTimeType.TimeSpan) { break; - } + } else if (type == KeyTimeType.Paced) { hasPacedKeyTimes = true; - } + } } Debug.Assert(index < keyFrameCount, @@ -984,7 +984,7 @@ private void ResolvePacedKeyTimes() { index++; } - } + } while (index < maxKeyFrameIndex); } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/SingleKeyFrameCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/SingleKeyFrameCollection.cs index 7e3e7c263d7..9ffc9e8c3e6 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/SingleKeyFrameCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/SingleKeyFrameCollection.cs @@ -90,7 +90,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - SingleKeyFrameCollection sourceCollection = (SingleKeyFrameCollection) sourceFreezable; + SingleKeyFrameCollection sourceCollection = (SingleKeyFrameCollection)sourceFreezable; base.CloneCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -111,7 +111,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - SingleKeyFrameCollection sourceCollection = (SingleKeyFrameCollection) sourceFreezable; + SingleKeyFrameCollection sourceCollection = (SingleKeyFrameCollection)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -132,7 +132,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable sourceFreezable) { - SingleKeyFrameCollection sourceCollection = (SingleKeyFrameCollection) sourceFreezable; + SingleKeyFrameCollection sourceCollection = (SingleKeyFrameCollection)sourceFreezable; base.GetAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -153,7 +153,7 @@ protected override void GetAsFrozenCore(Freezable sourceFreezable) /// protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable) { - SingleKeyFrameCollection sourceCollection = (SingleKeyFrameCollection) sourceFreezable; + SingleKeyFrameCollection sourceCollection = (SingleKeyFrameCollection)sourceFreezable; base.GetCurrentValueAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/SizeAnimation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/SizeAnimation.cs index 659eb2d3103..8ddcd22412b 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/SizeAnimation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/SizeAnimation.cs @@ -229,7 +229,7 @@ protected override Size GetCurrentValueCore(Size defaultOriginValue, Size defaul bool validateOrigin = false; bool validateDestination = false; - switch(_animationType) + switch (_animationType) { case AnimationType.Automatic: diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/SizeAnimationUsingKeyFrames.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/SizeAnimationUsingKeyFrames.cs index 126af79e5d5..f969f030667 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/SizeAnimationUsingKeyFrames.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/SizeAnimationUsingKeyFrames.cs @@ -112,7 +112,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - SizeAnimationUsingKeyFrames sourceAnimation = (SizeAnimationUsingKeyFrames) sourceFreezable; + SizeAnimationUsingKeyFrames sourceAnimation = (SizeAnimationUsingKeyFrames)sourceFreezable; base.CloneCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -123,7 +123,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - SizeAnimationUsingKeyFrames sourceAnimation = (SizeAnimationUsingKeyFrames) sourceFreezable; + SizeAnimationUsingKeyFrames sourceAnimation = (SizeAnimationUsingKeyFrames)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -134,7 +134,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable source) { - SizeAnimationUsingKeyFrames sourceAnimation = (SizeAnimationUsingKeyFrames) source; + SizeAnimationUsingKeyFrames sourceAnimation = (SizeAnimationUsingKeyFrames)source; base.GetAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -145,7 +145,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - SizeAnimationUsingKeyFrames sourceAnimation = (SizeAnimationUsingKeyFrames) source; + SizeAnimationUsingKeyFrames sourceAnimation = (SizeAnimationUsingKeyFrames)source; base.GetCurrentValueAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -814,11 +814,11 @@ private void ResolveKeyTimes() || type == KeyTimeType.TimeSpan) { break; - } + } else if (type == KeyTimeType.Paced) { hasPacedKeyTimes = true; - } + } } Debug.Assert(index < keyFrameCount, @@ -984,7 +984,7 @@ private void ResolvePacedKeyTimes() { index++; } - } + } while (index < maxKeyFrameIndex); } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/SizeKeyFrameCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/SizeKeyFrameCollection.cs index c24880b85b4..40aef0f0a14 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/SizeKeyFrameCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/SizeKeyFrameCollection.cs @@ -90,7 +90,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - SizeKeyFrameCollection sourceCollection = (SizeKeyFrameCollection) sourceFreezable; + SizeKeyFrameCollection sourceCollection = (SizeKeyFrameCollection)sourceFreezable; base.CloneCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -111,7 +111,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - SizeKeyFrameCollection sourceCollection = (SizeKeyFrameCollection) sourceFreezable; + SizeKeyFrameCollection sourceCollection = (SizeKeyFrameCollection)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -132,7 +132,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable sourceFreezable) { - SizeKeyFrameCollection sourceCollection = (SizeKeyFrameCollection) sourceFreezable; + SizeKeyFrameCollection sourceCollection = (SizeKeyFrameCollection)sourceFreezable; base.GetAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -153,7 +153,7 @@ protected override void GetAsFrozenCore(Freezable sourceFreezable) /// protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable) { - SizeKeyFrameCollection sourceCollection = (SizeKeyFrameCollection) sourceFreezable; + SizeKeyFrameCollection sourceCollection = (SizeKeyFrameCollection)sourceFreezable; base.GetCurrentValueAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/StringAnimationUsingKeyFrames.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/StringAnimationUsingKeyFrames.cs index e44ade12de7..81ad1f8ca19 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/StringAnimationUsingKeyFrames.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/StringAnimationUsingKeyFrames.cs @@ -112,7 +112,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - StringAnimationUsingKeyFrames sourceAnimation = (StringAnimationUsingKeyFrames) sourceFreezable; + StringAnimationUsingKeyFrames sourceAnimation = (StringAnimationUsingKeyFrames)sourceFreezable; base.CloneCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -123,7 +123,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - StringAnimationUsingKeyFrames sourceAnimation = (StringAnimationUsingKeyFrames) sourceFreezable; + StringAnimationUsingKeyFrames sourceAnimation = (StringAnimationUsingKeyFrames)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -134,7 +134,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable source) { - StringAnimationUsingKeyFrames sourceAnimation = (StringAnimationUsingKeyFrames) source; + StringAnimationUsingKeyFrames sourceAnimation = (StringAnimationUsingKeyFrames)source; base.GetAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -145,7 +145,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - StringAnimationUsingKeyFrames sourceAnimation = (StringAnimationUsingKeyFrames) source; + StringAnimationUsingKeyFrames sourceAnimation = (StringAnimationUsingKeyFrames)source; base.GetCurrentValueAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -722,11 +722,11 @@ private void ResolveKeyTimes() || type == KeyTimeType.TimeSpan) { break; - } + } else if (type == KeyTimeType.Paced) { hasPacedKeyTimes = true; - } + } } Debug.Assert(index < keyFrameCount, @@ -892,7 +892,7 @@ private void ResolvePacedKeyTimes() { index++; } - } + } while (index < maxKeyFrameIndex); } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/StringKeyFrameCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/StringKeyFrameCollection.cs index ff3eb70c0c9..fac0a9a1698 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/StringKeyFrameCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/StringKeyFrameCollection.cs @@ -90,7 +90,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - StringKeyFrameCollection sourceCollection = (StringKeyFrameCollection) sourceFreezable; + StringKeyFrameCollection sourceCollection = (StringKeyFrameCollection)sourceFreezable; base.CloneCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -111,7 +111,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - StringKeyFrameCollection sourceCollection = (StringKeyFrameCollection) sourceFreezable; + StringKeyFrameCollection sourceCollection = (StringKeyFrameCollection)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -132,7 +132,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable sourceFreezable) { - StringKeyFrameCollection sourceCollection = (StringKeyFrameCollection) sourceFreezable; + StringKeyFrameCollection sourceCollection = (StringKeyFrameCollection)sourceFreezable; base.GetAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -153,7 +153,7 @@ protected override void GetAsFrozenCore(Freezable sourceFreezable) /// protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable) { - StringKeyFrameCollection sourceCollection = (StringKeyFrameCollection) sourceFreezable; + StringKeyFrameCollection sourceCollection = (StringKeyFrameCollection)sourceFreezable; base.GetCurrentValueAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/TimelineCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/TimelineCollection.cs index bcd7980cdcc..bf818613481 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/TimelineCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/TimelineCollection.cs @@ -473,10 +473,10 @@ internal override void OnInheritanceContextChangedCore(EventArgs args) { base.OnInheritanceContextChangedCore(args); - for (int i=0; i protected override void CloneCore(Freezable source) { - TimelineCollection sourceTimelineCollection = (TimelineCollection) source; + TimelineCollection sourceTimelineCollection = (TimelineCollection)source; base.CloneCore(source); @@ -579,7 +579,7 @@ protected override void CloneCore(Freezable source) for (int i = 0; i < count; i++) { - Timeline newValue = (Timeline) sourceTimelineCollection._collection[i].Clone(); + Timeline newValue = (Timeline)sourceTimelineCollection._collection[i].Clone(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); @@ -591,7 +591,7 @@ protected override void CloneCore(Freezable source) /// protected override void CloneCurrentValueCore(Freezable source) { - TimelineCollection sourceTimelineCollection = (TimelineCollection) source; + TimelineCollection sourceTimelineCollection = (TimelineCollection)source; base.CloneCurrentValueCore(source); @@ -601,7 +601,7 @@ protected override void CloneCurrentValueCore(Freezable source) for (int i = 0; i < count; i++) { - Timeline newValue = (Timeline) sourceTimelineCollection._collection[i].CloneCurrentValue(); + Timeline newValue = (Timeline)sourceTimelineCollection._collection[i].CloneCurrentValue(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); @@ -613,7 +613,7 @@ protected override void CloneCurrentValueCore(Freezable source) /// protected override void GetAsFrozenCore(Freezable source) { - TimelineCollection sourceTimelineCollection = (TimelineCollection) source; + TimelineCollection sourceTimelineCollection = (TimelineCollection)source; base.GetAsFrozenCore(source); @@ -623,7 +623,7 @@ protected override void GetAsFrozenCore(Freezable source) for (int i = 0; i < count; i++) { - Timeline newValue = (Timeline) sourceTimelineCollection._collection[i].GetAsFrozen(); + Timeline newValue = (Timeline)sourceTimelineCollection._collection[i].GetAsFrozen(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); @@ -635,7 +635,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - TimelineCollection sourceTimelineCollection = (TimelineCollection) source; + TimelineCollection sourceTimelineCollection = (TimelineCollection)source; base.GetCurrentValueAsFrozenCore(source); @@ -645,7 +645,7 @@ protected override void GetCurrentValueAsFrozenCore(Freezable source) for (int i = 0; i < count; i++) { - Timeline newValue = (Timeline) sourceTimelineCollection._collection[i].GetCurrentValueAsFrozen(); + Timeline newValue = (Timeline)sourceTimelineCollection._collection[i].GetCurrentValueAsFrozen(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/TimelineGroup.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/TimelineGroup.cs index d8a8a8eeaf3..3a9d048d4cc 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/TimelineGroup.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/TimelineGroup.cs @@ -65,7 +65,7 @@ public TimelineCollection Children { get { - return (TimelineCollection) GetValue(ChildrenProperty); + return (TimelineCollection)GetValue(ChildrenProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Vector3DAnimation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Vector3DAnimation.cs index e81eae00043..18ce4f38bbf 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Vector3DAnimation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Vector3DAnimation.cs @@ -229,7 +229,7 @@ protected override Vector3D GetCurrentValueCore(Vector3D defaultOriginValue, Vec bool validateOrigin = false; bool validateDestination = false; - switch(_animationType) + switch (_animationType) { case AnimationType.Automatic: diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Vector3DAnimationUsingKeyFrames.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Vector3DAnimationUsingKeyFrames.cs index 30fd9472409..63c7ff1a4aa 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Vector3DAnimationUsingKeyFrames.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Vector3DAnimationUsingKeyFrames.cs @@ -112,7 +112,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - Vector3DAnimationUsingKeyFrames sourceAnimation = (Vector3DAnimationUsingKeyFrames) sourceFreezable; + Vector3DAnimationUsingKeyFrames sourceAnimation = (Vector3DAnimationUsingKeyFrames)sourceFreezable; base.CloneCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -123,7 +123,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - Vector3DAnimationUsingKeyFrames sourceAnimation = (Vector3DAnimationUsingKeyFrames) sourceFreezable; + Vector3DAnimationUsingKeyFrames sourceAnimation = (Vector3DAnimationUsingKeyFrames)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -134,7 +134,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable source) { - Vector3DAnimationUsingKeyFrames sourceAnimation = (Vector3DAnimationUsingKeyFrames) source; + Vector3DAnimationUsingKeyFrames sourceAnimation = (Vector3DAnimationUsingKeyFrames)source; base.GetAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -145,7 +145,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - Vector3DAnimationUsingKeyFrames sourceAnimation = (Vector3DAnimationUsingKeyFrames) source; + Vector3DAnimationUsingKeyFrames sourceAnimation = (Vector3DAnimationUsingKeyFrames)source; base.GetCurrentValueAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -814,11 +814,11 @@ private void ResolveKeyTimes() || type == KeyTimeType.TimeSpan) { break; - } + } else if (type == KeyTimeType.Paced) { hasPacedKeyTimes = true; - } + } } Debug.Assert(index < keyFrameCount, @@ -984,7 +984,7 @@ private void ResolvePacedKeyTimes() { index++; } - } + } while (index < maxKeyFrameIndex); } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Vector3DKeyFrameCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Vector3DKeyFrameCollection.cs index 95de7fa91dd..758e83f7dd3 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Vector3DKeyFrameCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/Vector3DKeyFrameCollection.cs @@ -90,7 +90,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - Vector3DKeyFrameCollection sourceCollection = (Vector3DKeyFrameCollection) sourceFreezable; + Vector3DKeyFrameCollection sourceCollection = (Vector3DKeyFrameCollection)sourceFreezable; base.CloneCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -111,7 +111,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - Vector3DKeyFrameCollection sourceCollection = (Vector3DKeyFrameCollection) sourceFreezable; + Vector3DKeyFrameCollection sourceCollection = (Vector3DKeyFrameCollection)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -132,7 +132,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable sourceFreezable) { - Vector3DKeyFrameCollection sourceCollection = (Vector3DKeyFrameCollection) sourceFreezable; + Vector3DKeyFrameCollection sourceCollection = (Vector3DKeyFrameCollection)sourceFreezable; base.GetAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -153,7 +153,7 @@ protected override void GetAsFrozenCore(Freezable sourceFreezable) /// protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable) { - Vector3DKeyFrameCollection sourceCollection = (Vector3DKeyFrameCollection) sourceFreezable; + Vector3DKeyFrameCollection sourceCollection = (Vector3DKeyFrameCollection)sourceFreezable; base.GetCurrentValueAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/VectorAnimation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/VectorAnimation.cs index cdb4c38f1e1..d840e1df3cb 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/VectorAnimation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/VectorAnimation.cs @@ -229,7 +229,7 @@ protected override Vector GetCurrentValueCore(Vector defaultOriginValue, Vector bool validateOrigin = false; bool validateDestination = false; - switch(_animationType) + switch (_animationType) { case AnimationType.Automatic: diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/VectorAnimationUsingKeyFrames.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/VectorAnimationUsingKeyFrames.cs index b51dfa90bf2..29fbd994c52 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/VectorAnimationUsingKeyFrames.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/VectorAnimationUsingKeyFrames.cs @@ -112,7 +112,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - VectorAnimationUsingKeyFrames sourceAnimation = (VectorAnimationUsingKeyFrames) sourceFreezable; + VectorAnimationUsingKeyFrames sourceAnimation = (VectorAnimationUsingKeyFrames)sourceFreezable; base.CloneCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -123,7 +123,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - VectorAnimationUsingKeyFrames sourceAnimation = (VectorAnimationUsingKeyFrames) sourceFreezable; + VectorAnimationUsingKeyFrames sourceAnimation = (VectorAnimationUsingKeyFrames)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -134,7 +134,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable source) { - VectorAnimationUsingKeyFrames sourceAnimation = (VectorAnimationUsingKeyFrames) source; + VectorAnimationUsingKeyFrames sourceAnimation = (VectorAnimationUsingKeyFrames)source; base.GetAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -145,7 +145,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - VectorAnimationUsingKeyFrames sourceAnimation = (VectorAnimationUsingKeyFrames) source; + VectorAnimationUsingKeyFrames sourceAnimation = (VectorAnimationUsingKeyFrames)source; base.GetCurrentValueAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -814,11 +814,11 @@ private void ResolveKeyTimes() || type == KeyTimeType.TimeSpan) { break; - } + } else if (type == KeyTimeType.Paced) { hasPacedKeyTimes = true; - } + } } Debug.Assert(index < keyFrameCount, @@ -984,7 +984,7 @@ private void ResolvePacedKeyTimes() { index++; } - } + } while (index < maxKeyFrameIndex); } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/VectorKeyFrameCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/VectorKeyFrameCollection.cs index 60c0ce6296d..99a3ed7d90b 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/VectorKeyFrameCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Animation/Generated/VectorKeyFrameCollection.cs @@ -90,7 +90,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - VectorKeyFrameCollection sourceCollection = (VectorKeyFrameCollection) sourceFreezable; + VectorKeyFrameCollection sourceCollection = (VectorKeyFrameCollection)sourceFreezable; base.CloneCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -111,7 +111,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - VectorKeyFrameCollection sourceCollection = (VectorKeyFrameCollection) sourceFreezable; + VectorKeyFrameCollection sourceCollection = (VectorKeyFrameCollection)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -132,7 +132,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable sourceFreezable) { - VectorKeyFrameCollection sourceCollection = (VectorKeyFrameCollection) sourceFreezable; + VectorKeyFrameCollection sourceCollection = (VectorKeyFrameCollection)sourceFreezable; base.GetAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -153,7 +153,7 @@ protected override void GetAsFrozenCore(Freezable sourceFreezable) /// protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable) { - VectorKeyFrameCollection sourceCollection = (VectorKeyFrameCollection) sourceFreezable; + VectorKeyFrameCollection sourceCollection = (VectorKeyFrameCollection)sourceFreezable; base.GetCurrentValueAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/BevelBitmapEffect.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/BevelBitmapEffect.cs index 2b3a4ad9f2a..1e897903de6 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/BevelBitmapEffect.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/BevelBitmapEffect.cs @@ -95,7 +95,7 @@ public double BevelWidth { get { - return (double) GetValue(BevelWidthProperty); + return (double)GetValue(BevelWidthProperty); } set { @@ -110,7 +110,7 @@ public double Relief { get { - return (double) GetValue(ReliefProperty); + return (double)GetValue(ReliefProperty); } set { @@ -125,7 +125,7 @@ public double LightAngle { get { - return (double) GetValue(LightAngleProperty); + return (double)GetValue(LightAngleProperty); } set { @@ -140,7 +140,7 @@ public double Smoothness { get { - return (double) GetValue(SmoothnessProperty); + return (double)GetValue(SmoothnessProperty); } set { @@ -155,7 +155,7 @@ public EdgeProfile EdgeProfile { get { - return (EdgeProfile) GetValue(EdgeProfileProperty); + return (EdgeProfile)GetValue(EdgeProfileProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/BitmapEffectCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/BitmapEffectCollection.cs index cbe475f7493..52a1a7076b7 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/BitmapEffectCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/BitmapEffectCollection.cs @@ -476,10 +476,10 @@ internal override void OnInheritanceContextChangedCore(EventArgs args) { base.OnInheritanceContextChangedCore(args); - for (int i=0; i protected override void CloneCore(Freezable source) { - BitmapEffectCollection sourceBitmapEffectCollection = (BitmapEffectCollection) source; + BitmapEffectCollection sourceBitmapEffectCollection = (BitmapEffectCollection)source; base.CloneCore(source); @@ -582,7 +582,7 @@ protected override void CloneCore(Freezable source) for (int i = 0; i < count; i++) { - BitmapEffect newValue = (BitmapEffect) sourceBitmapEffectCollection._collection[i].Clone(); + BitmapEffect newValue = (BitmapEffect)sourceBitmapEffectCollection._collection[i].Clone(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); @@ -594,7 +594,7 @@ protected override void CloneCore(Freezable source) /// protected override void CloneCurrentValueCore(Freezable source) { - BitmapEffectCollection sourceBitmapEffectCollection = (BitmapEffectCollection) source; + BitmapEffectCollection sourceBitmapEffectCollection = (BitmapEffectCollection)source; base.CloneCurrentValueCore(source); @@ -604,7 +604,7 @@ protected override void CloneCurrentValueCore(Freezable source) for (int i = 0; i < count; i++) { - BitmapEffect newValue = (BitmapEffect) sourceBitmapEffectCollection._collection[i].CloneCurrentValue(); + BitmapEffect newValue = (BitmapEffect)sourceBitmapEffectCollection._collection[i].CloneCurrentValue(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); @@ -616,7 +616,7 @@ protected override void CloneCurrentValueCore(Freezable source) /// protected override void GetAsFrozenCore(Freezable source) { - BitmapEffectCollection sourceBitmapEffectCollection = (BitmapEffectCollection) source; + BitmapEffectCollection sourceBitmapEffectCollection = (BitmapEffectCollection)source; base.GetAsFrozenCore(source); @@ -626,7 +626,7 @@ protected override void GetAsFrozenCore(Freezable source) for (int i = 0; i < count; i++) { - BitmapEffect newValue = (BitmapEffect) sourceBitmapEffectCollection._collection[i].GetAsFrozen(); + BitmapEffect newValue = (BitmapEffect)sourceBitmapEffectCollection._collection[i].GetAsFrozen(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); @@ -638,7 +638,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - BitmapEffectCollection sourceBitmapEffectCollection = (BitmapEffectCollection) source; + BitmapEffectCollection sourceBitmapEffectCollection = (BitmapEffectCollection)source; base.GetCurrentValueAsFrozenCore(source); @@ -648,7 +648,7 @@ protected override void GetCurrentValueAsFrozenCore(Freezable source) for (int i = 0; i < count; i++) { - BitmapEffect newValue = (BitmapEffect) sourceBitmapEffectCollection._collection[i].GetCurrentValueAsFrozen(); + BitmapEffect newValue = (BitmapEffect)sourceBitmapEffectCollection._collection[i].GetCurrentValueAsFrozen(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/BitmapEffectGroup.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/BitmapEffectGroup.cs index 223a7acffce..706de9f3ab9 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/BitmapEffectGroup.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/BitmapEffectGroup.cs @@ -68,7 +68,7 @@ public BitmapEffectCollection Children { get { - return (BitmapEffectCollection) GetValue(ChildrenProperty); + return (BitmapEffectCollection)GetValue(ChildrenProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/BitmapEffectInput.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/BitmapEffectInput.cs index 696f9163ac8..c3d58ec1053 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/BitmapEffectInput.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/BitmapEffectInput.cs @@ -74,7 +74,7 @@ public BitmapSource Input { get { - return (BitmapSource) GetValue(InputProperty); + return (BitmapSource)GetValue(InputProperty); } set { @@ -89,7 +89,7 @@ public BrushMappingMode AreaToApplyEffectUnits { get { - return (BrushMappingMode) GetValue(AreaToApplyEffectUnitsProperty); + return (BrushMappingMode)GetValue(AreaToApplyEffectUnitsProperty); } set { @@ -104,7 +104,7 @@ public Rect AreaToApplyEffect { get { - return (Rect) GetValue(AreaToApplyEffectProperty); + return (Rect)GetValue(AreaToApplyEffectProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/BlurBitmapEffect.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/BlurBitmapEffect.cs index 1069614f5c1..03875251fc3 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/BlurBitmapEffect.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/BlurBitmapEffect.cs @@ -74,7 +74,7 @@ public double Radius { get { - return (double) GetValue(RadiusProperty); + return (double)GetValue(RadiusProperty); } set { @@ -89,7 +89,7 @@ public KernelType KernelType { get { - return (KernelType) GetValue(KernelTypeProperty); + return (KernelType)GetValue(KernelTypeProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/BlurEffect.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/BlurEffect.cs index ae34f7f4ee6..29d5fa00b9c 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/BlurEffect.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/BlurEffect.cs @@ -88,7 +88,7 @@ public double Radius { get { - return (double) GetValue(RadiusProperty); + return (double)GetValue(RadiusProperty); } set { @@ -103,7 +103,7 @@ public KernelType KernelType { get { - return (KernelType) GetValue(KernelTypeProperty); + return (KernelType)GetValue(KernelTypeProperty); } set { @@ -118,7 +118,7 @@ public RenderingBias RenderingBias { get { - return (RenderingBias) GetValue(RenderingBiasProperty); + return (RenderingBias)GetValue(RenderingBiasProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/DropShadowBitmapEffect.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/DropShadowBitmapEffect.cs index aa274adc3bb..624a731806f 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/DropShadowBitmapEffect.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/DropShadowBitmapEffect.cs @@ -109,7 +109,7 @@ public double ShadowDepth { get { - return (double) GetValue(ShadowDepthProperty); + return (double)GetValue(ShadowDepthProperty); } set { @@ -124,7 +124,7 @@ public Color Color { get { - return (Color) GetValue(ColorProperty); + return (Color)GetValue(ColorProperty); } set { @@ -139,7 +139,7 @@ public double Direction { get { - return (double) GetValue(DirectionProperty); + return (double)GetValue(DirectionProperty); } set { @@ -154,7 +154,7 @@ public double Noise { get { - return (double) GetValue(NoiseProperty); + return (double)GetValue(NoiseProperty); } set { @@ -169,7 +169,7 @@ public double Opacity { get { - return (double) GetValue(OpacityProperty); + return (double)GetValue(OpacityProperty); } set { @@ -184,7 +184,7 @@ public double Softness { get { - return (double) GetValue(SoftnessProperty); + return (double)GetValue(SoftnessProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/DropShadowEffect.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/DropShadowEffect.cs index 47e6d651412..00e0722ba6a 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/DropShadowEffect.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/DropShadowEffect.cs @@ -109,7 +109,7 @@ public double ShadowDepth { get { - return (double) GetValue(ShadowDepthProperty); + return (double)GetValue(ShadowDepthProperty); } set { @@ -124,7 +124,7 @@ public Color Color { get { - return (Color) GetValue(ColorProperty); + return (Color)GetValue(ColorProperty); } set { @@ -139,7 +139,7 @@ public double Direction { get { - return (double) GetValue(DirectionProperty); + return (double)GetValue(DirectionProperty); } set { @@ -154,7 +154,7 @@ public double Opacity { get { - return (double) GetValue(OpacityProperty); + return (double)GetValue(OpacityProperty); } set { @@ -169,7 +169,7 @@ public double BlurRadius { get { - return (double) GetValue(BlurRadiusProperty); + return (double)GetValue(BlurRadiusProperty); } set { @@ -184,7 +184,7 @@ public RenderingBias RenderingBias { get { - return (RenderingBias) GetValue(RenderingBiasProperty); + return (RenderingBias)GetValue(RenderingBiasProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/EdgeProfile.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/EdgeProfile.cs index 8f833e51d1a..afc5c273b6c 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/EdgeProfile.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/EdgeProfile.cs @@ -35,5 +35,5 @@ public enum EdgeProfile /// BulgedUp - Use a bulged up edge profile /// BulgedUp = 3, - } + } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/EmbossBitmapEffect.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/EmbossBitmapEffect.cs index d0a5898f9a0..338c96b46d9 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/EmbossBitmapEffect.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/EmbossBitmapEffect.cs @@ -81,7 +81,7 @@ public double LightAngle { get { - return (double) GetValue(LightAngleProperty); + return (double)GetValue(LightAngleProperty); } set { @@ -96,7 +96,7 @@ public double Relief { get { - return (double) GetValue(ReliefProperty); + return (double)GetValue(ReliefProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/KernelType.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/KernelType.cs index f1960c03b29..7ad9658c700 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/KernelType.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/KernelType.cs @@ -25,5 +25,5 @@ public enum KernelType /// Box - Use a Box filter /// Box = 1, - } + } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/OuterGlowBitmapEffect.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/OuterGlowBitmapEffect.cs index c871fd73952..4916b314962 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/OuterGlowBitmapEffect.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/OuterGlowBitmapEffect.cs @@ -95,7 +95,7 @@ public Color GlowColor { get { - return (Color) GetValue(GlowColorProperty); + return (Color)GetValue(GlowColorProperty); } set { @@ -110,7 +110,7 @@ public double GlowSize { get { - return (double) GetValue(GlowSizeProperty); + return (double)GetValue(GlowSizeProperty); } set { @@ -125,7 +125,7 @@ public double Noise { get { - return (double) GetValue(NoiseProperty); + return (double)GetValue(NoiseProperty); } set { @@ -140,7 +140,7 @@ public double Opacity { get { - return (double) GetValue(OpacityProperty); + return (double)GetValue(OpacityProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/PixelShader.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/PixelShader.cs index b3f316f7d27..71caa47be72 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/PixelShader.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/PixelShader.cs @@ -83,7 +83,7 @@ public Uri UriSource { get { - return (Uri) GetValue(UriSourceProperty); + return (Uri)GetValue(UriSourceProperty); } set { @@ -98,7 +98,7 @@ public ShaderRenderMode ShaderRenderMode { get { - return (ShaderRenderMode) GetValue(ShaderRenderModeProperty); + return (ShaderRenderMode)GetValue(ShaderRenderModeProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/RenderingBias.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/RenderingBias.cs index a5a803fc09f..855cd3458dd 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/RenderingBias.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/RenderingBias.cs @@ -25,5 +25,5 @@ public enum RenderingBias /// Quality - Bias towards quality /// Quality = 1, - } + } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/ShaderEffect.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/ShaderEffect.cs index 7070249ab12..f4a880314d3 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/ShaderEffect.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/ShaderEffect.cs @@ -117,7 +117,7 @@ protected PixelShader PixelShader { get { - return (PixelShader) GetValue(PixelShaderProperty); + return (PixelShader)GetValue(PixelShaderProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/ShaderRenderMode.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/ShaderRenderMode.cs index 0657b5ea753..dc858ca165f 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/ShaderRenderMode.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Effects/Generated/ShaderRenderMode.cs @@ -30,5 +30,5 @@ public enum ShaderRenderMode /// HardwareOnly - Require hardware rendering, ignore otherwise /// HardwareOnly = 2, - } + } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/AlignmentX.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/AlignmentX.cs index 27b4eedb7a2..910303a8a35 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/AlignmentX.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/AlignmentX.cs @@ -31,5 +31,5 @@ public enum AlignmentX /// Right - Align contents towards the right of a space. /// Right = 2, - } + } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/AlignmentY.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/AlignmentY.cs index af8910e6c2d..a67ea121333 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/AlignmentY.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/AlignmentY.cs @@ -31,5 +31,5 @@ public enum AlignmentY /// Bottom - Align contents towards the bottom of a space. /// Bottom = 2, - } + } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/ArcSegment.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/ArcSegment.cs index f53d8a67b24..acbe93b3a2e 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/ArcSegment.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/ArcSegment.cs @@ -75,7 +75,7 @@ public Point Point { get { - return (Point) GetValue(PointProperty); + return (Point)GetValue(PointProperty); } set { @@ -90,7 +90,7 @@ public Size Size { get { - return (Size) GetValue(SizeProperty); + return (Size)GetValue(SizeProperty); } set { @@ -105,7 +105,7 @@ public double RotationAngle { get { - return (double) GetValue(RotationAngleProperty); + return (double)GetValue(RotationAngleProperty); } set { @@ -120,7 +120,7 @@ public bool IsLargeArc { get { - return (bool) GetValue(IsLargeArcProperty); + return (bool)GetValue(IsLargeArcProperty); } set { @@ -135,7 +135,7 @@ public SweepDirection SweepDirection { get { - return (SweepDirection) GetValue(SweepDirectionProperty); + return (SweepDirection)GetValue(SweepDirectionProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/BezierSegment.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/BezierSegment.cs index 02b5db3dfc9..53292135231 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/BezierSegment.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/BezierSegment.cs @@ -75,7 +75,7 @@ public Point Point1 { get { - return (Point) GetValue(Point1Property); + return (Point)GetValue(Point1Property); } set { @@ -90,7 +90,7 @@ public Point Point2 { get { - return (Point) GetValue(Point2Property); + return (Point)GetValue(Point2Property); } set { @@ -105,7 +105,7 @@ public Point Point3 { get { - return (Point) GetValue(Point3Property); + return (Point)GetValue(Point3Property); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/BitmapCache.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/BitmapCache.cs index fe5d2e41e11..453bfc9b1be 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/BitmapCache.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/BitmapCache.cs @@ -95,7 +95,7 @@ public double RenderAtScale { get { - return (double) GetValue(RenderAtScaleProperty); + return (double)GetValue(RenderAtScaleProperty); } set { @@ -110,7 +110,7 @@ public bool SnapsToDevicePixels { get { - return (bool) GetValue(SnapsToDevicePixelsProperty); + return (bool)GetValue(SnapsToDevicePixelsProperty); } set { @@ -125,7 +125,7 @@ public bool EnableClearType { get { - return (bool) GetValue(EnableClearTypeProperty); + return (bool)GetValue(EnableClearTypeProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/BitmapCacheBrush.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/BitmapCacheBrush.cs index 8518dbf9976..19317a2d172 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/BitmapCacheBrush.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/BitmapCacheBrush.cs @@ -197,7 +197,7 @@ public Visual Target { get { - return (Visual) GetValue(TargetProperty); + return (Visual)GetValue(TargetProperty); } set { @@ -212,7 +212,7 @@ public BitmapCache BitmapCache { get { - return (BitmapCache) GetValue(BitmapCacheProperty); + return (BitmapCache)GetValue(BitmapCacheProperty); } set { @@ -229,7 +229,7 @@ public bool AutoLayoutContent { get { - return (bool) GetValue(AutoLayoutContentProperty); + return (bool)GetValue(AutoLayoutContentProperty); } set { @@ -244,7 +244,7 @@ internal Visual InternalTarget { get { - return (Visual) GetValue(InternalTargetProperty); + return (Visual)GetValue(InternalTargetProperty); } set { @@ -262,7 +262,7 @@ internal bool AutoWrapTarget { get { - return (bool) GetValue(AutoWrapTargetProperty); + return (bool)GetValue(AutoWrapTargetProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/BitmapScalingMode.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/BitmapScalingMode.cs index a1bb1bdb6e4..222cf41de8b 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/BitmapScalingMode.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/BitmapScalingMode.cs @@ -47,5 +47,5 @@ public enum BitmapScalingMode /// NearestNeighbor - Rendering engine will use nearest-neighbor interpolation. /// NearestNeighbor = 3, - } + } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/Brush.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/Brush.cs index 42f6e588839..a6b396a0010 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/Brush.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/Brush.cs @@ -180,7 +180,7 @@ public double Opacity { get { - return (double) GetValue(OpacityProperty); + return (double)GetValue(OpacityProperty); } set { @@ -195,7 +195,7 @@ public Transform Transform { get { - return (Transform) GetValue(TransformProperty); + return (Transform)GetValue(TransformProperty); } set { @@ -210,7 +210,7 @@ public Transform RelativeTransform { get { - return (Transform) GetValue(RelativeTransformProperty); + return (Transform)GetValue(RelativeTransformProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/BrushMappingMode.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/BrushMappingMode.cs index dad2a9a35ae..d37985b31af 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/BrushMappingMode.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/BrushMappingMode.cs @@ -30,5 +30,5 @@ public enum BrushMappingMode /// bounding box measure. /// RelativeToBoundingBox = 1, - } + } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/CachingHint.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/CachingHint.cs index 9828394d8cd..66ba2e14175 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/CachingHint.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/CachingHint.cs @@ -26,5 +26,5 @@ public enum CachingHint /// Cache - Cache rendered content when possible. /// Cache = 1, - } + } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/ClearTypeHint.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/ClearTypeHint.cs index 765bb620fc1..800e1e6e1cb 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/ClearTypeHint.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/ClearTypeHint.cs @@ -30,5 +30,5 @@ public enum ClearTypeHint /// again be disabled. /// Enabled = 1, - } + } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/ColorInterpolationMode.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/ColorInterpolationMode.cs index 38e53e09e13..e3a7f12f33f 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/ColorInterpolationMode.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/ColorInterpolationMode.cs @@ -26,5 +26,5 @@ public enum ColorInterpolationMode /// SRgbLinearInterpolation - Colors are interpolated in the sRGB color space /// SRgbLinearInterpolation = 1, - } + } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/CombinedGeometry.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/CombinedGeometry.cs index f899112f770..556c24bd086 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/CombinedGeometry.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/CombinedGeometry.cs @@ -177,7 +177,7 @@ public GeometryCombineMode GeometryCombineMode { get { - return (GeometryCombineMode) GetValue(GeometryCombineModeProperty); + return (GeometryCombineMode)GetValue(GeometryCombineModeProperty); } set { @@ -192,7 +192,7 @@ public Geometry Geometry1 { get { - return (Geometry) GetValue(Geometry1Property); + return (Geometry)GetValue(Geometry1Property); } set { @@ -207,7 +207,7 @@ public Geometry Geometry2 { get { - return (Geometry) GetValue(Geometry2Property); + return (Geometry)GetValue(Geometry2Property); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/DashStyle.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/DashStyle.cs index f57dab52fa6..d88299bcac9 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/DashStyle.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/DashStyle.cs @@ -92,7 +92,7 @@ public double Offset { get { - return (double) GetValue(OffsetProperty); + return (double)GetValue(OffsetProperty); } set { @@ -107,7 +107,7 @@ public DoubleCollection Dashes { get { - return (DoubleCollection) GetValue(DashesProperty); + return (DoubleCollection)GetValue(DashesProperty); } set { @@ -185,7 +185,7 @@ internal override void UpdateResource(DUCE.Channel channel, bool skipOnChannelCh // Copy this collection's elements (or their handles) to reserved data - for(int i = 0; i < DashesCount; i++) + for (int i = 0; i < DashesCount; i++) { Double resource = vDashes.Internal_GetItem(i); channel.AppendCommandData( diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/DoubleCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/DoubleCollection.cs index 4190fb47727..873ca96d141 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/DoubleCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/DoubleCollection.cs @@ -522,7 +522,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable source) { - DoubleCollection sourceDoubleCollection = (DoubleCollection) source; + DoubleCollection sourceDoubleCollection = (DoubleCollection)source; base.CloneCore(source); @@ -541,7 +541,7 @@ protected override void CloneCore(Freezable source) /// protected override void CloneCurrentValueCore(Freezable source) { - DoubleCollection sourceDoubleCollection = (DoubleCollection) source; + DoubleCollection sourceDoubleCollection = (DoubleCollection)source; base.CloneCurrentValueCore(source); @@ -560,7 +560,7 @@ protected override void CloneCurrentValueCore(Freezable source) /// protected override void GetAsFrozenCore(Freezable source) { - DoubleCollection sourceDoubleCollection = (DoubleCollection) source; + DoubleCollection sourceDoubleCollection = (DoubleCollection)source; base.GetAsFrozenCore(source); @@ -579,7 +579,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - DoubleCollection sourceDoubleCollection = (DoubleCollection) source; + DoubleCollection sourceDoubleCollection = (DoubleCollection)source; base.GetCurrentValueAsFrozenCore(source); @@ -689,7 +689,7 @@ internal string ConvertToString(string format, IFormatProvider provider) // Helper to get the numeric list separator for a given culture. // char separator = MS.Internal.TokenizerHelper.GetNumericListSeparator(provider); - for (int i=0; i<_collection.Count; i++) + for (int i = 0; i < _collection.Count; i++) { str.AppendFormat( provider, diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/DrawingBrush.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/DrawingBrush.cs index 13c731dda86..208983cfb46 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/DrawingBrush.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/DrawingBrush.cs @@ -122,7 +122,7 @@ public Drawing Drawing { get { - return (Drawing) GetValue(DrawingProperty); + return (Drawing)GetValue(DrawingProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/DrawingCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/DrawingCollection.cs index ffca46ec862..e49a048e740 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/DrawingCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/DrawingCollection.cs @@ -495,10 +495,10 @@ internal override void OnInheritanceContextChangedCore(EventArgs args) { base.OnInheritanceContextChangedCore(args); - for (int i=0; i protected override void CloneCore(Freezable source) { - DrawingCollection sourceDrawingCollection = (DrawingCollection) source; + DrawingCollection sourceDrawingCollection = (DrawingCollection)source; base.CloneCore(source); @@ -624,7 +624,7 @@ protected override void CloneCore(Freezable source) for (int i = 0; i < count; i++) { - Drawing newValue = (Drawing) sourceDrawingCollection._collection[i].Clone(); + Drawing newValue = (Drawing)sourceDrawingCollection._collection[i].Clone(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); OnInsert(newValue); @@ -636,7 +636,7 @@ protected override void CloneCore(Freezable source) /// protected override void CloneCurrentValueCore(Freezable source) { - DrawingCollection sourceDrawingCollection = (DrawingCollection) source; + DrawingCollection sourceDrawingCollection = (DrawingCollection)source; base.CloneCurrentValueCore(source); @@ -646,7 +646,7 @@ protected override void CloneCurrentValueCore(Freezable source) for (int i = 0; i < count; i++) { - Drawing newValue = (Drawing) sourceDrawingCollection._collection[i].CloneCurrentValue(); + Drawing newValue = (Drawing)sourceDrawingCollection._collection[i].CloneCurrentValue(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); OnInsert(newValue); @@ -658,7 +658,7 @@ protected override void CloneCurrentValueCore(Freezable source) /// protected override void GetAsFrozenCore(Freezable source) { - DrawingCollection sourceDrawingCollection = (DrawingCollection) source; + DrawingCollection sourceDrawingCollection = (DrawingCollection)source; base.GetAsFrozenCore(source); @@ -668,7 +668,7 @@ protected override void GetAsFrozenCore(Freezable source) for (int i = 0; i < count; i++) { - Drawing newValue = (Drawing) sourceDrawingCollection._collection[i].GetAsFrozen(); + Drawing newValue = (Drawing)sourceDrawingCollection._collection[i].GetAsFrozen(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); OnInsert(newValue); @@ -680,7 +680,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - DrawingCollection sourceDrawingCollection = (DrawingCollection) source; + DrawingCollection sourceDrawingCollection = (DrawingCollection)source; base.GetCurrentValueAsFrozenCore(source); @@ -690,7 +690,7 @@ protected override void GetCurrentValueAsFrozenCore(Freezable source) for (int i = 0; i < count; i++) { - Drawing newValue = (Drawing) sourceDrawingCollection._collection[i].GetCurrentValueAsFrozen(); + Drawing newValue = (Drawing)sourceDrawingCollection._collection[i].GetCurrentValueAsFrozen(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); OnInsert(newValue); diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/DrawingGroup.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/DrawingGroup.cs index 6da866d018e..a673acef96f 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/DrawingGroup.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/DrawingGroup.cs @@ -407,7 +407,7 @@ public DrawingCollection Children { get { - return (DrawingCollection) GetValue(ChildrenProperty); + return (DrawingCollection)GetValue(ChildrenProperty); } set { @@ -422,7 +422,7 @@ public Geometry ClipGeometry { get { - return (Geometry) GetValue(ClipGeometryProperty); + return (Geometry)GetValue(ClipGeometryProperty); } set { @@ -437,7 +437,7 @@ public double Opacity { get { - return (double) GetValue(OpacityProperty); + return (double)GetValue(OpacityProperty); } set { @@ -452,7 +452,7 @@ public Brush OpacityMask { get { - return (Brush) GetValue(OpacityMaskProperty); + return (Brush)GetValue(OpacityMaskProperty); } set { @@ -467,7 +467,7 @@ public Transform Transform { get { - return (Transform) GetValue(TransformProperty); + return (Transform)GetValue(TransformProperty); } set { @@ -482,7 +482,7 @@ public GuidelineSet GuidelineSet { get { - return (GuidelineSet) GetValue(GuidelineSetProperty); + return (GuidelineSet)GetValue(GuidelineSetProperty); } set { @@ -497,7 +497,7 @@ public BitmapEffect BitmapEffect { get { - return (BitmapEffect) GetValue(BitmapEffectProperty); + return (BitmapEffect)GetValue(BitmapEffectProperty); } set { @@ -512,7 +512,7 @@ public BitmapEffectInput BitmapEffectInput { get { - return (BitmapEffectInput) GetValue(BitmapEffectInputProperty); + return (BitmapEffectInput)GetValue(BitmapEffectInputProperty); } set { @@ -617,7 +617,7 @@ internal override void UpdateResource(DUCE.Channel channel, bool skipOnChannelCh // Copy this collection's elements (or their handles) to reserved data - for(int i = 0; i < ChildrenCount; i++) + for (int i = 0; i < ChildrenCount; i++) { DUCE.ResourceHandle resource = ((DUCE.IResource)vChildren.Internal_GetItem(i)).GetHandle(channel);; channel.AppendCommandData( diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/DrawingImage.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/DrawingImage.cs index 3bd676e9ec3..2281e35ca36 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/DrawingImage.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/DrawingImage.cs @@ -122,7 +122,7 @@ public Drawing Drawing { get { - return (Drawing) GetValue(DrawingProperty); + return (Drawing)GetValue(DrawingProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/EdgeMode.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/EdgeMode.cs index f45135fa784..f1289107ae0 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/EdgeMode.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/EdgeMode.cs @@ -27,5 +27,5 @@ public enum EdgeMode /// Aliased - Render edges of non-text primitives as aliased edges. /// Aliased = 1, - } + } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/EllipseGeometry.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/EllipseGeometry.cs index af908044e92..49eea01d28b 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/EllipseGeometry.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/EllipseGeometry.cs @@ -95,7 +95,7 @@ public double RadiusX { get { - return (double) GetValue(RadiusXProperty); + return (double)GetValue(RadiusXProperty); } set { @@ -110,7 +110,7 @@ public double RadiusY { get { - return (double) GetValue(RadiusYProperty); + return (double)GetValue(RadiusYProperty); } set { @@ -125,7 +125,7 @@ public Point Center { get { - return (Point) GetValue(CenterProperty); + return (Point)GetValue(CenterProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/FillRule.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/FillRule.cs index c54207ee266..fe929217357 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/FillRule.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/FillRule.cs @@ -25,5 +25,5 @@ public enum FillRule /// Nonzero - /// Nonzero = 1, - } + } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GeneralTransformCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GeneralTransformCollection.cs index 32d28cce9ec..a532862632f 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GeneralTransformCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GeneralTransformCollection.cs @@ -483,10 +483,10 @@ internal override void OnInheritanceContextChangedCore(EventArgs args) { base.OnInheritanceContextChangedCore(args); - for (int i=0; i protected override void CloneCore(Freezable source) { - GeneralTransformCollection sourceGeneralTransformCollection = (GeneralTransformCollection) source; + GeneralTransformCollection sourceGeneralTransformCollection = (GeneralTransformCollection)source; base.CloneCore(source); @@ -589,7 +589,7 @@ protected override void CloneCore(Freezable source) for (int i = 0; i < count; i++) { - GeneralTransform newValue = (GeneralTransform) sourceGeneralTransformCollection._collection[i].Clone(); + GeneralTransform newValue = (GeneralTransform)sourceGeneralTransformCollection._collection[i].Clone(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); @@ -601,7 +601,7 @@ protected override void CloneCore(Freezable source) /// protected override void CloneCurrentValueCore(Freezable source) { - GeneralTransformCollection sourceGeneralTransformCollection = (GeneralTransformCollection) source; + GeneralTransformCollection sourceGeneralTransformCollection = (GeneralTransformCollection)source; base.CloneCurrentValueCore(source); @@ -611,7 +611,7 @@ protected override void CloneCurrentValueCore(Freezable source) for (int i = 0; i < count; i++) { - GeneralTransform newValue = (GeneralTransform) sourceGeneralTransformCollection._collection[i].CloneCurrentValue(); + GeneralTransform newValue = (GeneralTransform)sourceGeneralTransformCollection._collection[i].CloneCurrentValue(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); @@ -623,7 +623,7 @@ protected override void CloneCurrentValueCore(Freezable source) /// protected override void GetAsFrozenCore(Freezable source) { - GeneralTransformCollection sourceGeneralTransformCollection = (GeneralTransformCollection) source; + GeneralTransformCollection sourceGeneralTransformCollection = (GeneralTransformCollection)source; base.GetAsFrozenCore(source); @@ -633,7 +633,7 @@ protected override void GetAsFrozenCore(Freezable source) for (int i = 0; i < count; i++) { - GeneralTransform newValue = (GeneralTransform) sourceGeneralTransformCollection._collection[i].GetAsFrozen(); + GeneralTransform newValue = (GeneralTransform)sourceGeneralTransformCollection._collection[i].GetAsFrozen(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); @@ -645,7 +645,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - GeneralTransformCollection sourceGeneralTransformCollection = (GeneralTransformCollection) source; + GeneralTransformCollection sourceGeneralTransformCollection = (GeneralTransformCollection)source; base.GetCurrentValueAsFrozenCore(source); @@ -655,7 +655,7 @@ protected override void GetCurrentValueAsFrozenCore(Freezable source) for (int i = 0; i < count; i++) { - GeneralTransform newValue = (GeneralTransform) sourceGeneralTransformCollection._collection[i].GetCurrentValueAsFrozen(); + GeneralTransform newValue = (GeneralTransform)sourceGeneralTransformCollection._collection[i].GetCurrentValueAsFrozen(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GeneralTransformGroup.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GeneralTransformGroup.cs index 25123a1be7c..234db9e95ff 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GeneralTransformGroup.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GeneralTransformGroup.cs @@ -75,7 +75,7 @@ public GeneralTransformCollection Children { get { - return (GeneralTransformCollection) GetValue(ChildrenProperty); + return (GeneralTransformCollection)GetValue(ChildrenProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/Geometry.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/Geometry.cs index 252720487ae..554abc34082 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/Geometry.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/Geometry.cs @@ -127,7 +127,7 @@ public Transform Transform { get { - return (Transform) GetValue(TransformProperty); + return (Transform)GetValue(TransformProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GeometryCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GeometryCollection.cs index 7ba076d3e48..b29016bf964 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GeometryCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GeometryCollection.cs @@ -495,10 +495,10 @@ internal override void OnInheritanceContextChangedCore(EventArgs args) { base.OnInheritanceContextChangedCore(args); - for (int i=0; i protected override void CloneCore(Freezable source) { - GeometryCollection sourceGeometryCollection = (GeometryCollection) source; + GeometryCollection sourceGeometryCollection = (GeometryCollection)source; base.CloneCore(source); @@ -624,7 +624,7 @@ protected override void CloneCore(Freezable source) for (int i = 0; i < count; i++) { - Geometry newValue = (Geometry) sourceGeometryCollection._collection[i].Clone(); + Geometry newValue = (Geometry)sourceGeometryCollection._collection[i].Clone(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); OnInsert(newValue); @@ -636,7 +636,7 @@ protected override void CloneCore(Freezable source) /// protected override void CloneCurrentValueCore(Freezable source) { - GeometryCollection sourceGeometryCollection = (GeometryCollection) source; + GeometryCollection sourceGeometryCollection = (GeometryCollection)source; base.CloneCurrentValueCore(source); @@ -646,7 +646,7 @@ protected override void CloneCurrentValueCore(Freezable source) for (int i = 0; i < count; i++) { - Geometry newValue = (Geometry) sourceGeometryCollection._collection[i].CloneCurrentValue(); + Geometry newValue = (Geometry)sourceGeometryCollection._collection[i].CloneCurrentValue(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); OnInsert(newValue); @@ -658,7 +658,7 @@ protected override void CloneCurrentValueCore(Freezable source) /// protected override void GetAsFrozenCore(Freezable source) { - GeometryCollection sourceGeometryCollection = (GeometryCollection) source; + GeometryCollection sourceGeometryCollection = (GeometryCollection)source; base.GetAsFrozenCore(source); @@ -668,7 +668,7 @@ protected override void GetAsFrozenCore(Freezable source) for (int i = 0; i < count; i++) { - Geometry newValue = (Geometry) sourceGeometryCollection._collection[i].GetAsFrozen(); + Geometry newValue = (Geometry)sourceGeometryCollection._collection[i].GetAsFrozen(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); OnInsert(newValue); @@ -680,7 +680,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - GeometryCollection sourceGeometryCollection = (GeometryCollection) source; + GeometryCollection sourceGeometryCollection = (GeometryCollection)source; base.GetCurrentValueAsFrozenCore(source); @@ -690,7 +690,7 @@ protected override void GetCurrentValueAsFrozenCore(Freezable source) for (int i = 0; i < count; i++) { - Geometry newValue = (Geometry) sourceGeometryCollection._collection[i].GetCurrentValueAsFrozen(); + Geometry newValue = (Geometry)sourceGeometryCollection._collection[i].GetCurrentValueAsFrozen(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); OnInsert(newValue); diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GeometryCombineMode.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GeometryCombineMode.cs index abdaebba40d..705ac98c9b3 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GeometryCombineMode.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GeometryCombineMode.cs @@ -40,5 +40,5 @@ public enum GeometryCombineMode /// first geometry but not the second geometry. /// Exclude = 3, - } + } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GeometryDrawing.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GeometryDrawing.cs index f77911f9b63..2e7c9ad95b7 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GeometryDrawing.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GeometryDrawing.cs @@ -218,7 +218,7 @@ public Brush Brush { get { - return (Brush) GetValue(BrushProperty); + return (Brush)GetValue(BrushProperty); } set { @@ -233,7 +233,7 @@ public Pen Pen { get { - return (Pen) GetValue(PenProperty); + return (Pen)GetValue(PenProperty); } set { @@ -248,7 +248,7 @@ public Geometry Geometry { get { - return (Geometry) GetValue(GeometryProperty); + return (Geometry)GetValue(GeometryProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GeometryGroup.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GeometryGroup.cs index 110a591395c..191ee89dcfc 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GeometryGroup.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GeometryGroup.cs @@ -172,7 +172,7 @@ public FillRule FillRule { get { - return (FillRule) GetValue(FillRuleProperty); + return (FillRule)GetValue(FillRuleProperty); } set { @@ -187,7 +187,7 @@ public GeometryCollection Children { get { - return (GeometryCollection) GetValue(ChildrenProperty); + return (GeometryCollection)GetValue(ChildrenProperty); } set { @@ -273,7 +273,7 @@ internal override void UpdateResource(DUCE.Channel channel, bool skipOnChannelCh // Copy this collection's elements (or their handles) to reserved data - for(int i = 0; i < ChildrenCount; i++) + for (int i = 0; i < ChildrenCount; i++) { DUCE.ResourceHandle resource = ((DUCE.IResource)vChildren.Internal_GetItem(i)).GetHandle(channel);; channel.AppendCommandData( diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GlyphRunDrawing.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GlyphRunDrawing.cs index 65d3da3b642..ac7df18194e 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GlyphRunDrawing.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GlyphRunDrawing.cs @@ -151,7 +151,7 @@ public GlyphRun GlyphRun { get { - return (GlyphRun) GetValue(GlyphRunProperty); + return (GlyphRun)GetValue(GlyphRunProperty); } set { @@ -166,7 +166,7 @@ public Brush ForegroundBrush { get { - return (Brush) GetValue(ForegroundBrushProperty); + return (Brush)GetValue(ForegroundBrushProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GradientBrush.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GradientBrush.cs index 4f3eb03f620..4b20cd6372f 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GradientBrush.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GradientBrush.cs @@ -106,7 +106,7 @@ public ColorInterpolationMode ColorInterpolationMode { get { - return (ColorInterpolationMode) GetValue(ColorInterpolationModeProperty); + return (ColorInterpolationMode)GetValue(ColorInterpolationModeProperty); } set { @@ -121,7 +121,7 @@ public BrushMappingMode MappingMode { get { - return (BrushMappingMode) GetValue(MappingModeProperty); + return (BrushMappingMode)GetValue(MappingModeProperty); } set { @@ -136,7 +136,7 @@ public GradientSpreadMethod SpreadMethod { get { - return (GradientSpreadMethod) GetValue(SpreadMethodProperty); + return (GradientSpreadMethod)GetValue(SpreadMethodProperty); } set { @@ -151,7 +151,7 @@ public GradientStopCollection GradientStops { get { - return (GradientStopCollection) GetValue(GradientStopsProperty); + return (GradientStopCollection)GetValue(GradientStopsProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GradientSpreadMethod.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GradientSpreadMethod.cs index 43d227a7e27..510d75a60e4 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GradientSpreadMethod.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GradientSpreadMethod.cs @@ -32,5 +32,5 @@ public enum GradientSpreadMethod /// Repeat - Repeat - The gradient is drawn again and again. /// Repeat = 2, - } + } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GradientStopCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GradientStopCollection.cs index a438fb4514c..ba2a440952d 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GradientStopCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GradientStopCollection.cs @@ -483,10 +483,10 @@ internal override void OnInheritanceContextChangedCore(EventArgs args) { base.OnInheritanceContextChangedCore(args); - for (int i=0; i protected override void CloneCore(Freezable source) { - GradientStopCollection sourceGradientStopCollection = (GradientStopCollection) source; + GradientStopCollection sourceGradientStopCollection = (GradientStopCollection)source; base.CloneCore(source); @@ -589,7 +589,7 @@ protected override void CloneCore(Freezable source) for (int i = 0; i < count; i++) { - GradientStop newValue = (GradientStop) sourceGradientStopCollection._collection[i].Clone(); + GradientStop newValue = (GradientStop)sourceGradientStopCollection._collection[i].Clone(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); @@ -601,7 +601,7 @@ protected override void CloneCore(Freezable source) /// protected override void CloneCurrentValueCore(Freezable source) { - GradientStopCollection sourceGradientStopCollection = (GradientStopCollection) source; + GradientStopCollection sourceGradientStopCollection = (GradientStopCollection)source; base.CloneCurrentValueCore(source); @@ -611,7 +611,7 @@ protected override void CloneCurrentValueCore(Freezable source) for (int i = 0; i < count; i++) { - GradientStop newValue = (GradientStop) sourceGradientStopCollection._collection[i].CloneCurrentValue(); + GradientStop newValue = (GradientStop)sourceGradientStopCollection._collection[i].CloneCurrentValue(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); @@ -623,7 +623,7 @@ protected override void CloneCurrentValueCore(Freezable source) /// protected override void GetAsFrozenCore(Freezable source) { - GradientStopCollection sourceGradientStopCollection = (GradientStopCollection) source; + GradientStopCollection sourceGradientStopCollection = (GradientStopCollection)source; base.GetAsFrozenCore(source); @@ -633,7 +633,7 @@ protected override void GetAsFrozenCore(Freezable source) for (int i = 0; i < count; i++) { - GradientStop newValue = (GradientStop) sourceGradientStopCollection._collection[i].GetAsFrozen(); + GradientStop newValue = (GradientStop)sourceGradientStopCollection._collection[i].GetAsFrozen(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); @@ -645,7 +645,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - GradientStopCollection sourceGradientStopCollection = (GradientStopCollection) source; + GradientStopCollection sourceGradientStopCollection = (GradientStopCollection)source; base.GetCurrentValueAsFrozenCore(source); @@ -655,7 +655,7 @@ protected override void GetCurrentValueAsFrozenCore(Freezable source) for (int i = 0; i < count; i++) { - GradientStop newValue = (GradientStop) sourceGradientStopCollection._collection[i].GetCurrentValueAsFrozen(); + GradientStop newValue = (GradientStop)sourceGradientStopCollection._collection[i].GetCurrentValueAsFrozen(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); @@ -772,7 +772,7 @@ internal string ConvertToString(string format, IFormatProvider provider) // Helper to get the numeric list separator for a given culture. // char separator = MS.Internal.TokenizerHelper.GetNumericListSeparator(provider); - for (int i=0; i<_collection.Count; i++) + for (int i = 0; i < _collection.Count; i++) { str.AppendFormat( provider, diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GuidelineSet.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GuidelineSet.cs index c30b42a7b3c..f7db432bb3e 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GuidelineSet.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/GuidelineSet.cs @@ -103,7 +103,7 @@ public DoubleCollection GuidelinesX { get { - return (DoubleCollection) GetValue(GuidelinesXProperty); + return (DoubleCollection)GetValue(GuidelinesXProperty); } set { @@ -118,7 +118,7 @@ public DoubleCollection GuidelinesY { get { - return (DoubleCollection) GetValue(GuidelinesYProperty); + return (DoubleCollection)GetValue(GuidelinesYProperty); } set { @@ -133,7 +133,7 @@ internal bool IsDynamic { get { - return (bool) GetValue(IsDynamicProperty); + return (bool)GetValue(IsDynamicProperty); } set { @@ -208,7 +208,7 @@ internal override void UpdateResource(DUCE.Channel channel, bool skipOnChannelCh // Copy this collection's elements (or their handles) to reserved data - for(int i = 0; i < GuidelinesXCount; i++) + for (int i = 0; i < GuidelinesXCount; i++) { Double resource = vGuidelinesX.Internal_GetItem(i); channel.AppendCommandData( @@ -218,7 +218,7 @@ internal override void UpdateResource(DUCE.Channel channel, bool skipOnChannelCh } // Copy this collection's elements (or their handles) to reserved data - for(int i = 0; i < GuidelinesYCount; i++) + for (int i = 0; i < GuidelinesYCount; i++) { Double resource = vGuidelinesY.Internal_GetItem(i); channel.AppendCommandData( diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/ImageBrush.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/ImageBrush.cs index eb47c1a96bd..b01ee7801f6 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/ImageBrush.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/ImageBrush.cs @@ -122,7 +122,7 @@ public ImageSource ImageSource { get { - return (ImageSource) GetValue(ImageSourceProperty); + return (ImageSource)GetValue(ImageSourceProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/ImageDrawing.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/ImageDrawing.cs index fb99e820fd9..1185fa22e67 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/ImageDrawing.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/ImageDrawing.cs @@ -129,7 +129,7 @@ public ImageSource ImageSource { get { - return (ImageSource) GetValue(ImageSourceProperty); + return (ImageSource)GetValue(ImageSourceProperty); } set { @@ -144,7 +144,7 @@ public Rect Rect { get { - return (Rect) GetValue(RectProperty); + return (Rect)GetValue(RectProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/Int32Collection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/Int32Collection.cs index 6cf347c2c3d..a5089ad0599 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/Int32Collection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/Int32Collection.cs @@ -522,7 +522,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable source) { - Int32Collection sourceInt32Collection = (Int32Collection) source; + Int32Collection sourceInt32Collection = (Int32Collection)source; base.CloneCore(source); @@ -541,7 +541,7 @@ protected override void CloneCore(Freezable source) /// protected override void CloneCurrentValueCore(Freezable source) { - Int32Collection sourceInt32Collection = (Int32Collection) source; + Int32Collection sourceInt32Collection = (Int32Collection)source; base.CloneCurrentValueCore(source); @@ -560,7 +560,7 @@ protected override void CloneCurrentValueCore(Freezable source) /// protected override void GetAsFrozenCore(Freezable source) { - Int32Collection sourceInt32Collection = (Int32Collection) source; + Int32Collection sourceInt32Collection = (Int32Collection)source; base.GetAsFrozenCore(source); @@ -579,7 +579,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - Int32Collection sourceInt32Collection = (Int32Collection) source; + Int32Collection sourceInt32Collection = (Int32Collection)source; base.GetCurrentValueAsFrozenCore(source); @@ -689,7 +689,7 @@ internal string ConvertToString(string format, IFormatProvider provider) // Helper to get the numeric list separator for a given culture. // char separator = MS.Internal.TokenizerHelper.GetNumericListSeparator(provider); - for (int i=0; i<_collection.Count; i++) + for (int i = 0; i < _collection.Count; i++) { str.AppendFormat( provider, diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/LineGeometry.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/LineGeometry.cs index fbcf1c7c4e0..c4add07549c 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/LineGeometry.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/LineGeometry.cs @@ -88,7 +88,7 @@ public Point StartPoint { get { - return (Point) GetValue(StartPointProperty); + return (Point)GetValue(StartPointProperty); } set { @@ -103,7 +103,7 @@ public Point EndPoint { get { - return (Point) GetValue(EndPointProperty); + return (Point)GetValue(EndPointProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/LineSegment.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/LineSegment.cs index 248dd33640e..a20e7138efa 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/LineSegment.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/LineSegment.cs @@ -75,7 +75,7 @@ public Point Point { get { - return (Point) GetValue(PointProperty); + return (Point)GetValue(PointProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/LinearGradientBrush.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/LinearGradientBrush.cs index 815643dc6a2..3e6e69c8773 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/LinearGradientBrush.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/LinearGradientBrush.cs @@ -88,7 +88,7 @@ public Point StartPoint { get { - return (Point) GetValue(StartPointProperty); + return (Point)GetValue(StartPointProperty); } set { @@ -103,7 +103,7 @@ public Point EndPoint { get { - return (Point) GetValue(EndPointProperty); + return (Point)GetValue(EndPointProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/MatrixTransform.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/MatrixTransform.cs index c51c2d1e1d8..e988bdd3c95 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/MatrixTransform.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/MatrixTransform.cs @@ -81,7 +81,7 @@ public Matrix Matrix { get { - return (Matrix) GetValue(MatrixProperty); + return (Matrix)GetValue(MatrixProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/MediaTimeline.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/MediaTimeline.cs index 17f196db172..94b1889bfa3 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/MediaTimeline.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/MediaTimeline.cs @@ -75,7 +75,7 @@ public Uri Source { get { - return (Uri) GetValue(SourceProperty); + return (Uri)GetValue(SourceProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PathFigure.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PathFigure.cs index 5f497f03891..e913fa7e068 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PathFigure.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PathFigure.cs @@ -75,7 +75,7 @@ public Point StartPoint { get { - return (Point) GetValue(StartPointProperty); + return (Point)GetValue(StartPointProperty); } set { @@ -90,7 +90,7 @@ public bool IsFilled { get { - return (bool) GetValue(IsFilledProperty); + return (bool)GetValue(IsFilledProperty); } set { @@ -105,7 +105,7 @@ public PathSegmentCollection Segments { get { - return (PathSegmentCollection) GetValue(SegmentsProperty); + return (PathSegmentCollection)GetValue(SegmentsProperty); } set { @@ -120,7 +120,7 @@ public bool IsClosed { get { - return (bool) GetValue(IsClosedProperty); + return (bool)GetValue(IsClosedProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PathFigureCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PathFigureCollection.cs index 7ff60f682cc..0c0ecea03f8 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PathFigureCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PathFigureCollection.cs @@ -484,10 +484,10 @@ internal override void OnInheritanceContextChangedCore(EventArgs args) { base.OnInheritanceContextChangedCore(args); - for (int i=0; i protected override void CloneCore(Freezable source) { - PathFigureCollection sourcePathFigureCollection = (PathFigureCollection) source; + PathFigureCollection sourcePathFigureCollection = (PathFigureCollection)source; base.CloneCore(source); @@ -590,7 +590,7 @@ protected override void CloneCore(Freezable source) for (int i = 0; i < count; i++) { - PathFigure newValue = (PathFigure) sourcePathFigureCollection._collection[i].Clone(); + PathFigure newValue = (PathFigure)sourcePathFigureCollection._collection[i].Clone(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); @@ -602,7 +602,7 @@ protected override void CloneCore(Freezable source) /// protected override void CloneCurrentValueCore(Freezable source) { - PathFigureCollection sourcePathFigureCollection = (PathFigureCollection) source; + PathFigureCollection sourcePathFigureCollection = (PathFigureCollection)source; base.CloneCurrentValueCore(source); @@ -612,7 +612,7 @@ protected override void CloneCurrentValueCore(Freezable source) for (int i = 0; i < count; i++) { - PathFigure newValue = (PathFigure) sourcePathFigureCollection._collection[i].CloneCurrentValue(); + PathFigure newValue = (PathFigure)sourcePathFigureCollection._collection[i].CloneCurrentValue(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); @@ -624,7 +624,7 @@ protected override void CloneCurrentValueCore(Freezable source) /// protected override void GetAsFrozenCore(Freezable source) { - PathFigureCollection sourcePathFigureCollection = (PathFigureCollection) source; + PathFigureCollection sourcePathFigureCollection = (PathFigureCollection)source; base.GetAsFrozenCore(source); @@ -634,7 +634,7 @@ protected override void GetAsFrozenCore(Freezable source) for (int i = 0; i < count; i++) { - PathFigure newValue = (PathFigure) sourcePathFigureCollection._collection[i].GetAsFrozen(); + PathFigure newValue = (PathFigure)sourcePathFigureCollection._collection[i].GetAsFrozen(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); @@ -646,7 +646,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - PathFigureCollection sourcePathFigureCollection = (PathFigureCollection) source; + PathFigureCollection sourcePathFigureCollection = (PathFigureCollection)source; base.GetCurrentValueAsFrozenCore(source); @@ -656,7 +656,7 @@ protected override void GetCurrentValueAsFrozenCore(Freezable source) for (int i = 0; i < count; i++) { - PathFigure newValue = (PathFigure) sourcePathFigureCollection._collection[i].GetCurrentValueAsFrozen(); + PathFigure newValue = (PathFigure)sourcePathFigureCollection._collection[i].GetCurrentValueAsFrozen(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); @@ -773,7 +773,7 @@ internal string ConvertToString(string format, IFormatProvider provider) // Helper to get the numeric list separator for a given culture. // char separator = MS.Internal.TokenizerHelper.GetNumericListSeparator(provider); - for (int i=0; i<_collection.Count; i++) + for (int i = 0; i < _collection.Count; i++) { str.AppendFormat( provider, diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PathGeometry.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PathGeometry.cs index 2fcae70c8cb..0ad690eb764 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PathGeometry.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PathGeometry.cs @@ -94,7 +94,7 @@ public FillRule FillRule { get { - return (FillRule) GetValue(FillRuleProperty); + return (FillRule)GetValue(FillRuleProperty); } set { @@ -109,7 +109,7 @@ public PathFigureCollection Figures { get { - return (PathFigureCollection) GetValue(FiguresProperty); + return (PathFigureCollection)GetValue(FiguresProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PathSegment.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PathSegment.cs index e468286bf55..b309cccd929 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PathSegment.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PathSegment.cs @@ -75,7 +75,7 @@ public bool IsStroked { get { - return (bool) GetValue(IsStrokedProperty); + return (bool)GetValue(IsStrokedProperty); } set { @@ -90,7 +90,7 @@ public bool IsSmoothJoin { get { - return (bool) GetValue(IsSmoothJoinProperty); + return (bool)GetValue(IsSmoothJoinProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PathSegmentCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PathSegmentCollection.cs index ed90deed1dd..e39eb3a6a89 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PathSegmentCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PathSegmentCollection.cs @@ -483,10 +483,10 @@ internal override void OnInheritanceContextChangedCore(EventArgs args) { base.OnInheritanceContextChangedCore(args); - for (int i=0; i protected override void CloneCore(Freezable source) { - PathSegmentCollection sourcePathSegmentCollection = (PathSegmentCollection) source; + PathSegmentCollection sourcePathSegmentCollection = (PathSegmentCollection)source; base.CloneCore(source); @@ -589,7 +589,7 @@ protected override void CloneCore(Freezable source) for (int i = 0; i < count; i++) { - PathSegment newValue = (PathSegment) sourcePathSegmentCollection._collection[i].Clone(); + PathSegment newValue = (PathSegment)sourcePathSegmentCollection._collection[i].Clone(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); @@ -601,7 +601,7 @@ protected override void CloneCore(Freezable source) /// protected override void CloneCurrentValueCore(Freezable source) { - PathSegmentCollection sourcePathSegmentCollection = (PathSegmentCollection) source; + PathSegmentCollection sourcePathSegmentCollection = (PathSegmentCollection)source; base.CloneCurrentValueCore(source); @@ -611,7 +611,7 @@ protected override void CloneCurrentValueCore(Freezable source) for (int i = 0; i < count; i++) { - PathSegment newValue = (PathSegment) sourcePathSegmentCollection._collection[i].CloneCurrentValue(); + PathSegment newValue = (PathSegment)sourcePathSegmentCollection._collection[i].CloneCurrentValue(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); @@ -623,7 +623,7 @@ protected override void CloneCurrentValueCore(Freezable source) /// protected override void GetAsFrozenCore(Freezable source) { - PathSegmentCollection sourcePathSegmentCollection = (PathSegmentCollection) source; + PathSegmentCollection sourcePathSegmentCollection = (PathSegmentCollection)source; base.GetAsFrozenCore(source); @@ -633,7 +633,7 @@ protected override void GetAsFrozenCore(Freezable source) for (int i = 0; i < count; i++) { - PathSegment newValue = (PathSegment) sourcePathSegmentCollection._collection[i].GetAsFrozen(); + PathSegment newValue = (PathSegment)sourcePathSegmentCollection._collection[i].GetAsFrozen(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); @@ -645,7 +645,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - PathSegmentCollection sourcePathSegmentCollection = (PathSegmentCollection) source; + PathSegmentCollection sourcePathSegmentCollection = (PathSegmentCollection)source; base.GetCurrentValueAsFrozenCore(source); @@ -655,7 +655,7 @@ protected override void GetCurrentValueAsFrozenCore(Freezable source) for (int i = 0; i < count; i++) { - PathSegment newValue = (PathSegment) sourcePathSegmentCollection._collection[i].GetCurrentValueAsFrozen(); + PathSegment newValue = (PathSegment)sourcePathSegmentCollection._collection[i].GetCurrentValueAsFrozen(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/Pen.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/Pen.cs index ee384874435..5e77b3ab9c5 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/Pen.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/Pen.cs @@ -212,7 +212,7 @@ public Brush Brush { get { - return (Brush) GetValue(BrushProperty); + return (Brush)GetValue(BrushProperty); } set { @@ -227,7 +227,7 @@ public double Thickness { get { - return (double) GetValue(ThicknessProperty); + return (double)GetValue(ThicknessProperty); } set { @@ -242,7 +242,7 @@ public PenLineCap StartLineCap { get { - return (PenLineCap) GetValue(StartLineCapProperty); + return (PenLineCap)GetValue(StartLineCapProperty); } set { @@ -257,7 +257,7 @@ public PenLineCap EndLineCap { get { - return (PenLineCap) GetValue(EndLineCapProperty); + return (PenLineCap)GetValue(EndLineCapProperty); } set { @@ -272,7 +272,7 @@ public PenLineCap DashCap { get { - return (PenLineCap) GetValue(DashCapProperty); + return (PenLineCap)GetValue(DashCapProperty); } set { @@ -287,7 +287,7 @@ public PenLineJoin LineJoin { get { - return (PenLineJoin) GetValue(LineJoinProperty); + return (PenLineJoin)GetValue(LineJoinProperty); } set { @@ -302,7 +302,7 @@ public double MiterLimit { get { - return (double) GetValue(MiterLimitProperty); + return (double)GetValue(MiterLimitProperty); } set { @@ -317,7 +317,7 @@ public DashStyle DashStyle { get { - return (DashStyle) GetValue(DashStyleProperty); + return (DashStyle)GetValue(DashStyleProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PenLineCap.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PenLineCap.cs index bf3781a8bb6..d802c19cab7 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PenLineCap.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PenLineCap.cs @@ -35,5 +35,5 @@ public enum PenLineCap /// Triangle - Triangle line cap. /// Triangle = 3, - } + } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PenLineJoin.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PenLineJoin.cs index e649ef32229..ffcbe3dd838 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PenLineJoin.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PenLineJoin.cs @@ -30,5 +30,5 @@ public enum PenLineJoin /// Round - Round join. /// Round = 2, - } + } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PointCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PointCollection.cs index 60659216a64..3edd6c9abe3 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PointCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PointCollection.cs @@ -522,7 +522,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable source) { - PointCollection sourcePointCollection = (PointCollection) source; + PointCollection sourcePointCollection = (PointCollection)source; base.CloneCore(source); @@ -541,7 +541,7 @@ protected override void CloneCore(Freezable source) /// protected override void CloneCurrentValueCore(Freezable source) { - PointCollection sourcePointCollection = (PointCollection) source; + PointCollection sourcePointCollection = (PointCollection)source; base.CloneCurrentValueCore(source); @@ -560,7 +560,7 @@ protected override void CloneCurrentValueCore(Freezable source) /// protected override void GetAsFrozenCore(Freezable source) { - PointCollection sourcePointCollection = (PointCollection) source; + PointCollection sourcePointCollection = (PointCollection)source; base.GetAsFrozenCore(source); @@ -579,7 +579,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - PointCollection sourcePointCollection = (PointCollection) source; + PointCollection sourcePointCollection = (PointCollection)source; base.GetCurrentValueAsFrozenCore(source); @@ -689,7 +689,7 @@ internal string ConvertToString(string format, IFormatProvider provider) // Helper to get the numeric list separator for a given culture. // char separator = MS.Internal.TokenizerHelper.GetNumericListSeparator(provider); - for (int i=0; i<_collection.Count; i++) + for (int i = 0; i < _collection.Count; i++) { str.AppendFormat( provider, diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PolyBezierSegment.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PolyBezierSegment.cs index fa3b712d3ca..7ea345f22a1 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PolyBezierSegment.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PolyBezierSegment.cs @@ -75,7 +75,7 @@ public PointCollection Points { get { - return (PointCollection) GetValue(PointsProperty); + return (PointCollection)GetValue(PointsProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PolyBezierSegmentFigureLogic.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PolyBezierSegmentFigureLogic.cs index d395432802e..7fa21e36b7e 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PolyBezierSegmentFigureLogic.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/PolyBezierSegmentFigureLogic.cs @@ -83,7 +83,7 @@ internal override void AddToFigure( Point pt = new Point(); int count = points.Count; - for (int i=0; i Rotate270 = 3, - } + } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/ScaleTransform.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/ScaleTransform.cs index ea16d90c651..6c35f002b58 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/ScaleTransform.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/ScaleTransform.cs @@ -102,7 +102,7 @@ public double ScaleX { get { - return (double) GetValue(ScaleXProperty); + return (double)GetValue(ScaleXProperty); } set { @@ -117,7 +117,7 @@ public double ScaleY { get { - return (double) GetValue(ScaleYProperty); + return (double)GetValue(ScaleYProperty); } set { @@ -132,7 +132,7 @@ public double CenterX { get { - return (double) GetValue(CenterXProperty); + return (double)GetValue(CenterXProperty); } set { @@ -147,7 +147,7 @@ public double CenterY { get { - return (double) GetValue(CenterYProperty); + return (double)GetValue(CenterYProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/SkewTransform.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/SkewTransform.cs index 86029d2fb0d..95ee06e3aa8 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/SkewTransform.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/SkewTransform.cs @@ -102,7 +102,7 @@ public double AngleX { get { - return (double) GetValue(AngleXProperty); + return (double)GetValue(AngleXProperty); } set { @@ -117,7 +117,7 @@ public double AngleY { get { - return (double) GetValue(AngleYProperty); + return (double)GetValue(AngleYProperty); } set { @@ -132,7 +132,7 @@ public double CenterX { get { - return (double) GetValue(CenterXProperty); + return (double)GetValue(CenterXProperty); } set { @@ -147,7 +147,7 @@ public double CenterY { get { - return (double) GetValue(CenterYProperty); + return (double)GetValue(CenterYProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/SolidColorBrush.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/SolidColorBrush.cs index 767694b642e..7039e365b75 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/SolidColorBrush.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/SolidColorBrush.cs @@ -81,7 +81,7 @@ public Color Color { get { - return (Color) GetValue(ColorProperty); + return (Color)GetValue(ColorProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/StreamGeometry.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/StreamGeometry.cs index 6a0ba68a87c..2c3b04f43a1 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/StreamGeometry.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/StreamGeometry.cs @@ -81,7 +81,7 @@ public FillRule FillRule { get { - return (FillRule) GetValue(FillRuleProperty); + return (FillRule)GetValue(FillRuleProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/Stretch.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/Stretch.cs index 62e665e5fe1..4e8a0061761 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/Stretch.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/Stretch.cs @@ -41,5 +41,5 @@ public enum Stretch /// clipping, if the aspect ratio of source and destination are different. /// UniformToFill = 3, - } + } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/SweepDirection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/SweepDirection.cs index 14dfa558b16..2c583add36e 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/SweepDirection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/SweepDirection.cs @@ -25,5 +25,5 @@ public enum SweepDirection /// Clockwise - /// Clockwise = 1, - } + } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TextEffect.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TextEffect.cs index 96a8afc16f4..18985b38a42 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TextEffect.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TextEffect.cs @@ -95,7 +95,7 @@ public Transform Transform { get { - return (Transform) GetValue(TransformProperty); + return (Transform)GetValue(TransformProperty); } set { @@ -111,7 +111,7 @@ public Geometry Clip { get { - return (Geometry) GetValue(ClipProperty); + return (Geometry)GetValue(ClipProperty); } set { @@ -127,7 +127,7 @@ public Brush Foreground { get { - return (Brush) GetValue(ForegroundProperty); + return (Brush)GetValue(ForegroundProperty); } set { @@ -143,7 +143,7 @@ public int PositionStart { get { - return (int) GetValue(PositionStartProperty); + return (int)GetValue(PositionStartProperty); } set { @@ -159,7 +159,7 @@ public int PositionCount { get { - return (int) GetValue(PositionCountProperty); + return (int)GetValue(PositionCountProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TextEffectCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TextEffectCollection.cs index 8f4bed204d8..2d69fe808e2 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TextEffectCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TextEffectCollection.cs @@ -483,10 +483,10 @@ internal override void OnInheritanceContextChangedCore(EventArgs args) { base.OnInheritanceContextChangedCore(args); - for (int i=0; i protected override void CloneCore(Freezable source) { - TextEffectCollection sourceTextEffectCollection = (TextEffectCollection) source; + TextEffectCollection sourceTextEffectCollection = (TextEffectCollection)source; base.CloneCore(source); @@ -589,7 +589,7 @@ protected override void CloneCore(Freezable source) for (int i = 0; i < count; i++) { - TextEffect newValue = (TextEffect) sourceTextEffectCollection._collection[i].Clone(); + TextEffect newValue = (TextEffect)sourceTextEffectCollection._collection[i].Clone(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); @@ -601,7 +601,7 @@ protected override void CloneCore(Freezable source) /// protected override void CloneCurrentValueCore(Freezable source) { - TextEffectCollection sourceTextEffectCollection = (TextEffectCollection) source; + TextEffectCollection sourceTextEffectCollection = (TextEffectCollection)source; base.CloneCurrentValueCore(source); @@ -611,7 +611,7 @@ protected override void CloneCurrentValueCore(Freezable source) for (int i = 0; i < count; i++) { - TextEffect newValue = (TextEffect) sourceTextEffectCollection._collection[i].CloneCurrentValue(); + TextEffect newValue = (TextEffect)sourceTextEffectCollection._collection[i].CloneCurrentValue(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); @@ -623,7 +623,7 @@ protected override void CloneCurrentValueCore(Freezable source) /// protected override void GetAsFrozenCore(Freezable source) { - TextEffectCollection sourceTextEffectCollection = (TextEffectCollection) source; + TextEffectCollection sourceTextEffectCollection = (TextEffectCollection)source; base.GetAsFrozenCore(source); @@ -633,7 +633,7 @@ protected override void GetAsFrozenCore(Freezable source) for (int i = 0; i < count; i++) { - TextEffect newValue = (TextEffect) sourceTextEffectCollection._collection[i].GetAsFrozen(); + TextEffect newValue = (TextEffect)sourceTextEffectCollection._collection[i].GetAsFrozen(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); @@ -645,7 +645,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - TextEffectCollection sourceTextEffectCollection = (TextEffectCollection) source; + TextEffectCollection sourceTextEffectCollection = (TextEffectCollection)source; base.GetCurrentValueAsFrozenCore(source); @@ -655,7 +655,7 @@ protected override void GetCurrentValueAsFrozenCore(Freezable source) for (int i = 0; i < count; i++) { - TextEffect newValue = (TextEffect) sourceTextEffectCollection._collection[i].GetCurrentValueAsFrozen(); + TextEffect newValue = (TextEffect)sourceTextEffectCollection._collection[i].GetCurrentValueAsFrozen(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TextHintingMode.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TextHintingMode.cs index 7a3c9f7bd7e..6dd4a5034fa 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TextHintingMode.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TextHintingMode.cs @@ -32,5 +32,5 @@ public enum TextHintingMode /// Animated - Rendering engine will render text for highest animated quality /// Animated = 2, - } + } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TextRenderingMode.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TextRenderingMode.cs index d770d2d2724..c05d7927e23 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TextRenderingMode.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TextRenderingMode.cs @@ -39,5 +39,5 @@ public enum TextRenderingMode /// possible /// ClearType = 3, - } + } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TileBrush.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TileBrush.cs index 802feb1f248..ae9016acd69 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TileBrush.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TileBrush.cs @@ -151,7 +151,7 @@ public BrushMappingMode ViewportUnits { get { - return (BrushMappingMode) GetValue(ViewportUnitsProperty); + return (BrushMappingMode)GetValue(ViewportUnitsProperty); } set { @@ -166,7 +166,7 @@ public BrushMappingMode ViewboxUnits { get { - return (BrushMappingMode) GetValue(ViewboxUnitsProperty); + return (BrushMappingMode)GetValue(ViewboxUnitsProperty); } set { @@ -181,7 +181,7 @@ public Rect Viewport { get { - return (Rect) GetValue(ViewportProperty); + return (Rect)GetValue(ViewportProperty); } set { @@ -196,7 +196,7 @@ public Rect Viewbox { get { - return (Rect) GetValue(ViewboxProperty); + return (Rect)GetValue(ViewboxProperty); } set { @@ -211,7 +211,7 @@ public Stretch Stretch { get { - return (Stretch) GetValue(StretchProperty); + return (Stretch)GetValue(StretchProperty); } set { @@ -226,7 +226,7 @@ public TileMode TileMode { get { - return (TileMode) GetValue(TileModeProperty); + return (TileMode)GetValue(TileModeProperty); } set { @@ -241,7 +241,7 @@ public AlignmentX AlignmentX { get { - return (AlignmentX) GetValue(AlignmentXProperty); + return (AlignmentX)GetValue(AlignmentXProperty); } set { @@ -256,7 +256,7 @@ public AlignmentY AlignmentY { get { - return (AlignmentY) GetValue(AlignmentYProperty); + return (AlignmentY)GetValue(AlignmentYProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TileMode.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TileMode.cs index d0b90d9f483..478e83f309c 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TileMode.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TileMode.cs @@ -45,5 +45,5 @@ public enum TileMode /// FlipXY - The combination of FlipX and FlipY. The base tile is drawn untransformed. /// FlipXY = 3, - } + } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/ToleranceType.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/ToleranceType.cs index e4ed4e2b10a..6859d50da07 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/ToleranceType.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/ToleranceType.cs @@ -25,5 +25,5 @@ public enum ToleranceType /// Relative - /// Relative = 1, - } + } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TransformCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TransformCollection.cs index f55bc227681..e36530735bf 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TransformCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TransformCollection.cs @@ -495,10 +495,10 @@ internal override void OnInheritanceContextChangedCore(EventArgs args) { base.OnInheritanceContextChangedCore(args); - for (int i=0; i protected override void CloneCore(Freezable source) { - TransformCollection sourceTransformCollection = (TransformCollection) source; + TransformCollection sourceTransformCollection = (TransformCollection)source; base.CloneCore(source); @@ -624,7 +624,7 @@ protected override void CloneCore(Freezable source) for (int i = 0; i < count; i++) { - Transform newValue = (Transform) sourceTransformCollection._collection[i].Clone(); + Transform newValue = (Transform)sourceTransformCollection._collection[i].Clone(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); OnInsert(newValue); @@ -636,7 +636,7 @@ protected override void CloneCore(Freezable source) /// protected override void CloneCurrentValueCore(Freezable source) { - TransformCollection sourceTransformCollection = (TransformCollection) source; + TransformCollection sourceTransformCollection = (TransformCollection)source; base.CloneCurrentValueCore(source); @@ -646,7 +646,7 @@ protected override void CloneCurrentValueCore(Freezable source) for (int i = 0; i < count; i++) { - Transform newValue = (Transform) sourceTransformCollection._collection[i].CloneCurrentValue(); + Transform newValue = (Transform)sourceTransformCollection._collection[i].CloneCurrentValue(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); OnInsert(newValue); @@ -658,7 +658,7 @@ protected override void CloneCurrentValueCore(Freezable source) /// protected override void GetAsFrozenCore(Freezable source) { - TransformCollection sourceTransformCollection = (TransformCollection) source; + TransformCollection sourceTransformCollection = (TransformCollection)source; base.GetAsFrozenCore(source); @@ -668,7 +668,7 @@ protected override void GetAsFrozenCore(Freezable source) for (int i = 0; i < count; i++) { - Transform newValue = (Transform) sourceTransformCollection._collection[i].GetAsFrozen(); + Transform newValue = (Transform)sourceTransformCollection._collection[i].GetAsFrozen(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); OnInsert(newValue); @@ -680,7 +680,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - TransformCollection sourceTransformCollection = (TransformCollection) source; + TransformCollection sourceTransformCollection = (TransformCollection)source; base.GetCurrentValueAsFrozenCore(source); @@ -690,7 +690,7 @@ protected override void GetCurrentValueAsFrozenCore(Freezable source) for (int i = 0; i < count; i++) { - Transform newValue = (Transform) sourceTransformCollection._collection[i].GetCurrentValueAsFrozen(); + Transform newValue = (Transform)sourceTransformCollection._collection[i].GetCurrentValueAsFrozen(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); OnInsert(newValue); diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TransformGroup.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TransformGroup.cs index 8a8c2b72814..a4991dc2b5c 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TransformGroup.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TransformGroup.cs @@ -165,7 +165,7 @@ public TransformCollection Children { get { - return (TransformCollection) GetValue(ChildrenProperty); + return (TransformCollection)GetValue(ChildrenProperty); } set { @@ -235,7 +235,7 @@ internal override void UpdateResource(DUCE.Channel channel, bool skipOnChannelCh // Copy this collection's elements (or their handles) to reserved data - for(int i = 0; i < ChildrenCount; i++) + for (int i = 0; i < ChildrenCount; i++) { DUCE.ResourceHandle resource = ((DUCE.IResource)vChildren.Internal_GetItem(i)).GetHandle(channel);; channel.AppendCommandData( diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TranslateTransform.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TranslateTransform.cs index 3b06d827672..d95b23f1f3e 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TranslateTransform.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/TranslateTransform.cs @@ -88,7 +88,7 @@ public double X { get { - return (double) GetValue(XProperty); + return (double)GetValue(XProperty); } set { @@ -103,7 +103,7 @@ public double Y { get { - return (double) GetValue(YProperty); + return (double)GetValue(YProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/VectorCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/VectorCollection.cs index 4b51cfe5924..b4d22f1dfaa 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/VectorCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/VectorCollection.cs @@ -522,7 +522,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable source) { - VectorCollection sourceVectorCollection = (VectorCollection) source; + VectorCollection sourceVectorCollection = (VectorCollection)source; base.CloneCore(source); @@ -541,7 +541,7 @@ protected override void CloneCore(Freezable source) /// protected override void CloneCurrentValueCore(Freezable source) { - VectorCollection sourceVectorCollection = (VectorCollection) source; + VectorCollection sourceVectorCollection = (VectorCollection)source; base.CloneCurrentValueCore(source); @@ -560,7 +560,7 @@ protected override void CloneCurrentValueCore(Freezable source) /// protected override void GetAsFrozenCore(Freezable source) { - VectorCollection sourceVectorCollection = (VectorCollection) source; + VectorCollection sourceVectorCollection = (VectorCollection)source; base.GetAsFrozenCore(source); @@ -579,7 +579,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - VectorCollection sourceVectorCollection = (VectorCollection) source; + VectorCollection sourceVectorCollection = (VectorCollection)source; base.GetCurrentValueAsFrozenCore(source); @@ -689,7 +689,7 @@ internal string ConvertToString(string format, IFormatProvider provider) // Helper to get the numeric list separator for a given culture. // char separator = MS.Internal.TokenizerHelper.GetNumericListSeparator(provider); - for (int i=0; i<_collection.Count; i++) + for (int i = 0; i < _collection.Count; i++) { str.AppendFormat( provider, diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/VideoDrawing.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/VideoDrawing.cs index 821f23f0b10..e48649361a3 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/VideoDrawing.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/VideoDrawing.cs @@ -110,7 +110,7 @@ public MediaPlayer Player { get { - return (MediaPlayer) GetValue(PlayerProperty); + return (MediaPlayer)GetValue(PlayerProperty); } set { @@ -125,7 +125,7 @@ public Rect Rect { get { - return (Rect) GetValue(RectProperty); + return (Rect)GetValue(RectProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/VisualBrush.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/VisualBrush.cs index 1ea25d84e53..bf5927192f5 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/VisualBrush.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Generated/VisualBrush.cs @@ -135,7 +135,7 @@ public Visual Visual { get { - return (Visual) GetValue(VisualProperty); + return (Visual)GetValue(VisualProperty); } set { @@ -152,7 +152,7 @@ public bool AutoLayoutContent { get { - return (bool) GetValue(AutoLayoutContentProperty); + return (bool)GetValue(AutoLayoutContentProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Imaging/Generated/BitmapImage.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Imaging/Generated/BitmapImage.cs index b853744c2cb..96339075fb7 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Imaging/Generated/BitmapImage.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Imaging/Generated/BitmapImage.cs @@ -146,7 +146,7 @@ public RequestCachePolicy UriCachePolicy { get { - return (RequestCachePolicy) GetValue(UriCachePolicyProperty); + return (RequestCachePolicy)GetValue(UriCachePolicyProperty); } set { @@ -161,7 +161,7 @@ public Uri UriSource { get { - return (Uri) GetValue(UriSourceProperty); + return (Uri)GetValue(UriSourceProperty); } set { @@ -177,7 +177,7 @@ public Stream StreamSource { get { - return (Stream) GetValue(StreamSourceProperty); + return (Stream)GetValue(StreamSourceProperty); } set { @@ -192,7 +192,7 @@ public int DecodePixelWidth { get { - return (int) GetValue(DecodePixelWidthProperty); + return (int)GetValue(DecodePixelWidthProperty); } set { @@ -207,7 +207,7 @@ public int DecodePixelHeight { get { - return (int) GetValue(DecodePixelHeightProperty); + return (int)GetValue(DecodePixelHeightProperty); } set { @@ -222,7 +222,7 @@ public Rotation Rotation { get { - return (Rotation) GetValue(RotationProperty); + return (Rotation)GetValue(RotationProperty); } set { @@ -237,7 +237,7 @@ public Int32Rect SourceRect { get { - return (Int32Rect) GetValue(SourceRectProperty); + return (Int32Rect)GetValue(SourceRectProperty); } set { @@ -252,7 +252,7 @@ public BitmapCreateOptions CreateOptions { get { - return (BitmapCreateOptions) GetValue(CreateOptionsProperty); + return (BitmapCreateOptions)GetValue(CreateOptionsProperty); } set { @@ -267,7 +267,7 @@ public BitmapCacheOption CacheOption { get { - return (BitmapCacheOption) GetValue(CacheOptionProperty); + return (BitmapCacheOption)GetValue(CacheOptionProperty); } set { @@ -298,7 +298,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable source) { - BitmapImage sourceBitmapImage = (BitmapImage) source; + BitmapImage sourceBitmapImage = (BitmapImage)source; // Set any state required before actual clone happens ClonePrequel(sourceBitmapImage); @@ -315,7 +315,7 @@ protected override void CloneCore(Freezable source) /// protected override void CloneCurrentValueCore(Freezable source) { - BitmapImage sourceBitmapImage = (BitmapImage) source; + BitmapImage sourceBitmapImage = (BitmapImage)source; // Set any state required before actual clone happens ClonePrequel(sourceBitmapImage); @@ -332,7 +332,7 @@ protected override void CloneCurrentValueCore(Freezable source) /// protected override void GetAsFrozenCore(Freezable source) { - BitmapImage sourceBitmapImage = (BitmapImage) source; + BitmapImage sourceBitmapImage = (BitmapImage)source; // Set any state required before actual clone happens ClonePrequel(sourceBitmapImage); @@ -349,7 +349,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - BitmapImage sourceBitmapImage = (BitmapImage) source; + BitmapImage sourceBitmapImage = (BitmapImage)source; // Set any state required before actual clone happens ClonePrequel(sourceBitmapImage); diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Imaging/Generated/ColorConvertedBitmap.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Imaging/Generated/ColorConvertedBitmap.cs index 7c0f5cb7ac4..66a525ded92 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Imaging/Generated/ColorConvertedBitmap.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Imaging/Generated/ColorConvertedBitmap.cs @@ -119,7 +119,7 @@ public BitmapSource Source { get { - return (BitmapSource) GetValue(SourceProperty); + return (BitmapSource)GetValue(SourceProperty); } set { @@ -134,7 +134,7 @@ public ColorContext SourceColorContext { get { - return (ColorContext) GetValue(SourceColorContextProperty); + return (ColorContext)GetValue(SourceColorContextProperty); } set { @@ -149,7 +149,7 @@ public ColorContext DestinationColorContext { get { - return (ColorContext) GetValue(DestinationColorContextProperty); + return (ColorContext)GetValue(DestinationColorContextProperty); } set { @@ -164,7 +164,7 @@ public PixelFormat DestinationFormat { get { - return (PixelFormat) GetValue(DestinationFormatProperty); + return (PixelFormat)GetValue(DestinationFormatProperty); } set { @@ -195,7 +195,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable source) { - ColorConvertedBitmap sourceColorConvertedBitmap = (ColorConvertedBitmap) source; + ColorConvertedBitmap sourceColorConvertedBitmap = (ColorConvertedBitmap)source; // Set any state required before actual clone happens ClonePrequel(sourceColorConvertedBitmap); @@ -212,7 +212,7 @@ protected override void CloneCore(Freezable source) /// protected override void CloneCurrentValueCore(Freezable source) { - ColorConvertedBitmap sourceColorConvertedBitmap = (ColorConvertedBitmap) source; + ColorConvertedBitmap sourceColorConvertedBitmap = (ColorConvertedBitmap)source; // Set any state required before actual clone happens ClonePrequel(sourceColorConvertedBitmap); @@ -229,7 +229,7 @@ protected override void CloneCurrentValueCore(Freezable source) /// protected override void GetAsFrozenCore(Freezable source) { - ColorConvertedBitmap sourceColorConvertedBitmap = (ColorConvertedBitmap) source; + ColorConvertedBitmap sourceColorConvertedBitmap = (ColorConvertedBitmap)source; // Set any state required before actual clone happens ClonePrequel(sourceColorConvertedBitmap); @@ -246,7 +246,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - ColorConvertedBitmap sourceColorConvertedBitmap = (ColorConvertedBitmap) source; + ColorConvertedBitmap sourceColorConvertedBitmap = (ColorConvertedBitmap)source; // Set any state required before actual clone happens ClonePrequel(sourceColorConvertedBitmap); diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Imaging/Generated/CroppedBitmap.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Imaging/Generated/CroppedBitmap.cs index fd65429cf68..e75c27a2046 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Imaging/Generated/CroppedBitmap.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Imaging/Generated/CroppedBitmap.cs @@ -101,7 +101,7 @@ public BitmapSource Source { get { - return (BitmapSource) GetValue(SourceProperty); + return (BitmapSource)GetValue(SourceProperty); } set { @@ -116,7 +116,7 @@ public Int32Rect SourceRect { get { - return (Int32Rect) GetValue(SourceRectProperty); + return (Int32Rect)GetValue(SourceRectProperty); } set { @@ -147,7 +147,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable source) { - CroppedBitmap sourceCroppedBitmap = (CroppedBitmap) source; + CroppedBitmap sourceCroppedBitmap = (CroppedBitmap)source; // Set any state required before actual clone happens ClonePrequel(sourceCroppedBitmap); @@ -164,7 +164,7 @@ protected override void CloneCore(Freezable source) /// protected override void CloneCurrentValueCore(Freezable source) { - CroppedBitmap sourceCroppedBitmap = (CroppedBitmap) source; + CroppedBitmap sourceCroppedBitmap = (CroppedBitmap)source; // Set any state required before actual clone happens ClonePrequel(sourceCroppedBitmap); @@ -181,7 +181,7 @@ protected override void CloneCurrentValueCore(Freezable source) /// protected override void GetAsFrozenCore(Freezable source) { - CroppedBitmap sourceCroppedBitmap = (CroppedBitmap) source; + CroppedBitmap sourceCroppedBitmap = (CroppedBitmap)source; // Set any state required before actual clone happens ClonePrequel(sourceCroppedBitmap); @@ -198,7 +198,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - CroppedBitmap sourceCroppedBitmap = (CroppedBitmap) source; + CroppedBitmap sourceCroppedBitmap = (CroppedBitmap)source; // Set any state required before actual clone happens ClonePrequel(sourceCroppedBitmap); diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Imaging/Generated/FormatConvertedBitmap.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Imaging/Generated/FormatConvertedBitmap.cs index 235b5685eb1..8ccdf0b7d34 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Imaging/Generated/FormatConvertedBitmap.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Imaging/Generated/FormatConvertedBitmap.cs @@ -119,7 +119,7 @@ public BitmapSource Source { get { - return (BitmapSource) GetValue(SourceProperty); + return (BitmapSource)GetValue(SourceProperty); } set { @@ -134,7 +134,7 @@ public PixelFormat DestinationFormat { get { - return (PixelFormat) GetValue(DestinationFormatProperty); + return (PixelFormat)GetValue(DestinationFormatProperty); } set { @@ -149,7 +149,7 @@ public BitmapPalette DestinationPalette { get { - return (BitmapPalette) GetValue(DestinationPaletteProperty); + return (BitmapPalette)GetValue(DestinationPaletteProperty); } set { @@ -164,7 +164,7 @@ public double AlphaThreshold { get { - return (double) GetValue(AlphaThresholdProperty); + return (double)GetValue(AlphaThresholdProperty); } set { @@ -195,7 +195,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable source) { - FormatConvertedBitmap sourceFormatConvertedBitmap = (FormatConvertedBitmap) source; + FormatConvertedBitmap sourceFormatConvertedBitmap = (FormatConvertedBitmap)source; // Set any state required before actual clone happens ClonePrequel(sourceFormatConvertedBitmap); @@ -212,7 +212,7 @@ protected override void CloneCore(Freezable source) /// protected override void CloneCurrentValueCore(Freezable source) { - FormatConvertedBitmap sourceFormatConvertedBitmap = (FormatConvertedBitmap) source; + FormatConvertedBitmap sourceFormatConvertedBitmap = (FormatConvertedBitmap)source; // Set any state required before actual clone happens ClonePrequel(sourceFormatConvertedBitmap); @@ -229,7 +229,7 @@ protected override void CloneCurrentValueCore(Freezable source) /// protected override void GetAsFrozenCore(Freezable source) { - FormatConvertedBitmap sourceFormatConvertedBitmap = (FormatConvertedBitmap) source; + FormatConvertedBitmap sourceFormatConvertedBitmap = (FormatConvertedBitmap)source; // Set any state required before actual clone happens ClonePrequel(sourceFormatConvertedBitmap); @@ -246,7 +246,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - FormatConvertedBitmap sourceFormatConvertedBitmap = (FormatConvertedBitmap) source; + FormatConvertedBitmap sourceFormatConvertedBitmap = (FormatConvertedBitmap)source; // Set any state required before actual clone happens ClonePrequel(sourceFormatConvertedBitmap); diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Imaging/Generated/TransformedBitmap.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Imaging/Generated/TransformedBitmap.cs index 97efeebed77..aa834817b66 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Imaging/Generated/TransformedBitmap.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media/Imaging/Generated/TransformedBitmap.cs @@ -120,7 +120,7 @@ public BitmapSource Source { get { - return (BitmapSource) GetValue(SourceProperty); + return (BitmapSource)GetValue(SourceProperty); } set { @@ -135,7 +135,7 @@ public Transform Transform { get { - return (Transform) GetValue(TransformProperty); + return (Transform)GetValue(TransformProperty); } set { @@ -166,7 +166,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable source) { - TransformedBitmap sourceTransformedBitmap = (TransformedBitmap) source; + TransformedBitmap sourceTransformedBitmap = (TransformedBitmap)source; // Set any state required before actual clone happens ClonePrequel(sourceTransformedBitmap); @@ -183,7 +183,7 @@ protected override void CloneCore(Freezable source) /// protected override void CloneCurrentValueCore(Freezable source) { - TransformedBitmap sourceTransformedBitmap = (TransformedBitmap) source; + TransformedBitmap sourceTransformedBitmap = (TransformedBitmap)source; // Set any state required before actual clone happens ClonePrequel(sourceTransformedBitmap); @@ -200,7 +200,7 @@ protected override void CloneCurrentValueCore(Freezable source) /// protected override void GetAsFrozenCore(Freezable source) { - TransformedBitmap sourceTransformedBitmap = (TransformedBitmap) source; + TransformedBitmap sourceTransformedBitmap = (TransformedBitmap)source; // Set any state required before actual clone happens ClonePrequel(sourceTransformedBitmap); @@ -217,7 +217,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - TransformedBitmap sourceTransformedBitmap = (TransformedBitmap) source; + TransformedBitmap sourceTransformedBitmap = (TransformedBitmap)source; // Set any state required before actual clone happens ClonePrequel(sourceTransformedBitmap); diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/AxisAngleRotation3D.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/AxisAngleRotation3D.cs index 79e342395ec..f955609f283 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/AxisAngleRotation3D.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/AxisAngleRotation3D.cs @@ -90,7 +90,7 @@ public Vector3D Axis { get { - return (Vector3D) GetValue(AxisProperty); + return (Vector3D)GetValue(AxisProperty); } set { @@ -105,7 +105,7 @@ public double Angle { get { - return (double) GetValue(AngleProperty); + return (double)GetValue(AngleProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Camera.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Camera.cs index 9c6f2c84239..fa5d98cd293 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Camera.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Camera.cs @@ -120,7 +120,7 @@ public Transform3D Transform { get { - return (Transform3D) GetValue(TransformProperty); + return (Transform3D)GetValue(TransformProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/DiffuseMaterial.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/DiffuseMaterial.cs index 8f8b9165be9..d83736be36e 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/DiffuseMaterial.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/DiffuseMaterial.cs @@ -134,7 +134,7 @@ public Color Color { get { - return (Color) GetValue(ColorProperty); + return (Color)GetValue(ColorProperty); } set { @@ -149,7 +149,7 @@ public Color AmbientColor { get { - return (Color) GetValue(AmbientColorProperty); + return (Color)GetValue(AmbientColorProperty); } set { @@ -164,7 +164,7 @@ public Brush Brush { get { - return (Brush) GetValue(BrushProperty); + return (Brush)GetValue(BrushProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/DirectionalLight.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/DirectionalLight.cs index 274f05c1897..08f20331e37 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/DirectionalLight.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/DirectionalLight.cs @@ -79,7 +79,7 @@ public Vector3D Direction { get { - return (Vector3D) GetValue(DirectionProperty); + return (Vector3D)GetValue(DirectionProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/EmissiveMaterial.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/EmissiveMaterial.cs index 2732910a869..a4a242bbd8b 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/EmissiveMaterial.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/EmissiveMaterial.cs @@ -127,7 +127,7 @@ public Color Color { get { - return (Color) GetValue(ColorProperty); + return (Color)GetValue(ColorProperty); } set { @@ -142,7 +142,7 @@ public Brush Brush { get { - return (Brush) GetValue(BrushProperty); + return (Brush)GetValue(BrushProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/GeneralTransform3DCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/GeneralTransform3DCollection.cs index a31745955f6..48c6ddae1fe 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/GeneralTransform3DCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/GeneralTransform3DCollection.cs @@ -481,10 +481,10 @@ internal override void OnInheritanceContextChangedCore(EventArgs args) { base.OnInheritanceContextChangedCore(args); - for (int i=0; i protected override void CloneCore(Freezable source) { - GeneralTransform3DCollection sourceGeneralTransform3DCollection = (GeneralTransform3DCollection) source; + GeneralTransform3DCollection sourceGeneralTransform3DCollection = (GeneralTransform3DCollection)source; base.CloneCore(source); @@ -587,7 +587,7 @@ protected override void CloneCore(Freezable source) for (int i = 0; i < count; i++) { - GeneralTransform3D newValue = (GeneralTransform3D) sourceGeneralTransform3DCollection._collection[i].Clone(); + GeneralTransform3D newValue = (GeneralTransform3D)sourceGeneralTransform3DCollection._collection[i].Clone(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); @@ -599,7 +599,7 @@ protected override void CloneCore(Freezable source) /// protected override void CloneCurrentValueCore(Freezable source) { - GeneralTransform3DCollection sourceGeneralTransform3DCollection = (GeneralTransform3DCollection) source; + GeneralTransform3DCollection sourceGeneralTransform3DCollection = (GeneralTransform3DCollection)source; base.CloneCurrentValueCore(source); @@ -609,7 +609,7 @@ protected override void CloneCurrentValueCore(Freezable source) for (int i = 0; i < count; i++) { - GeneralTransform3D newValue = (GeneralTransform3D) sourceGeneralTransform3DCollection._collection[i].CloneCurrentValue(); + GeneralTransform3D newValue = (GeneralTransform3D)sourceGeneralTransform3DCollection._collection[i].CloneCurrentValue(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); @@ -621,7 +621,7 @@ protected override void CloneCurrentValueCore(Freezable source) /// protected override void GetAsFrozenCore(Freezable source) { - GeneralTransform3DCollection sourceGeneralTransform3DCollection = (GeneralTransform3DCollection) source; + GeneralTransform3DCollection sourceGeneralTransform3DCollection = (GeneralTransform3DCollection)source; base.GetAsFrozenCore(source); @@ -631,7 +631,7 @@ protected override void GetAsFrozenCore(Freezable source) for (int i = 0; i < count; i++) { - GeneralTransform3D newValue = (GeneralTransform3D) sourceGeneralTransform3DCollection._collection[i].GetAsFrozen(); + GeneralTransform3D newValue = (GeneralTransform3D)sourceGeneralTransform3DCollection._collection[i].GetAsFrozen(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); @@ -643,7 +643,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - GeneralTransform3DCollection sourceGeneralTransform3DCollection = (GeneralTransform3DCollection) source; + GeneralTransform3DCollection sourceGeneralTransform3DCollection = (GeneralTransform3DCollection)source; base.GetCurrentValueAsFrozenCore(source); @@ -653,7 +653,7 @@ protected override void GetCurrentValueAsFrozenCore(Freezable source) for (int i = 0; i < count; i++) { - GeneralTransform3D newValue = (GeneralTransform3D) sourceGeneralTransform3DCollection._collection[i].GetCurrentValueAsFrozen(); + GeneralTransform3D newValue = (GeneralTransform3D)sourceGeneralTransform3DCollection._collection[i].GetCurrentValueAsFrozen(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/GeneralTransform3DGroup.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/GeneralTransform3DGroup.cs index 3ce451595e5..23f87c4d6de 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/GeneralTransform3DGroup.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/GeneralTransform3DGroup.cs @@ -73,7 +73,7 @@ public GeneralTransform3DCollection Children { get { - return (GeneralTransform3DCollection) GetValue(ChildrenProperty); + return (GeneralTransform3DCollection)GetValue(ChildrenProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/GeometryModel3D.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/GeometryModel3D.cs index f870830b68c..2aa55547a87 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/GeometryModel3D.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/GeometryModel3D.cs @@ -220,7 +220,7 @@ public Geometry3D Geometry { get { - return (Geometry3D) GetValue(GeometryProperty); + return (Geometry3D)GetValue(GeometryProperty); } set { @@ -235,7 +235,7 @@ public Material Material { get { - return (Material) GetValue(MaterialProperty); + return (Material)GetValue(MaterialProperty); } set { @@ -250,7 +250,7 @@ public Material BackMaterial { get { - return (Material) GetValue(BackMaterialProperty); + return (Material)GetValue(BackMaterialProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Light.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Light.cs index 5bc019bf38a..52cbd1d0c2b 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Light.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Light.cs @@ -79,7 +79,7 @@ public Color Color { get { - return (Color) GetValue(ColorProperty); + return (Color)GetValue(ColorProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/MaterialCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/MaterialCollection.cs index 19e136af19f..660119a25c6 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/MaterialCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/MaterialCollection.cs @@ -493,10 +493,10 @@ internal override void OnInheritanceContextChangedCore(EventArgs args) { base.OnInheritanceContextChangedCore(args); - for (int i=0; i protected override void CloneCore(Freezable source) { - MaterialCollection sourceMaterialCollection = (MaterialCollection) source; + MaterialCollection sourceMaterialCollection = (MaterialCollection)source; base.CloneCore(source); @@ -622,7 +622,7 @@ protected override void CloneCore(Freezable source) for (int i = 0; i < count; i++) { - Material newValue = (Material) sourceMaterialCollection._collection[i].Clone(); + Material newValue = (Material)sourceMaterialCollection._collection[i].Clone(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); OnInsert(newValue); @@ -634,7 +634,7 @@ protected override void CloneCore(Freezable source) /// protected override void CloneCurrentValueCore(Freezable source) { - MaterialCollection sourceMaterialCollection = (MaterialCollection) source; + MaterialCollection sourceMaterialCollection = (MaterialCollection)source; base.CloneCurrentValueCore(source); @@ -644,7 +644,7 @@ protected override void CloneCurrentValueCore(Freezable source) for (int i = 0; i < count; i++) { - Material newValue = (Material) sourceMaterialCollection._collection[i].CloneCurrentValue(); + Material newValue = (Material)sourceMaterialCollection._collection[i].CloneCurrentValue(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); OnInsert(newValue); @@ -656,7 +656,7 @@ protected override void CloneCurrentValueCore(Freezable source) /// protected override void GetAsFrozenCore(Freezable source) { - MaterialCollection sourceMaterialCollection = (MaterialCollection) source; + MaterialCollection sourceMaterialCollection = (MaterialCollection)source; base.GetAsFrozenCore(source); @@ -666,7 +666,7 @@ protected override void GetAsFrozenCore(Freezable source) for (int i = 0; i < count; i++) { - Material newValue = (Material) sourceMaterialCollection._collection[i].GetAsFrozen(); + Material newValue = (Material)sourceMaterialCollection._collection[i].GetAsFrozen(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); OnInsert(newValue); @@ -678,7 +678,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - MaterialCollection sourceMaterialCollection = (MaterialCollection) source; + MaterialCollection sourceMaterialCollection = (MaterialCollection)source; base.GetCurrentValueAsFrozenCore(source); @@ -688,7 +688,7 @@ protected override void GetCurrentValueAsFrozenCore(Freezable source) for (int i = 0; i < count; i++) { - Material newValue = (Material) sourceMaterialCollection._collection[i].GetCurrentValueAsFrozen(); + Material newValue = (Material)sourceMaterialCollection._collection[i].GetCurrentValueAsFrozen(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); OnInsert(newValue); diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/MaterialGroup.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/MaterialGroup.cs index 4d52f1fb933..9bd1ba8fc0b 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/MaterialGroup.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/MaterialGroup.cs @@ -163,7 +163,7 @@ public MaterialCollection Children { get { - return (MaterialCollection) GetValue(ChildrenProperty); + return (MaterialCollection)GetValue(ChildrenProperty); } set { @@ -233,7 +233,7 @@ internal override void UpdateResource(DUCE.Channel channel, bool skipOnChannelCh // Copy this collection's elements (or their handles) to reserved data - for(int i = 0; i < ChildrenCount; i++) + for (int i = 0; i < ChildrenCount; i++) { DUCE.ResourceHandle resource = ((DUCE.IResource)vChildren.Internal_GetItem(i)).GetHandle(channel);; channel.AppendCommandData( diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Matrix3D.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Matrix3D.cs index 6b9662b751e..b6fbab5cb47 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Matrix3D.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Matrix3D.cs @@ -50,7 +50,7 @@ public partial struct Matrix3D : IFormattable /// /// The first Matrix3D to compare /// The second Matrix3D to compare - public static bool operator == (Matrix3D matrix1, Matrix3D matrix2) + public static bool operator ==(Matrix3D matrix1, Matrix3D matrix2) { if (matrix1.IsDistinguishedIdentity || matrix2.IsDistinguishedIdentity) { @@ -88,7 +88,7 @@ public partial struct Matrix3D : IFormattable /// /// The first Matrix3D to compare /// The second Matrix3D to compare - public static bool operator != (Matrix3D matrix1, Matrix3D matrix2) + public static bool operator !=(Matrix3D matrix1, Matrix3D matrix2) { return !(matrix1 == matrix2); } @@ -104,7 +104,7 @@ public partial struct Matrix3D : IFormattable /// /// The first Matrix3D to compare /// The second Matrix3D to compare - public static bool Equals (Matrix3D matrix1, Matrix3D matrix2) + public static bool Equals(Matrix3D matrix1, Matrix3D matrix2) { if (matrix1.IsDistinguishedIdentity || matrix2.IsDistinguishedIdentity) { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/MatrixCamera.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/MatrixCamera.cs index 32fd43f726d..df3705fefc6 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/MatrixCamera.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/MatrixCamera.cs @@ -86,7 +86,7 @@ public Matrix3D ViewMatrix { get { - return (Matrix3D) GetValue(ViewMatrixProperty); + return (Matrix3D)GetValue(ViewMatrixProperty); } set { @@ -101,7 +101,7 @@ public Matrix3D ProjectionMatrix { get { - return (Matrix3D) GetValue(ProjectionMatrixProperty); + return (Matrix3D)GetValue(ProjectionMatrixProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/MatrixTransform3D.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/MatrixTransform3D.cs index bb6b1df775b..f642340e840 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/MatrixTransform3D.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/MatrixTransform3D.cs @@ -79,7 +79,7 @@ public Matrix3D Matrix { get { - return (Matrix3D) GetValue(MatrixProperty); + return (Matrix3D)GetValue(MatrixProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/MeshGeometry3D.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/MeshGeometry3D.cs index a9191551bc3..27f41fd2ff8 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/MeshGeometry3D.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/MeshGeometry3D.cs @@ -116,7 +116,7 @@ public Point3DCollection Positions { get { - return (Point3DCollection) GetValue(PositionsProperty); + return (Point3DCollection)GetValue(PositionsProperty); } set { @@ -131,7 +131,7 @@ public Vector3DCollection Normals { get { - return (Vector3DCollection) GetValue(NormalsProperty); + return (Vector3DCollection)GetValue(NormalsProperty); } set { @@ -146,7 +146,7 @@ public PointCollection TextureCoordinates { get { - return (PointCollection) GetValue(TextureCoordinatesProperty); + return (PointCollection)GetValue(TextureCoordinatesProperty); } set { @@ -161,7 +161,7 @@ public Int32Collection TriangleIndices { get { - return (Int32Collection) GetValue(TriangleIndicesProperty); + return (Int32Collection)GetValue(TriangleIndicesProperty); } set { @@ -243,7 +243,7 @@ internal override void UpdateResource(DUCE.Channel channel, bool skipOnChannelCh // Copy this collection's elements (or their handles) to reserved data - for(int i = 0; i < PositionsCount; i++) + for (int i = 0; i < PositionsCount; i++) { MilPoint3F resource = CompositionResourceManager.Point3DToMilPoint3F(vPositions.Internal_GetItem(i)); channel.AppendCommandData( @@ -253,7 +253,7 @@ internal override void UpdateResource(DUCE.Channel channel, bool skipOnChannelCh } // Copy this collection's elements (or their handles) to reserved data - for(int i = 0; i < NormalsCount; i++) + for (int i = 0; i < NormalsCount; i++) { MilPoint3F resource = CompositionResourceManager.Vector3DToMilPoint3F(vNormals.Internal_GetItem(i)); channel.AppendCommandData( @@ -263,7 +263,7 @@ internal override void UpdateResource(DUCE.Channel channel, bool skipOnChannelCh } // Copy this collection's elements (or their handles) to reserved data - for(int i = 0; i < TextureCoordinatesCount; i++) + for (int i = 0; i < TextureCoordinatesCount; i++) { Point resource = vTextureCoordinates.Internal_GetItem(i); channel.AppendCommandData( @@ -273,7 +273,7 @@ internal override void UpdateResource(DUCE.Channel channel, bool skipOnChannelCh } // Copy this collection's elements (or their handles) to reserved data - for(int i = 0; i < TriangleIndicesCount; i++) + for (int i = 0; i < TriangleIndicesCount; i++) { Int32 resource = vTriangleIndices.Internal_GetItem(i); channel.AppendCommandData( diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Model3D.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Model3D.cs index 2b5a588defd..baa67c71878 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Model3D.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Model3D.cs @@ -120,7 +120,7 @@ public Transform3D Transform { get { - return (Transform3D) GetValue(TransformProperty); + return (Transform3D)GetValue(TransformProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Model3DCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Model3DCollection.cs index bc66e66ab0d..4f2ccbf0eb6 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Model3DCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Model3DCollection.cs @@ -493,10 +493,10 @@ internal override void OnInheritanceContextChangedCore(EventArgs args) { base.OnInheritanceContextChangedCore(args); - for (int i=0; i protected override void CloneCore(Freezable source) { - Model3DCollection sourceModel3DCollection = (Model3DCollection) source; + Model3DCollection sourceModel3DCollection = (Model3DCollection)source; base.CloneCore(source); @@ -622,7 +622,7 @@ protected override void CloneCore(Freezable source) for (int i = 0; i < count; i++) { - Model3D newValue = (Model3D) sourceModel3DCollection._collection[i].Clone(); + Model3D newValue = (Model3D)sourceModel3DCollection._collection[i].Clone(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); OnInsert(newValue); @@ -634,7 +634,7 @@ protected override void CloneCore(Freezable source) /// protected override void CloneCurrentValueCore(Freezable source) { - Model3DCollection sourceModel3DCollection = (Model3DCollection) source; + Model3DCollection sourceModel3DCollection = (Model3DCollection)source; base.CloneCurrentValueCore(source); @@ -644,7 +644,7 @@ protected override void CloneCurrentValueCore(Freezable source) for (int i = 0; i < count; i++) { - Model3D newValue = (Model3D) sourceModel3DCollection._collection[i].CloneCurrentValue(); + Model3D newValue = (Model3D)sourceModel3DCollection._collection[i].CloneCurrentValue(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); OnInsert(newValue); @@ -656,7 +656,7 @@ protected override void CloneCurrentValueCore(Freezable source) /// protected override void GetAsFrozenCore(Freezable source) { - Model3DCollection sourceModel3DCollection = (Model3DCollection) source; + Model3DCollection sourceModel3DCollection = (Model3DCollection)source; base.GetAsFrozenCore(source); @@ -666,7 +666,7 @@ protected override void GetAsFrozenCore(Freezable source) for (int i = 0; i < count; i++) { - Model3D newValue = (Model3D) sourceModel3DCollection._collection[i].GetAsFrozen(); + Model3D newValue = (Model3D)sourceModel3DCollection._collection[i].GetAsFrozen(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); OnInsert(newValue); @@ -678,7 +678,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - Model3DCollection sourceModel3DCollection = (Model3DCollection) source; + Model3DCollection sourceModel3DCollection = (Model3DCollection)source; base.GetCurrentValueAsFrozenCore(source); @@ -688,7 +688,7 @@ protected override void GetCurrentValueAsFrozenCore(Freezable source) for (int i = 0; i < count; i++) { - Model3D newValue = (Model3D) sourceModel3DCollection._collection[i].GetCurrentValueAsFrozen(); + Model3D newValue = (Model3D)sourceModel3DCollection._collection[i].GetCurrentValueAsFrozen(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); OnInsert(newValue); diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Model3DGroup.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Model3DGroup.cs index a50385eb72d..52d8d08afd7 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Model3DGroup.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Model3DGroup.cs @@ -163,7 +163,7 @@ public Model3DCollection Children { get { - return (Model3DCollection) GetValue(ChildrenProperty); + return (Model3DCollection)GetValue(ChildrenProperty); } set { @@ -248,7 +248,7 @@ internal override void UpdateResource(DUCE.Channel channel, bool skipOnChannelCh // Copy this collection's elements (or their handles) to reserved data - for(int i = 0; i < ChildrenCount; i++) + for (int i = 0; i < ChildrenCount; i++) { DUCE.ResourceHandle resource = ((DUCE.IResource)vChildren.Internal_GetItem(i)).GetHandle(channel);; channel.AppendCommandData( diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/OrthographicCamera.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/OrthographicCamera.cs index d246c2ef594..197739e88ab 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/OrthographicCamera.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/OrthographicCamera.cs @@ -79,7 +79,7 @@ public double Width { get { - return (double) GetValue(WidthProperty); + return (double)GetValue(WidthProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/PerspectiveCamera.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/PerspectiveCamera.cs index 8c1916492ae..19f209d696b 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/PerspectiveCamera.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/PerspectiveCamera.cs @@ -79,7 +79,7 @@ public double FieldOfView { get { - return (double) GetValue(FieldOfViewProperty); + return (double)GetValue(FieldOfViewProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Point3D.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Point3D.cs index 84b1d3950a1..5ede4627686 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Point3D.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Point3D.cs @@ -50,7 +50,7 @@ public partial struct Point3D : IFormattable /// /// The first Point3D to compare /// The second Point3D to compare - public static bool operator == (Point3D point1, Point3D point2) + public static bool operator ==(Point3D point1, Point3D point2) { return point1.X == point2.X && point1.Y == point2.Y && @@ -68,7 +68,7 @@ public partial struct Point3D : IFormattable /// /// The first Point3D to compare /// The second Point3D to compare - public static bool operator != (Point3D point1, Point3D point2) + public static bool operator !=(Point3D point1, Point3D point2) { return !(point1 == point2); } @@ -84,7 +84,7 @@ public partial struct Point3D : IFormattable /// /// The first Point3D to compare /// The second Point3D to compare - public static bool Equals (Point3D point1, Point3D point2) + public static bool Equals(Point3D point1, Point3D point2) { return point1.X.Equals(point2.X) && point1.Y.Equals(point2.Y) && diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Point3DCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Point3DCollection.cs index 5439f64bde9..7e35533ba6d 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Point3DCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Point3DCollection.cs @@ -520,7 +520,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable source) { - Point3DCollection sourcePoint3DCollection = (Point3DCollection) source; + Point3DCollection sourcePoint3DCollection = (Point3DCollection)source; base.CloneCore(source); @@ -539,7 +539,7 @@ protected override void CloneCore(Freezable source) /// protected override void CloneCurrentValueCore(Freezable source) { - Point3DCollection sourcePoint3DCollection = (Point3DCollection) source; + Point3DCollection sourcePoint3DCollection = (Point3DCollection)source; base.CloneCurrentValueCore(source); @@ -558,7 +558,7 @@ protected override void CloneCurrentValueCore(Freezable source) /// protected override void GetAsFrozenCore(Freezable source) { - Point3DCollection sourcePoint3DCollection = (Point3DCollection) source; + Point3DCollection sourcePoint3DCollection = (Point3DCollection)source; base.GetAsFrozenCore(source); @@ -577,7 +577,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - Point3DCollection sourcePoint3DCollection = (Point3DCollection) source; + Point3DCollection sourcePoint3DCollection = (Point3DCollection)source; base.GetCurrentValueAsFrozenCore(source); @@ -687,7 +687,7 @@ internal string ConvertToString(string format, IFormatProvider provider) // Helper to get the numeric list separator for a given culture. // char separator = MS.Internal.TokenizerHelper.GetNumericListSeparator(provider); - for (int i=0; i<_collection.Count; i++) + for (int i = 0; i < _collection.Count; i++) { str.AppendFormat( provider, diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Point4D.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Point4D.cs index f5cdf6e27ed..5966cfcea50 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Point4D.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Point4D.cs @@ -50,7 +50,7 @@ public partial struct Point4D : IFormattable /// /// The first Point4D to compare /// The second Point4D to compare - public static bool operator == (Point4D point1, Point4D point2) + public static bool operator ==(Point4D point1, Point4D point2) { return point1.X == point2.X && point1.Y == point2.Y && @@ -69,7 +69,7 @@ public partial struct Point4D : IFormattable /// /// The first Point4D to compare /// The second Point4D to compare - public static bool operator != (Point4D point1, Point4D point2) + public static bool operator !=(Point4D point1, Point4D point2) { return !(point1 == point2); } @@ -85,7 +85,7 @@ public partial struct Point4D : IFormattable /// /// The first Point4D to compare /// The second Point4D to compare - public static bool Equals (Point4D point1, Point4D point2) + public static bool Equals(Point4D point1, Point4D point2) { return point1.X.Equals(point2.X) && point1.Y.Equals(point2.Y) && diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/PointLightBase.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/PointLightBase.cs index 51b9e679ee4..4675433c589 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/PointLightBase.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/PointLightBase.cs @@ -107,7 +107,7 @@ public Point3D Position { get { - return (Point3D) GetValue(PositionProperty); + return (Point3D)GetValue(PositionProperty); } set { @@ -122,7 +122,7 @@ public double Range { get { - return (double) GetValue(RangeProperty); + return (double)GetValue(RangeProperty); } set { @@ -137,7 +137,7 @@ public double ConstantAttenuation { get { - return (double) GetValue(ConstantAttenuationProperty); + return (double)GetValue(ConstantAttenuationProperty); } set { @@ -152,7 +152,7 @@ public double LinearAttenuation { get { - return (double) GetValue(LinearAttenuationProperty); + return (double)GetValue(LinearAttenuationProperty); } set { @@ -167,7 +167,7 @@ public double QuadraticAttenuation { get { - return (double) GetValue(QuadraticAttenuationProperty); + return (double)GetValue(QuadraticAttenuationProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/ProjectionCamera.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/ProjectionCamera.cs index 39f85faf923..a3566f4be46 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/ProjectionCamera.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/ProjectionCamera.cs @@ -107,7 +107,7 @@ public double NearPlaneDistance { get { - return (double) GetValue(NearPlaneDistanceProperty); + return (double)GetValue(NearPlaneDistanceProperty); } set { @@ -122,7 +122,7 @@ public double FarPlaneDistance { get { - return (double) GetValue(FarPlaneDistanceProperty); + return (double)GetValue(FarPlaneDistanceProperty); } set { @@ -137,7 +137,7 @@ public Point3D Position { get { - return (Point3D) GetValue(PositionProperty); + return (Point3D)GetValue(PositionProperty); } set { @@ -152,7 +152,7 @@ public Vector3D LookDirection { get { - return (Vector3D) GetValue(LookDirectionProperty); + return (Vector3D)GetValue(LookDirectionProperty); } set { @@ -167,7 +167,7 @@ public Vector3D UpDirection { get { - return (Vector3D) GetValue(UpDirectionProperty); + return (Vector3D)GetValue(UpDirectionProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Quaternion.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Quaternion.cs index df034c6c5f5..a0bc65484fc 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Quaternion.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Quaternion.cs @@ -50,7 +50,7 @@ public partial struct Quaternion : IFormattable /// /// The first Quaternion to compare /// The second Quaternion to compare - public static bool operator == (Quaternion quaternion1, Quaternion quaternion2) + public static bool operator ==(Quaternion quaternion1, Quaternion quaternion2) { if (quaternion1.IsDistinguishedIdentity || quaternion2.IsDistinguishedIdentity) { @@ -76,7 +76,7 @@ public partial struct Quaternion : IFormattable /// /// The first Quaternion to compare /// The second Quaternion to compare - public static bool operator != (Quaternion quaternion1, Quaternion quaternion2) + public static bool operator !=(Quaternion quaternion1, Quaternion quaternion2) { return !(quaternion1 == quaternion2); } @@ -92,7 +92,7 @@ public partial struct Quaternion : IFormattable /// /// The first Quaternion to compare /// The second Quaternion to compare - public static bool Equals (Quaternion quaternion1, Quaternion quaternion2) + public static bool Equals(Quaternion quaternion1, Quaternion quaternion2) { if (quaternion1.IsDistinguishedIdentity || quaternion2.IsDistinguishedIdentity) { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Rect3D.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Rect3D.cs index d7089f8f815..b29758f9d53 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Rect3D.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Rect3D.cs @@ -50,7 +50,7 @@ public partial struct Rect3D : IFormattable /// /// The first Rect3D to compare /// The second Rect3D to compare - public static bool operator == (Rect3D rect1, Rect3D rect2) + public static bool operator ==(Rect3D rect1, Rect3D rect2) { return rect1.X == rect2.X && rect1.Y == rect2.Y && @@ -71,7 +71,7 @@ public partial struct Rect3D : IFormattable /// /// The first Rect3D to compare /// The second Rect3D to compare - public static bool operator != (Rect3D rect1, Rect3D rect2) + public static bool operator !=(Rect3D rect1, Rect3D rect2) { return !(rect1 == rect2); } @@ -87,7 +87,7 @@ public partial struct Rect3D : IFormattable /// /// The first Rect3D to compare /// The second Rect3D to compare - public static bool Equals (Rect3D rect1, Rect3D rect2) + public static bool Equals(Rect3D rect1, Rect3D rect2) { if (rect1.IsEmpty) { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Size3D.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Size3D.cs index 8be93cda490..79443c5c524 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Size3D.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Size3D.cs @@ -50,7 +50,7 @@ public partial struct Size3D : IFormattable /// /// The first Size3D to compare /// The second Size3D to compare - public static bool operator == (Size3D size1, Size3D size2) + public static bool operator ==(Size3D size1, Size3D size2) { return size1.X == size2.X && size1.Y == size2.Y && @@ -68,7 +68,7 @@ public partial struct Size3D : IFormattable /// /// The first Size3D to compare /// The second Size3D to compare - public static bool operator != (Size3D size1, Size3D size2) + public static bool operator !=(Size3D size1, Size3D size2) { return !(size1 == size2); } @@ -84,7 +84,7 @@ public partial struct Size3D : IFormattable /// /// The first Size3D to compare /// The second Size3D to compare - public static bool Equals (Size3D size1, Size3D size2) + public static bool Equals(Size3D size1, Size3D size2) { if (size1.IsEmpty) { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/SpecularMaterial.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/SpecularMaterial.cs index 78052291383..e3b59603f32 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/SpecularMaterial.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/SpecularMaterial.cs @@ -134,7 +134,7 @@ public Color Color { get { - return (Color) GetValue(ColorProperty); + return (Color)GetValue(ColorProperty); } set { @@ -149,7 +149,7 @@ public Brush Brush { get { - return (Brush) GetValue(BrushProperty); + return (Brush)GetValue(BrushProperty); } set { @@ -164,7 +164,7 @@ public double SpecularPower { get { - return (double) GetValue(SpecularPowerProperty); + return (double)GetValue(SpecularPowerProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/SpotLight.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/SpotLight.cs index 92ff41c7f8d..e08eb66aae3 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/SpotLight.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/SpotLight.cs @@ -93,7 +93,7 @@ public Vector3D Direction { get { - return (Vector3D) GetValue(DirectionProperty); + return (Vector3D)GetValue(DirectionProperty); } set { @@ -108,7 +108,7 @@ public double OuterConeAngle { get { - return (double) GetValue(OuterConeAngleProperty); + return (double)GetValue(OuterConeAngleProperty); } set { @@ -123,7 +123,7 @@ public double InnerConeAngle { get { - return (double) GetValue(InnerConeAngleProperty); + return (double)GetValue(InnerConeAngleProperty); } set { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Transform3DCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Transform3DCollection.cs index 11f925f8a92..974ba14003a 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Transform3DCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Transform3DCollection.cs @@ -493,10 +493,10 @@ internal override void OnInheritanceContextChangedCore(EventArgs args) { base.OnInheritanceContextChangedCore(args); - for (int i=0; i protected override void CloneCore(Freezable source) { - Transform3DCollection sourceTransform3DCollection = (Transform3DCollection) source; + Transform3DCollection sourceTransform3DCollection = (Transform3DCollection)source; base.CloneCore(source); @@ -622,7 +622,7 @@ protected override void CloneCore(Freezable source) for (int i = 0; i < count; i++) { - Transform3D newValue = (Transform3D) sourceTransform3DCollection._collection[i].Clone(); + Transform3D newValue = (Transform3D)sourceTransform3DCollection._collection[i].Clone(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); OnInsert(newValue); @@ -634,7 +634,7 @@ protected override void CloneCore(Freezable source) /// protected override void CloneCurrentValueCore(Freezable source) { - Transform3DCollection sourceTransform3DCollection = (Transform3DCollection) source; + Transform3DCollection sourceTransform3DCollection = (Transform3DCollection)source; base.CloneCurrentValueCore(source); @@ -644,7 +644,7 @@ protected override void CloneCurrentValueCore(Freezable source) for (int i = 0; i < count; i++) { - Transform3D newValue = (Transform3D) sourceTransform3DCollection._collection[i].CloneCurrentValue(); + Transform3D newValue = (Transform3D)sourceTransform3DCollection._collection[i].CloneCurrentValue(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); OnInsert(newValue); @@ -656,7 +656,7 @@ protected override void CloneCurrentValueCore(Freezable source) /// protected override void GetAsFrozenCore(Freezable source) { - Transform3DCollection sourceTransform3DCollection = (Transform3DCollection) source; + Transform3DCollection sourceTransform3DCollection = (Transform3DCollection)source; base.GetAsFrozenCore(source); @@ -666,7 +666,7 @@ protected override void GetAsFrozenCore(Freezable source) for (int i = 0; i < count; i++) { - Transform3D newValue = (Transform3D) sourceTransform3DCollection._collection[i].GetAsFrozen(); + Transform3D newValue = (Transform3D)sourceTransform3DCollection._collection[i].GetAsFrozen(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); OnInsert(newValue); @@ -678,7 +678,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - Transform3DCollection sourceTransform3DCollection = (Transform3DCollection) source; + Transform3DCollection sourceTransform3DCollection = (Transform3DCollection)source; base.GetCurrentValueAsFrozenCore(source); @@ -688,7 +688,7 @@ protected override void GetCurrentValueAsFrozenCore(Freezable source) for (int i = 0; i < count; i++) { - Transform3D newValue = (Transform3D) sourceTransform3DCollection._collection[i].GetCurrentValueAsFrozen(); + Transform3D newValue = (Transform3D)sourceTransform3DCollection._collection[i].GetCurrentValueAsFrozen(); OnFreezablePropertyChanged(/* oldValue = */ null, newValue); _collection.Add(newValue); OnInsert(newValue); diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Transform3DGroup.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Transform3DGroup.cs index e7331a6d07c..b79b3e6a2a5 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Transform3DGroup.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Transform3DGroup.cs @@ -163,7 +163,7 @@ public Transform3DCollection Children { get { - return (Transform3DCollection) GetValue(ChildrenProperty); + return (Transform3DCollection)GetValue(ChildrenProperty); } set { @@ -233,7 +233,7 @@ internal override void UpdateResource(DUCE.Channel channel, bool skipOnChannelCh // Copy this collection's elements (or their handles) to reserved data - for(int i = 0; i < ChildrenCount; i++) + for (int i = 0; i < ChildrenCount; i++) { DUCE.ResourceHandle resource = ((DUCE.IResource)vChildren.Internal_GetItem(i)).GetHandle(channel);; channel.AppendCommandData( diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Vector3D.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Vector3D.cs index 31e735152cc..3e634f554b9 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Vector3D.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Vector3D.cs @@ -50,7 +50,7 @@ public partial struct Vector3D : IFormattable /// /// The first Vector3D to compare /// The second Vector3D to compare - public static bool operator == (Vector3D vector1, Vector3D vector2) + public static bool operator ==(Vector3D vector1, Vector3D vector2) { return vector1.X == vector2.X && vector1.Y == vector2.Y && @@ -68,7 +68,7 @@ public partial struct Vector3D : IFormattable /// /// The first Vector3D to compare /// The second Vector3D to compare - public static bool operator != (Vector3D vector1, Vector3D vector2) + public static bool operator !=(Vector3D vector1, Vector3D vector2) { return !(vector1 == vector2); } @@ -84,7 +84,7 @@ public partial struct Vector3D : IFormattable /// /// The first Vector3D to compare /// The second Vector3D to compare - public static bool Equals (Vector3D vector1, Vector3D vector2) + public static bool Equals(Vector3D vector1, Vector3D vector2) { return vector1.X.Equals(vector2.X) && vector1.Y.Equals(vector2.Y) && diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Vector3DCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Vector3DCollection.cs index 32cd5910d9c..5f75a49f6fd 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Vector3DCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Vector3DCollection.cs @@ -520,7 +520,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable source) { - Vector3DCollection sourceVector3DCollection = (Vector3DCollection) source; + Vector3DCollection sourceVector3DCollection = (Vector3DCollection)source; base.CloneCore(source); @@ -539,7 +539,7 @@ protected override void CloneCore(Freezable source) /// protected override void CloneCurrentValueCore(Freezable source) { - Vector3DCollection sourceVector3DCollection = (Vector3DCollection) source; + Vector3DCollection sourceVector3DCollection = (Vector3DCollection)source; base.CloneCurrentValueCore(source); @@ -558,7 +558,7 @@ protected override void CloneCurrentValueCore(Freezable source) /// protected override void GetAsFrozenCore(Freezable source) { - Vector3DCollection sourceVector3DCollection = (Vector3DCollection) source; + Vector3DCollection sourceVector3DCollection = (Vector3DCollection)source; base.GetAsFrozenCore(source); @@ -577,7 +577,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - Vector3DCollection sourceVector3DCollection = (Vector3DCollection) source; + Vector3DCollection sourceVector3DCollection = (Vector3DCollection)source; base.GetCurrentValueAsFrozenCore(source); @@ -687,7 +687,7 @@ internal string ConvertToString(string format, IFormatProvider provider) // Helper to get the numeric list separator for a given culture. // char separator = MS.Internal.TokenizerHelper.GetNumericListSeparator(provider); - for (int i=0; i<_collection.Count; i++) + for (int i = 0; i < _collection.Count; i++) { str.AppendFormat( provider, diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Visual3D.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Visual3D.cs index eb4bd1043eb..5095480b1c7 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Visual3D.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/System/Windows/Media3D/Generated/Visual3D.cs @@ -84,7 +84,7 @@ public void ApplyAnimationClock( if (IsSealed) { throw new InvalidOperationException(SR.Format(SR.IAnimatable_CantAnimateSealedDO, dp, this.GetType())); - } + } AnimationStorage.ApplyAnimationClock(this, dp, clock, handoffBehavior); } @@ -135,7 +135,7 @@ public void BeginAnimation(DependencyProperty dp, AnimationTimeline animation, H throw new ArgumentException(SR.Format(SR.Animation_DependencyPropertyIsNotAnimatable, dp.Name, this.GetType()), nameof(dp)); } - if ( animation != null + if (animation != null && !AnimationStorage.IsAnimationValid(dp, animation)) { throw new ArgumentException(SR.Format(SR.Animation_AnimationTimelineTypeMismatch, animation.GetType(), dp.Name, dp.PropertyType), nameof(animation)); @@ -149,7 +149,7 @@ public void BeginAnimation(DependencyProperty dp, AnimationTimeline animation, H if (IsSealed) { throw new InvalidOperationException(SR.Format(SR.IAnimatable_CantAnimateSealedDO, dp, this.GetType())); - } + } AnimationStorage.BeginAnimation(this, dp, animation, handoffBehavior); } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Generated/FrameworkContentElement.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Generated/FrameworkContentElement.cs index d5195e55ea3..e3dfbcbfc60 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Generated/FrameworkContentElement.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Generated/FrameworkContentElement.cs @@ -357,7 +357,7 @@ internal virtual void OnNewParent(DependencyObject newParent) // Synchronize ForceInherit properties - if(_parent != null) + if (_parent != null) { UIElement.SynchronizeForceInheritProperties(null, this, null, _parent); } @@ -540,16 +540,16 @@ internal bool ThisHasLoadedChangeEventHandler return true; } } - if(null != Style && Style.HasLoadedChangeHandler) + if (null != Style && Style.HasLoadedChangeHandler) { return true; } - if(null != ThemeStyle && ThemeStyle.HasLoadedChangeHandler) + if (null != ThemeStyle && ThemeStyle.HasLoadedChangeHandler) { return true; } - if(HasFefLoadedChangeHandler) + if (HasFefLoadedChangeHandler) { return true; } @@ -561,17 +561,17 @@ internal bool HasFefLoadedChangeHandler { get { - if(null == TemplatedParent) + if (null == TemplatedParent) { return false; } FrameworkElementFactory fefRoot = BroadcastEventHelper.GetFEFTreeRoot(TemplatedParent); - if(null == fefRoot) + if (null == fefRoot) { return false; } FrameworkElementFactory fef = StyleHelper.FindFEF(fefRoot, TemplateChildIndex); - if(null == fef) + if (null == fef) { return false; } @@ -1135,13 +1135,13 @@ internal FrugalObjectList InheritableProperties // Says if there is a loaded event pending internal object[] LoadedPending { - get { return (object[]) GetValue(LoadedPendingProperty); } + get { return (object[])GetValue(LoadedPendingProperty); } } // Says if there is an unloaded event pending internal object[] UnloadedPending { - get { return (object[]) GetValue(UnloadedPendingProperty); } + get { return (object[])GetValue(UnloadedPendingProperty); } } // Indicates if this instance has multiple inheritance contexts diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Generated/FrameworkElement.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Generated/FrameworkElement.cs index 8147c268b4f..221dd438ba4 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Generated/FrameworkElement.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Generated/FrameworkElement.cs @@ -355,11 +355,11 @@ internal virtual void OnNewParent(DependencyObject newParent) // Synchronize ForceInherit properties - if(_parent != null && _parent is ContentElement) + if (_parent != null && _parent is ContentElement) { UIElement.SynchronizeForceInheritProperties(this, null, null, _parent); } - else if(oldParent is ContentElement) + else if (oldParent is ContentElement) { UIElement.SynchronizeForceInheritProperties(this, null, null, oldParent); } @@ -555,21 +555,21 @@ internal bool ThisHasLoadedChangeEventHandler return true; } } - if(null != Style && Style.HasLoadedChangeHandler) + if (null != Style && Style.HasLoadedChangeHandler) { return true; } - if(null != ThemeStyle && ThemeStyle.HasLoadedChangeHandler) + if (null != ThemeStyle && ThemeStyle.HasLoadedChangeHandler) { return true; } - if(null != TemplateInternal && TemplateInternal.HasLoadedChangeHandler) + if (null != TemplateInternal && TemplateInternal.HasLoadedChangeHandler) { return true; } - if(HasFefLoadedChangeHandler) + if (HasFefLoadedChangeHandler) { return true; } @@ -581,17 +581,17 @@ internal bool HasFefLoadedChangeHandler { get { - if(null == TemplatedParent) + if (null == TemplatedParent) { return false; } FrameworkElementFactory fefRoot = BroadcastEventHelper.GetFEFTreeRoot(TemplatedParent); - if(null == fefRoot) + if (null == fefRoot) { return false; } FrameworkElementFactory fef = StyleHelper.FindFEF(fefRoot, TemplateChildIndex); - if(null == fef) + if (null == fef) { return false; } @@ -1172,13 +1172,13 @@ internal FrugalObjectList InheritableProperties // Says if there is a loaded event pending internal object[] LoadedPending { - get { return (object[]) GetValue(LoadedPendingProperty); } + get { return (object[])GetValue(LoadedPendingProperty); } } // Says if there is an unloaded event pending internal object[] UnloadedPending { - get { return (object[]) GetValue(UnloadedPendingProperty); } + get { return (object[])GetValue(UnloadedPendingProperty); } } // Indicates if this instance has multiple inheritance contexts diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Media/Animation/Generated/KeyFrames.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Media/Animation/Generated/KeyFrames.cs index 48fc2ec53cf..2d55c2baee8 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Media/Animation/Generated/KeyFrames.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Media/Animation/Generated/KeyFrames.cs @@ -152,6 +152,6 @@ protected abstract Thickness InterpolateValueCore( double keyFrameProgress); #endregion - } + } } \ No newline at end of file diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Media/Animation/Generated/ThicknessAnimation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Media/Animation/Generated/ThicknessAnimation.cs index 32a58291c84..12ff2982928 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Media/Animation/Generated/ThicknessAnimation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Media/Animation/Generated/ThicknessAnimation.cs @@ -229,7 +229,7 @@ protected override Thickness GetCurrentValueCore(Thickness defaultOriginValue, T bool validateOrigin = false; bool validateDestination = false; - switch(_animationType) + switch (_animationType) { case AnimationType.Automatic: diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Media/Animation/Generated/ThicknessAnimationUsingKeyFrames.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Media/Animation/Generated/ThicknessAnimationUsingKeyFrames.cs index fc9a279fb0d..5eb86889fd5 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Media/Animation/Generated/ThicknessAnimationUsingKeyFrames.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Media/Animation/Generated/ThicknessAnimationUsingKeyFrames.cs @@ -112,7 +112,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - ThicknessAnimationUsingKeyFrames sourceAnimation = (ThicknessAnimationUsingKeyFrames) sourceFreezable; + ThicknessAnimationUsingKeyFrames sourceAnimation = (ThicknessAnimationUsingKeyFrames)sourceFreezable; base.CloneCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -123,7 +123,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - ThicknessAnimationUsingKeyFrames sourceAnimation = (ThicknessAnimationUsingKeyFrames) sourceFreezable; + ThicknessAnimationUsingKeyFrames sourceAnimation = (ThicknessAnimationUsingKeyFrames)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -134,7 +134,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable source) { - ThicknessAnimationUsingKeyFrames sourceAnimation = (ThicknessAnimationUsingKeyFrames) source; + ThicknessAnimationUsingKeyFrames sourceAnimation = (ThicknessAnimationUsingKeyFrames)source; base.GetAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -145,7 +145,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - ThicknessAnimationUsingKeyFrames sourceAnimation = (ThicknessAnimationUsingKeyFrames) source; + ThicknessAnimationUsingKeyFrames sourceAnimation = (ThicknessAnimationUsingKeyFrames)source; base.GetCurrentValueAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -814,11 +814,11 @@ private void ResolveKeyTimes() || type == KeyTimeType.TimeSpan) { break; - } + } else if (type == KeyTimeType.Paced) { hasPacedKeyTimes = true; - } + } } Debug.Assert(index < keyFrameCount, @@ -984,7 +984,7 @@ private void ResolvePacedKeyTimes() { index++; } - } + } while (index < maxKeyFrameIndex); } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Media/Animation/Generated/ThicknessKeyFrameCollection.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Media/Animation/Generated/ThicknessKeyFrameCollection.cs index a6a1af60699..76ca771bb68 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Media/Animation/Generated/ThicknessKeyFrameCollection.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationFramework/System/Windows/Media/Animation/Generated/ThicknessKeyFrameCollection.cs @@ -90,7 +90,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - ThicknessKeyFrameCollection sourceCollection = (ThicknessKeyFrameCollection) sourceFreezable; + ThicknessKeyFrameCollection sourceCollection = (ThicknessKeyFrameCollection)sourceFreezable; base.CloneCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -111,7 +111,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - ThicknessKeyFrameCollection sourceCollection = (ThicknessKeyFrameCollection) sourceFreezable; + ThicknessKeyFrameCollection sourceCollection = (ThicknessKeyFrameCollection)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -132,7 +132,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable sourceFreezable) { - ThicknessKeyFrameCollection sourceCollection = (ThicknessKeyFrameCollection) sourceFreezable; + ThicknessKeyFrameCollection sourceCollection = (ThicknessKeyFrameCollection)sourceFreezable; base.GetAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -153,7 +153,7 @@ protected override void GetAsFrozenCore(Freezable sourceFreezable) /// protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable) { - ThicknessKeyFrameCollection sourceCollection = (ThicknessKeyFrameCollection) sourceFreezable; + ThicknessKeyFrameCollection sourceCollection = (ThicknessKeyFrameCollection)sourceFreezable; base.GetCurrentValueAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/AlignmentXValidation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/AlignmentXValidation.cs index 49727c47c6e..30d667194f7 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/AlignmentXValidation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/AlignmentXValidation.cs @@ -29,6 +29,6 @@ public static bool IsAlignmentXValid(object valueObject) return (value == AlignmentX.Left) || (value == AlignmentX.Center) || (value == AlignmentX.Right); - } + } } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/AlignmentYValidation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/AlignmentYValidation.cs index 4ce0bf05730..15c92d7f4b0 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/AlignmentYValidation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/AlignmentYValidation.cs @@ -29,6 +29,6 @@ public static bool IsAlignmentYValid(object valueObject) return (value == AlignmentY.Top) || (value == AlignmentY.Center) || (value == AlignmentY.Bottom); - } + } } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/BitmapScalingModeValidation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/BitmapScalingModeValidation.cs index 33f3ea7f88a..f0d47159c4b 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/BitmapScalingModeValidation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/BitmapScalingModeValidation.cs @@ -32,6 +32,6 @@ public static bool IsBitmapScalingModeValid(object valueObject) (value == BitmapScalingMode.Linear) || (value == BitmapScalingMode.Fant) || (value == BitmapScalingMode.NearestNeighbor); - } + } } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/BrushMappingModeValidation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/BrushMappingModeValidation.cs index 74873aaad21..606e5d40341 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/BrushMappingModeValidation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/BrushMappingModeValidation.cs @@ -28,6 +28,6 @@ public static bool IsBrushMappingModeValid(object valueObject) return (value == BrushMappingMode.Absolute) || (value == BrushMappingMode.RelativeToBoundingBox); - } + } } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/CachingHintValidation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/CachingHintValidation.cs index 3c046efbefb..d069b32e072 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/CachingHintValidation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/CachingHintValidation.cs @@ -28,6 +28,6 @@ public static bool IsCachingHintValid(object valueObject) return (value == CachingHint.Unspecified) || (value == CachingHint.Cache); - } + } } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/ClearTypeHintValidation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/ClearTypeHintValidation.cs index 79b465efe86..b85d7ff9e99 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/ClearTypeHintValidation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/ClearTypeHintValidation.cs @@ -28,6 +28,6 @@ public static bool IsClearTypeHintValid(object valueObject) return (value == ClearTypeHint.Auto) || (value == ClearTypeHint.Enabled); - } + } } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/ColorInterpolationModeValidation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/ColorInterpolationModeValidation.cs index 41a3a7e9fe9..d7b70e580e9 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/ColorInterpolationModeValidation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/ColorInterpolationModeValidation.cs @@ -28,6 +28,6 @@ public static bool IsColorInterpolationModeValid(object valueObject) return (value == ColorInterpolationMode.ScRgbLinearInterpolation) || (value == ColorInterpolationMode.SRgbLinearInterpolation); - } + } } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/EdgeModeValidation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/EdgeModeValidation.cs index 9da32fda068..6faddd72c3a 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/EdgeModeValidation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/EdgeModeValidation.cs @@ -28,6 +28,6 @@ public static bool IsEdgeModeValid(object valueObject) return (value == EdgeMode.Unspecified) || (value == EdgeMode.Aliased); - } + } } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/EdgeProfileValidation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/EdgeProfileValidation.cs index 4fcc41eda70..69955a92c95 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/EdgeProfileValidation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/EdgeProfileValidation.cs @@ -30,6 +30,6 @@ public static bool IsEdgeProfileValid(object valueObject) (value == EdgeProfile.CurvedIn) || (value == EdgeProfile.CurvedOut) || (value == EdgeProfile.BulgedUp); - } + } } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/FillRuleValidation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/FillRuleValidation.cs index 4d7272e781d..292ad89b753 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/FillRuleValidation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/FillRuleValidation.cs @@ -28,6 +28,6 @@ public static bool IsFillRuleValid(object valueObject) return (value == FillRule.EvenOdd) || (value == FillRule.Nonzero); - } + } } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/GeometryCombineModeValidation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/GeometryCombineModeValidation.cs index 7c8ec4c1aac..e2b5f3b7f8c 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/GeometryCombineModeValidation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/GeometryCombineModeValidation.cs @@ -30,6 +30,6 @@ public static bool IsGeometryCombineModeValid(object valueObject) (value == GeometryCombineMode.Intersect) || (value == GeometryCombineMode.Xor) || (value == GeometryCombineMode.Exclude); - } + } } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/GradientSpreadMethodValidation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/GradientSpreadMethodValidation.cs index a3276ad475e..7424e2f650a 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/GradientSpreadMethodValidation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/GradientSpreadMethodValidation.cs @@ -29,6 +29,6 @@ public static bool IsGradientSpreadMethodValid(object valueObject) return (value == GradientSpreadMethod.Pad) || (value == GradientSpreadMethod.Reflect) || (value == GradientSpreadMethod.Repeat); - } + } } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/KernelTypeValidation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/KernelTypeValidation.cs index 3362ac50491..0d234b6d35d 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/KernelTypeValidation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/KernelTypeValidation.cs @@ -28,6 +28,6 @@ public static bool IsKernelTypeValid(object valueObject) return (value == KernelType.Gaussian) || (value == KernelType.Box); - } + } } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/PenLineCapValidation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/PenLineCapValidation.cs index 3f356d29fca..432a8eae43f 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/PenLineCapValidation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/PenLineCapValidation.cs @@ -30,6 +30,6 @@ public static bool IsPenLineCapValid(object valueObject) (value == PenLineCap.Square) || (value == PenLineCap.Round) || (value == PenLineCap.Triangle); - } + } } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/PenLineJoinValidation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/PenLineJoinValidation.cs index 9b563741c3c..eb0fc786f62 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/PenLineJoinValidation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/PenLineJoinValidation.cs @@ -29,6 +29,6 @@ public static bool IsPenLineJoinValid(object valueObject) return (value == PenLineJoin.Miter) || (value == PenLineJoin.Bevel) || (value == PenLineJoin.Round); - } + } } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/RenderingBiasValidation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/RenderingBiasValidation.cs index 1f194d204b0..b9d4be2f7c8 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/RenderingBiasValidation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/RenderingBiasValidation.cs @@ -28,6 +28,6 @@ public static bool IsRenderingBiasValid(object valueObject) return (value == RenderingBias.Performance) || (value == RenderingBias.Quality); - } + } } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/RotationValidation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/RotationValidation.cs index 86834641599..e14a6470c9a 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/RotationValidation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/RotationValidation.cs @@ -30,6 +30,6 @@ public static bool IsRotationValid(object valueObject) (value == Rotation.Rotate90) || (value == Rotation.Rotate180) || (value == Rotation.Rotate270); - } + } } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/ShaderRenderModeValidation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/ShaderRenderModeValidation.cs index 2525a824be3..eb20c573cf5 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/ShaderRenderModeValidation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/ShaderRenderModeValidation.cs @@ -29,6 +29,6 @@ public static bool IsShaderRenderModeValid(object valueObject) return (value == ShaderRenderMode.Auto) || (value == ShaderRenderMode.SoftwareOnly) || (value == ShaderRenderMode.HardwareOnly); - } + } } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/StretchValidation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/StretchValidation.cs index d93673054d0..e0318faf2ea 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/StretchValidation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/StretchValidation.cs @@ -30,6 +30,6 @@ public static bool IsStretchValid(object valueObject) (value == Stretch.Fill) || (value == Stretch.Uniform) || (value == Stretch.UniformToFill); - } + } } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/SweepDirectionValidation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/SweepDirectionValidation.cs index e0ed646e160..a72dd699afc 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/SweepDirectionValidation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/SweepDirectionValidation.cs @@ -28,6 +28,6 @@ public static bool IsSweepDirectionValid(object valueObject) return (value == SweepDirection.Counterclockwise) || (value == SweepDirection.Clockwise); - } + } } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/TextDecorationLocationValidation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/TextDecorationLocationValidation.cs index 61f36f447a3..20b151a64dc 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/TextDecorationLocationValidation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/TextDecorationLocationValidation.cs @@ -30,6 +30,6 @@ public static bool IsTextDecorationLocationValid(object valueObject) (value == TextDecorationLocation.OverLine) || (value == TextDecorationLocation.Strikethrough) || (value == TextDecorationLocation.Baseline); - } + } } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/TextDecorationUnitValidation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/TextDecorationUnitValidation.cs index 197a5b1a84f..1f6bbab8af7 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/TextDecorationUnitValidation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/TextDecorationUnitValidation.cs @@ -29,6 +29,6 @@ public static bool IsTextDecorationUnitValid(object valueObject) return (value == TextDecorationUnit.FontRecommended) || (value == TextDecorationUnit.FontRenderingEmSize) || (value == TextDecorationUnit.Pixel); - } + } } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/TextHintingModeValidation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/TextHintingModeValidation.cs index 25e3875ab52..6f1864a6711 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/TextHintingModeValidation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/TextHintingModeValidation.cs @@ -29,6 +29,6 @@ public static bool IsTextHintingModeValid(object valueObject) return (value == TextHintingMode.Auto) || (value == TextHintingMode.Fixed) || (value == TextHintingMode.Animated); - } + } } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/TextRenderingModeValidation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/TextRenderingModeValidation.cs index 356f80b6a8a..1b358f52a9e 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/TextRenderingModeValidation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/TextRenderingModeValidation.cs @@ -30,6 +30,6 @@ public static bool IsTextRenderingModeValid(object valueObject) (value == TextRenderingMode.Aliased) || (value == TextRenderingMode.Grayscale) || (value == TextRenderingMode.ClearType); - } + } } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/TileModeValidation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/TileModeValidation.cs index fe4f561745d..c94d0ed254d 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/TileModeValidation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/TileModeValidation.cs @@ -31,6 +31,6 @@ public static bool IsTileModeValid(object valueObject) (value == TileMode.FlipX) || (value == TileMode.FlipY) || (value == TileMode.FlipXY); - } + } } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/ToleranceTypeValidation.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/ToleranceTypeValidation.cs index 69fccecc491..5381992062a 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/ToleranceTypeValidation.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Shared/MS/Internal/Generated/ToleranceTypeValidation.cs @@ -28,6 +28,6 @@ public static bool IsToleranceTypeValid(object valueObject) return (value == ToleranceType.Absolute) || (value == ToleranceType.Relative); - } + } } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Themes/PresentationFramework.Fluent/Styles/PasswordBox.xaml b/src/wpf/src/Microsoft.DotNet.Wpf/src/Themes/PresentationFramework.Fluent/Styles/PasswordBox.xaml index 505411f54c5..2ba646c6ed4 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Themes/PresentationFramework.Fluent/Styles/PasswordBox.xaml +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Themes/PresentationFramework.Fluent/Styles/PasswordBox.xaml @@ -88,7 +88,7 @@ - + diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Themes/PresentationFramework.Fluent/Styles/RichTextBox.xaml b/src/wpf/src/Microsoft.DotNet.Wpf/src/Themes/PresentationFramework.Fluent/Styles/RichTextBox.xaml index 62465d0f132..12028d39af7 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Themes/PresentationFramework.Fluent/Styles/RichTextBox.xaml +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Themes/PresentationFramework.Fluent/Styles/RichTextBox.xaml @@ -24,7 +24,7 @@ - + @@ -70,7 +70,7 @@ - + diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Themes/PresentationFramework.Fluent/Styles/TextBox.xaml b/src/wpf/src/Microsoft.DotNet.Wpf/src/Themes/PresentationFramework.Fluent/Styles/TextBox.xaml index 136378c560d..d3b55004731 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Themes/PresentationFramework.Fluent/Styles/TextBox.xaml +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Themes/PresentationFramework.Fluent/Styles/TextBox.xaml @@ -39,7 +39,7 @@ - + @@ -85,7 +85,7 @@ - + @@ -205,13 +205,13 @@ - + - + @@ -240,7 +240,7 @@ - + diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Themes/PresentationFramework.Fluent/Themes/Fluent.Dark.xaml b/src/wpf/src/Microsoft.DotNet.Wpf/src/Themes/PresentationFramework.Fluent/Themes/Fluent.Dark.xaml index 9355aa6ae20..977ce822ffc 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Themes/PresentationFramework.Fluent/Themes/Fluent.Dark.xaml +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Themes/PresentationFramework.Fluent/Themes/Fluent.Dark.xaml @@ -3771,7 +3771,7 @@ - + @@ -4088,7 +4088,7 @@ - + @@ -4117,7 +4117,7 @@ - + @@ -4822,7 +4822,7 @@ - + @@ -4851,7 +4851,7 @@ - + @@ -4929,13 +4929,13 @@ - + - + @@ -4963,7 +4963,7 @@ - + diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Themes/PresentationFramework.Fluent/Themes/Fluent.HC.xaml b/src/wpf/src/Microsoft.DotNet.Wpf/src/Themes/PresentationFramework.Fluent/Themes/Fluent.HC.xaml index 634678e5435..046c3747bfb 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Themes/PresentationFramework.Fluent/Themes/Fluent.HC.xaml +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Themes/PresentationFramework.Fluent/Themes/Fluent.HC.xaml @@ -3684,7 +3684,7 @@ - + @@ -4001,7 +4001,7 @@ - + @@ -4030,7 +4030,7 @@ - + @@ -4735,7 +4735,7 @@ - + @@ -4764,7 +4764,7 @@ - + @@ -4842,13 +4842,13 @@ - + - + @@ -4876,7 +4876,7 @@ - + diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/Themes/PresentationFramework.Fluent/Themes/Fluent.Light.xaml b/src/wpf/src/Microsoft.DotNet.Wpf/src/Themes/PresentationFramework.Fluent/Themes/Fluent.Light.xaml index ce8b914cf84..90e29d57048 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/Themes/PresentationFramework.Fluent/Themes/Fluent.Light.xaml +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/Themes/PresentationFramework.Fluent/Themes/Fluent.Light.xaml @@ -3780,7 +3780,7 @@ - + @@ -4097,7 +4097,7 @@ - + @@ -4126,7 +4126,7 @@ - + @@ -4831,7 +4831,7 @@ - + @@ -4860,7 +4860,7 @@ - + @@ -4938,13 +4938,13 @@ - + - + @@ -4972,7 +4972,7 @@ - + diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Windows/Generated/Int32Rect.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Windows/Generated/Int32Rect.cs index 1855f9172f9..8fddea8419e 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Windows/Generated/Int32Rect.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Windows/Generated/Int32Rect.cs @@ -44,7 +44,7 @@ public partial struct Int32Rect : IFormattable /// /// The first Int32Rect to compare /// The second Int32Rect to compare - public static bool operator == (Int32Rect int32Rect1, Int32Rect int32Rect2) + public static bool operator ==(Int32Rect int32Rect1, Int32Rect int32Rect2) { return int32Rect1.X == int32Rect2.X && int32Rect1.Y == int32Rect2.Y && @@ -63,7 +63,7 @@ public partial struct Int32Rect : IFormattable /// /// The first Int32Rect to compare /// The second Int32Rect to compare - public static bool operator != (Int32Rect int32Rect1, Int32Rect int32Rect2) + public static bool operator !=(Int32Rect int32Rect1, Int32Rect int32Rect2) { return !(int32Rect1 == int32Rect2); } @@ -79,7 +79,7 @@ public partial struct Int32Rect : IFormattable /// /// The first Int32Rect to compare /// The second Int32Rect to compare - public static bool Equals (Int32Rect int32Rect1, Int32Rect int32Rect2) + public static bool Equals(Int32Rect int32Rect1, Int32Rect int32Rect2) { if (int32Rect1.IsEmpty) { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Windows/Generated/Point.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Windows/Generated/Point.cs index 9fe73b62a6f..bc7256f5c48 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Windows/Generated/Point.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Windows/Generated/Point.cs @@ -44,7 +44,7 @@ public partial struct Point : IFormattable /// /// The first Point to compare /// The second Point to compare - public static bool operator == (Point point1, Point point2) + public static bool operator ==(Point point1, Point point2) { return point1.X == point2.X && point1.Y == point2.Y; @@ -61,7 +61,7 @@ public partial struct Point : IFormattable /// /// The first Point to compare /// The second Point to compare - public static bool operator != (Point point1, Point point2) + public static bool operator !=(Point point1, Point point2) { return !(point1 == point2); } @@ -77,7 +77,7 @@ public partial struct Point : IFormattable /// /// The first Point to compare /// The second Point to compare - public static bool Equals (Point point1, Point point2) + public static bool Equals(Point point1, Point point2) { return point1.X.Equals(point2.X) && point1.Y.Equals(point2.Y); diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Windows/Generated/Rect.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Windows/Generated/Rect.cs index 69e2c18dc1d..019bec08f2c 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Windows/Generated/Rect.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Windows/Generated/Rect.cs @@ -44,7 +44,7 @@ public partial struct Rect : IFormattable /// /// The first Rect to compare /// The second Rect to compare - public static bool operator == (Rect rect1, Rect rect2) + public static bool operator ==(Rect rect1, Rect rect2) { return rect1.X == rect2.X && rect1.Y == rect2.Y && @@ -63,7 +63,7 @@ public partial struct Rect : IFormattable /// /// The first Rect to compare /// The second Rect to compare - public static bool operator != (Rect rect1, Rect rect2) + public static bool operator !=(Rect rect1, Rect rect2) { return !(rect1 == rect2); } @@ -79,7 +79,7 @@ public partial struct Rect : IFormattable /// /// The first Rect to compare /// The second Rect to compare - public static bool Equals (Rect rect1, Rect rect2) + public static bool Equals(Rect rect1, Rect rect2) { if (rect1.IsEmpty) { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Windows/Generated/Size.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Windows/Generated/Size.cs index 01fc36c0936..3f7ed59bbb5 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Windows/Generated/Size.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Windows/Generated/Size.cs @@ -44,7 +44,7 @@ public partial struct Size : IFormattable /// /// The first Size to compare /// The second Size to compare - public static bool operator == (Size size1, Size size2) + public static bool operator ==(Size size1, Size size2) { return size1.Width == size2.Width && size1.Height == size2.Height; @@ -61,7 +61,7 @@ public partial struct Size : IFormattable /// /// The first Size to compare /// The second Size to compare - public static bool operator != (Size size1, Size size2) + public static bool operator !=(Size size1, Size size2) { return !(size1 == size2); } @@ -77,7 +77,7 @@ public partial struct Size : IFormattable /// /// The first Size to compare /// The second Size to compare - public static bool Equals (Size size1, Size size2) + public static bool Equals(Size size1, Size size2) { if (size1.IsEmpty) { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Windows/Generated/Vector.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Windows/Generated/Vector.cs index 15452bf480d..9a6b4a2e102 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Windows/Generated/Vector.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Windows/Generated/Vector.cs @@ -44,7 +44,7 @@ public partial struct Vector : IFormattable /// /// The first Vector to compare /// The second Vector to compare - public static bool operator == (Vector vector1, Vector vector2) + public static bool operator ==(Vector vector1, Vector vector2) { return vector1.X == vector2.X && vector1.Y == vector2.Y; @@ -61,7 +61,7 @@ public partial struct Vector : IFormattable /// /// The first Vector to compare /// The second Vector to compare - public static bool operator != (Vector vector1, Vector vector2) + public static bool operator !=(Vector vector1, Vector vector2) { return !(vector1 == vector2); } @@ -77,7 +77,7 @@ public partial struct Vector : IFormattable /// /// The first Vector to compare /// The second Vector to compare - public static bool Equals (Vector vector1, Vector vector2) + public static bool Equals(Vector vector1, Vector vector2) { return vector1.X.Equals(vector2.X) && vector1.Y.Equals(vector2.Y); diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Windows/Media/Generated/Matrix.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Windows/Media/Generated/Matrix.cs index 5d1259f6510..33e20a457b7 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Windows/Media/Generated/Matrix.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/WindowsBase/System/Windows/Media/Generated/Matrix.cs @@ -44,7 +44,7 @@ public partial struct Matrix : IFormattable /// /// The first Matrix to compare /// The second Matrix to compare - public static bool operator == (Matrix matrix1, Matrix matrix2) + public static bool operator ==(Matrix matrix1, Matrix matrix2) { if (matrix1.IsDistinguishedIdentity || matrix2.IsDistinguishedIdentity) { @@ -72,7 +72,7 @@ public partial struct Matrix : IFormattable /// /// The first Matrix to compare /// The second Matrix to compare - public static bool operator != (Matrix matrix1, Matrix matrix2) + public static bool operator !=(Matrix matrix1, Matrix matrix2) { return !(matrix1 == matrix2); } @@ -88,7 +88,7 @@ public partial struct Matrix : IFormattable /// /// The first Matrix to compare /// The second Matrix to compare - public static bool Equals (Matrix matrix1, Matrix matrix2) + public static bool Equals(Matrix matrix1, Matrix matrix2) { if (matrix1.IsDistinguishedIdentity || matrix2.IsDistinguishedIdentity) { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/ResourceModel/ResourceModel.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/ResourceModel/ResourceModel.cs index e8cf9e355cd..5f7242f957f 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/ResourceModel/ResourceModel.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/ResourceModel/ResourceModel.cs @@ -1308,7 +1308,7 @@ private void CreateGenerationList(XmlDocument document) bool fNoGeneration = true; - for (int i=0; i 0) + if (schemaFile != null && schemaFile.Length > 0) { XmlValidatingReader validatingReader = new XmlValidatingReader(reader); diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/AnimationBaseTemplate.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/AnimationBaseTemplate.cs index 870e7cd1e32..7ae38a24dbe 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/AnimationBaseTemplate.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/AnimationBaseTemplate.cs @@ -265,7 +265,7 @@ private string WriteIAnimationGetCurrentValueBody(AnimationBaseTemplateInstance [[inline]] return GetCurrentValue(([[instance.TypeName]])defaultOriginValue, ([[instance.TypeName]])defaultDestinationValue, animationClock); [[/inline]]; - } + } } // diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/AnimationTemplate.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/AnimationTemplate.cs index 0ae611add9b..3b1ad70e6a3 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/AnimationTemplate.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/AnimationTemplate.cs @@ -337,7 +337,7 @@ protected override [[instance.TypeName]] GetCurrentValueCore([[instance.TypeName bool validateOrigin = false; bool validateDestination = false; - switch(_animationType) + switch (_animationType) { case AnimationType.Automatic: diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/AnimationUsingKeyFramesTemplate.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/AnimationUsingKeyFramesTemplate.cs index 243bad16271..1957fdf34d4 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/AnimationUsingKeyFramesTemplate.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/AnimationUsingKeyFramesTemplate.cs @@ -190,7 +190,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - [[instance.TypeName]]AnimationUsingKeyFrames sourceAnimation = ([[instance.TypeName]]AnimationUsingKeyFrames) sourceFreezable; + [[instance.TypeName]]AnimationUsingKeyFrames sourceAnimation = ([[instance.TypeName]]AnimationUsingKeyFrames)sourceFreezable; base.CloneCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -201,7 +201,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - [[instance.TypeName]]AnimationUsingKeyFrames sourceAnimation = ([[instance.TypeName]]AnimationUsingKeyFrames) sourceFreezable; + [[instance.TypeName]]AnimationUsingKeyFrames sourceAnimation = ([[instance.TypeName]]AnimationUsingKeyFrames)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -212,7 +212,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable source) { - [[instance.TypeName]]AnimationUsingKeyFrames sourceAnimation = ([[instance.TypeName]]AnimationUsingKeyFrames) source; + [[instance.TypeName]]AnimationUsingKeyFrames sourceAnimation = ([[instance.TypeName]]AnimationUsingKeyFrames)source; base.GetAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ false); @@ -223,7 +223,7 @@ protected override void GetAsFrozenCore(Freezable source) /// protected override void GetCurrentValueAsFrozenCore(Freezable source) { - [[instance.TypeName]]AnimationUsingKeyFrames sourceAnimation = ([[instance.TypeName]]AnimationUsingKeyFrames) source; + [[instance.TypeName]]AnimationUsingKeyFrames sourceAnimation = ([[instance.TypeName]]AnimationUsingKeyFrames)source; base.GetCurrentValueAsFrozenCore(source); CopyCommon(sourceAnimation, /* isCurrentValueClone = */ true); @@ -881,11 +881,11 @@ private void ResolveKeyTimes() || type == KeyTimeType.TimeSpan) { break; - } + } else if (type == KeyTimeType.Paced) { hasPacedKeyTimes = true; - } + } } Debug.Assert(index < keyFrameCount, @@ -1051,7 +1051,7 @@ private void ResolvePacedKeyTimes() { index++; } - } + } while (index < maxKeyFrameIndex); } @@ -1087,7 +1087,7 @@ private string WriteFromValueAssignment(AnimationUsingKeyFramesTemplateInstance else { return "fromValue = defaultOriginValue;"; - } + } } private List Instances = new List(); diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/CommandStructure.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/CommandStructure.cs index 02a158c54bd..c79772e4e54 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/CommandStructure.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/CommandStructure.cs @@ -316,7 +316,7 @@ internal struct [[commandName]] }; [[/inline]] ); - } + } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/DuceResource.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/DuceResource.cs index 3695f8c04b6..94ba7897df4 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/DuceResource.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/DuceResource.cs @@ -809,7 +809,7 @@ McgResource dataType [[/inline]] ); - } + } } else { diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/Elements.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/Elements.cs index 33c9b8fb2c9..a8710540a1c 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/Elements.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/Elements.cs @@ -385,7 +385,7 @@ public void AddHandler( EnsureEventHandlersStore(); EventHandlersStore.AddRoutedEventHandler(routedEvent, handler, handledEventsToo); - OnAddHandler (routedEvent, handler); + OnAddHandler(routedEvent, handler); } /// @@ -442,7 +442,7 @@ public void RemoveHandler(RoutedEvent routedEvent, Delegate handler) { store.RemoveRoutedEventHandler(routedEvent, handler); - OnRemoveHandler (routedEvent, handler); + OnRemoveHandler(routedEvent, handler); if (store.Count == 0) { @@ -499,7 +499,7 @@ public void AddToEventRoute(EventRoute route, RoutedEventArgs e) // Add all class listeners for this [[element.Name]] while (classListeners != null) { - for(int i = 0; i < classListeners.Handlers.Length; i++) + for (int i = 0; i < classListeners.Handlers.Length; i++) { route.Add(this, classListeners.Handlers[i].Handler, classListeners.Handlers[i].InvokeHandledEventsToo); } @@ -548,7 +548,7 @@ internal EventHandlersStore EventHandlersStore { get { - if(!ReadFlag(CoreFlags.ExistsEventHandlersStore)) + if (!ReadFlag(CoreFlags.ExistsEventHandlersStore)) { return null; } @@ -753,7 +753,7 @@ private string SkipIfHandled(string body) { return [[inline]] - if(!e.Handled) + if (!e.Handled) { [[body]] } @@ -955,7 +955,7 @@ private string WritePropertyChangedEvent(CGElement element, CGProperty property) [[inline]] private static void [[property.PropertyName]]_Changed(DependencyObject d, DependencyPropertyChangedEventArgs e) { - (([[element.Name]]) d).Raise[[property.PropertyName]]Changed(e); + (([[element.Name]])d).Raise[[property.PropertyName]]Changed(e); } [[/inline]]); } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/FrameworkElementTemplate.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/FrameworkElementTemplate.cs index 4d8d4efce66..f82ffdf454a 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/FrameworkElementTemplate.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/FrameworkElementTemplate.cs @@ -421,7 +421,7 @@ internal virtual void OnNewParent(DependencyObject newParent) [[conditional(instance.ClassName == "FrameworkContentElement")]] // Synchronize ForceInherit properties - if(_parent != null) + if (_parent != null) { UIElement.SynchronizeForceInheritProperties(null, this, null, _parent); } @@ -432,11 +432,11 @@ internal virtual void OnNewParent(DependencyObject newParent) [[/conditional]] [[conditional(instance.ClassName == "FrameworkElement")]] // Synchronize ForceInherit properties - if(_parent != null && _parent is ContentElement) + if (_parent != null && _parent is ContentElement) { UIElement.SynchronizeForceInheritProperties(this, null, null, _parent); } - else if(oldParent is ContentElement) + else if (oldParent is ContentElement) { UIElement.SynchronizeForceInheritProperties(this, null, null, oldParent); } @@ -637,21 +637,21 @@ internal bool ThisHasLoadedChangeEventHandler return true; } } - if(null != Style && Style.HasLoadedChangeHandler) + if (null != Style && Style.HasLoadedChangeHandler) { return true; } - if(null != ThemeStyle && ThemeStyle.HasLoadedChangeHandler) + if (null != ThemeStyle && ThemeStyle.HasLoadedChangeHandler) { return true; } [[conditional(instance.ClassName == "FrameworkElement")]] - if(null != TemplateInternal && TemplateInternal.HasLoadedChangeHandler) + if (null != TemplateInternal && TemplateInternal.HasLoadedChangeHandler) { return true; } [[/conditional]] - if(HasFefLoadedChangeHandler) + if (HasFefLoadedChangeHandler) { return true; } @@ -663,17 +663,17 @@ internal bool HasFefLoadedChangeHandler { get { - if(null == TemplatedParent) + if (null == TemplatedParent) { return false; } FrameworkElementFactory fefRoot = BroadcastEventHelper.GetFEFTreeRoot(TemplatedParent); - if(null == fefRoot) + if (null == fefRoot) { return false; } FrameworkElementFactory fef = StyleHelper.FindFEF(fefRoot, TemplateChildIndex); - if(null == fef) + if (null == fef) { return false; } @@ -1254,13 +1254,13 @@ internal FrugalObjectList InheritableProperties // Says if there is a loaded event pending internal object[] LoadedPending { - get { return (object[]) GetValue(LoadedPendingProperty); } + get { return (object[])GetValue(LoadedPendingProperty); } } // Says if there is an unloaded event pending internal object[] UnloadedPending { - get { return (object[]) GetValue(UnloadedPendingProperty); } + get { return (object[])GetValue(UnloadedPendingProperty); } } // Indicates if this instance has multiple inheritance contexts diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/IAnimatableHelper.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/IAnimatableHelper.cs index 794b06c5756..72be1c7f6a3 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/IAnimatableHelper.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/IAnimatableHelper.cs @@ -92,7 +92,7 @@ public void ApplyAnimationClock( if (IsSealed) { throw new InvalidOperationException(SR.Format(SR.IAnimatable_CantAnimateSealedDO, dp, this.GetType())); - } + } AnimationStorage.ApplyAnimationClock(this, dp, clock, handoffBehavior); } @@ -143,7 +143,7 @@ public void BeginAnimation(DependencyProperty dp, AnimationTimeline animation, H throw new ArgumentException(SR.Format(SR.Animation_DependencyPropertyIsNotAnimatable, dp.Name, this.GetType()), nameof(dp)); } - if ( animation != null + if (animation != null && !AnimationStorage.IsAnimationValid(dp, animation)) { throw new ArgumentException(SR.Format(SR.Animation_AnimationTimelineTypeMismatch, animation.GetType(), dp.Name, dp.PropertyType), nameof(animation)); @@ -157,7 +157,7 @@ public void BeginAnimation(DependencyProperty dp, AnimationTimeline animation, H if (IsSealed) { throw new InvalidOperationException(SR.Format(SR.IAnimatable_CantAnimateSealedDO, dp, this.GetType())); - } + } AnimationStorage.BeginAnimation(this, dp, animation, handoffBehavior); } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/KeyFrameCollectionTemplate.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/KeyFrameCollectionTemplate.cs index a48c91356cb..489f14793b3 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/KeyFrameCollectionTemplate.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/KeyFrameCollectionTemplate.cs @@ -150,7 +150,7 @@ protected override Freezable CreateInstanceCore() /// protected override void CloneCore(Freezable sourceFreezable) { - [[instance.TypeName]]KeyFrameCollection sourceCollection = ([[instance.TypeName]]KeyFrameCollection) sourceFreezable; + [[instance.TypeName]]KeyFrameCollection sourceCollection = ([[instance.TypeName]]KeyFrameCollection)sourceFreezable; base.CloneCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -171,7 +171,7 @@ protected override void CloneCore(Freezable sourceFreezable) /// protected override void CloneCurrentValueCore(Freezable sourceFreezable) { - [[instance.TypeName]]KeyFrameCollection sourceCollection = ([[instance.TypeName]]KeyFrameCollection) sourceFreezable; + [[instance.TypeName]]KeyFrameCollection sourceCollection = ([[instance.TypeName]]KeyFrameCollection)sourceFreezable; base.CloneCurrentValueCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -192,7 +192,7 @@ protected override void CloneCurrentValueCore(Freezable sourceFreezable) /// protected override void GetAsFrozenCore(Freezable sourceFreezable) { - [[instance.TypeName]]KeyFrameCollection sourceCollection = ([[instance.TypeName]]KeyFrameCollection) sourceFreezable; + [[instance.TypeName]]KeyFrameCollection sourceCollection = ([[instance.TypeName]]KeyFrameCollection)sourceFreezable; base.GetAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; @@ -213,7 +213,7 @@ protected override void GetAsFrozenCore(Freezable sourceFreezable) /// protected override void GetCurrentValueAsFrozenCore(Freezable sourceFreezable) { - [[instance.TypeName]]KeyFrameCollection sourceCollection = ([[instance.TypeName]]KeyFrameCollection) sourceFreezable; + [[instance.TypeName]]KeyFrameCollection sourceCollection = ([[instance.TypeName]]KeyFrameCollection)sourceFreezable; base.GetCurrentValueAsFrozenCore(sourceFreezable); int count = sourceCollection._keyFrames.Count; diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/KeyFrameTemplate.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/KeyFrameTemplate.cs index d8e71ff1f57..ab9dbc04e36 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/KeyFrameTemplate.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/KeyFrameTemplate.cs @@ -221,7 +221,7 @@ protected abstract [[instance.TypeName]] InterpolateValueCore( double keyFrameProgress); #endregion - } + } [[/inline]] ); diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/ManagedEnum.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/ManagedEnum.cs index 8c060a33431..430c4b0e082 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/ManagedEnum.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/ManagedEnum.cs @@ -91,7 +91,7 @@ public override void Go() ); first = false; - } + } // @@ -102,7 +102,7 @@ public override void Go() WriteEnumValidationFile(enumType, checkEnumValues); } - } + } /// /// Writes an enumerated type's header block and namespace block @@ -174,7 +174,7 @@ void WriteEnumDefinitionFile(McgEnum enumType, StringCodeSink enumValuesCS) public enum [[enumType.ManagedName]] { [[enumValuesCS]] - } + } [[/inline]] ); @@ -184,8 +184,8 @@ public enum [[enumType.ManagedName]] } [[/inline]] ); - } - } + } + } /// /// This method writes the enum validation file that contains CheckIfValid @@ -229,13 +229,13 @@ public static bool Is[[enumType.ManagedName]]Valid(object valueObject) [[enumType.ManagedName]] value = ([[enumType.ManagedName]]) valueObject; return [[checkEnumValues]]; - } + } } } [[/inline]] ); } - } + } #endregion Public Methods } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/ManagedResource.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/ManagedResource.cs index 63ceae6de12..151e56a84ac 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/ManagedResource.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/ManagedResource.cs @@ -365,7 +365,7 @@ private string WriteCloneCoreMethodsHelper_CloneMethod(McgResource resource, str /// protected override void [[method]]Core([[argType]] source) { - [[sourceType]] [[source]] = ([[sourceType]]) source; + [[sourceType]] [[source]] = ([[sourceType]])source; [[body]] } @@ -839,7 +839,7 @@ private static void [[field.PropertyName]]PropertyChanged(DependencyObject d, De if (NeedsDucePropertyUpdate(resource, field)) { - if( (resource.Name == "VisualBrush" || resource.Name == "BitmapCacheBrush") + if ( (resource.Name == "VisualBrush" || resource.Name == "BitmapCacheBrush") && field.Type.ManagedName == "Visual") { cs.Write( @@ -1391,7 +1391,7 @@ private string WriteDPProperty(McgResource resource, McgField field) { getValue = [[inline]] - return ([[field.Type.ManagedName]]) GetValue([[field.DPPropertyName]]); + return ([[field.Type.ManagedName]])GetValue([[field.DPPropertyName]]); [[/inline]]; } else @@ -1591,7 +1591,7 @@ private string GetMarshalType(McgType type) /// /// WriteCollectionMarshal - this method produces a string in the form of: /// - /// for(int i = 0; i < pointCollectionCount; i++) + /// for (int i = 0; i < pointCollectionCount; i++) /// { /// *((Point*)(pBuffer + cbPos)) = pointCollection.Internal_GetItem(i); /// cbPos += sizeof(Point); @@ -1657,7 +1657,7 @@ private string WriteCollectionMarshal(McgType collectionType, return [[inline]] // Copy this collection's elements (or their handles) to reserved data - for(int i = 0; i < [[countVariable]]; i++) + for (int i = 0; i < [[countVariable]]; i++) { [[GetMarshalType(collectionType)]] resource = [[marshaledCollectionElement]]; channel.AppendCommandData( @@ -2176,7 +2176,7 @@ DUCE.ResourceHandle DUCE.IResource.AddRefOnChannel(DUCE.Channel channel) { addRefCollection = [[inline]] - for (int i=0; i<_collection.Count; i++) + for (int i = 0; i < _collection.Count; i++) { ((DUCE.IResource) _collection[i]).AddRefOnChannel(channel); } @@ -2319,7 +2319,7 @@ void DUCE.IResource.ReleaseOnChannel(DUCE.Channel channel) { releaseCollection = [[inline]] - for (int i=0; i<_collection.Count; i++) + for (int i = 0; i < _collection.Count; i++) { ((DUCE.IResource) _collection[i]).ReleaseOnChannel(channel); } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/ManagedStruct.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/ManagedStruct.cs index 0fb72de376e..f3c24e831af 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/ManagedStruct.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/ManagedStruct.cs @@ -187,7 +187,7 @@ private void WriteEqualsObject(McgResource resource, /// /// The first [[resource.Name]] to compare /// The second [[resource.Name]] to compare - public static bool Equals ([[resource.Name]] [[lowerName]]1, [[resource.Name]] [[lowerName]]2) + public static bool Equals([[resource.Name]] [[lowerName]]1, [[resource.Name]] [[lowerName]]2) { [[equalsBody]] } @@ -361,7 +361,7 @@ internal[[modifiers]] string ConvertToString(string format, IFormatProvider prov // Helper to get the numeric list separator for a given culture. // char separator = MS.Internal.TokenizerHelper.GetNumericListSeparator(provider); - for (int i=0; i<_collection.Count; i++) + for (int i = 0; i < _collection.Count; i++) { str.AppendFormat( provider, @@ -647,7 +647,7 @@ private void WriteValueMethods(McgResource resource, StringCodeSink cs) /// /// The first [[resource.Name]] to compare /// The second [[resource.Name]] to compare - public static bool operator == ([[resource.Name]] [[lowerName]]1, [[resource.Name]] [[lowerName]]2) + public static bool operator ==([[resource.Name]] [[lowerName]]1, [[resource.Name]] [[lowerName]]2) { [[equalsBody]] } @@ -663,7 +663,7 @@ private void WriteValueMethods(McgResource resource, StringCodeSink cs) /// /// The first [[resource.Name]] to compare /// The second [[resource.Name]] to compare - public static bool operator != ([[resource.Name]] [[lowerName]]1, [[resource.Name]] [[lowerName]]2) + public static bool operator !=([[resource.Name]] [[lowerName]]1, [[resource.Name]] [[lowerName]]2) { return !([[lowerName]]1 == [[lowerName]]2); } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/PolySegmentTemplate.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/PolySegmentTemplate.cs index 46bb24791f7..5f015840f4e 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/PolySegmentTemplate.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/generators/PolySegmentTemplate.cs @@ -143,7 +143,7 @@ internal override void AddToFigure( Point pt = new Point(); int count = points.Count; - for (int i=0; ih" + field.PropertyName + ")"; } @@ -1146,7 +1146,7 @@ public string WriteDrawingContextWalkInstructions(RenderDataInstructionData rdid foreach(McgField field in instruction.AllPublicFields) { // Field is a resource that can not be passed by value. - if(!field.Type.IsValueType) + if (!field.Type.IsValueType) { param = "(" + field.Type.Name + ")DependentLookup(data->h" + field.PropertyName + ")"; @@ -1178,7 +1178,7 @@ public string WriteDrawingContextWalkInstructions(RenderDataInstructionData rdid // of the animated properties. // bool hasAdvancedFields = ResourceModel.Filter(instruction.AllPublicFields, ResourceModel.IsAdvancedField).Length > 0; - if(field.IsAnimated && hasAdvancedFields) + if (field.IsAnimated && hasAdvancedFields) { animatedParamList.Append("null"); } @@ -1670,7 +1670,7 @@ private string WriteUnmanagedGetHandle(McgRenderDataInstruction renderdataInstru } *(reinterpret_cast(&pData->coordinate)) = m_rgpGuidelineKits.GetCount() - 1; - } + } [[/inline]] ); } @@ -1887,7 +1887,7 @@ private static string WriteInitialChecks(McgRenderDataInstruction instruction, b } // If in-parameters can cause the operation to become a no-op, write a check // that no-ops the operation when the no-op conditions are met. - else if(instruction.NoOpGroups != null && + else if (instruction.NoOpGroups != null && instruction.NoOpGroups.Length > 0) { returnString = WriteNoOpCheck(instruction, isManaged, indent); @@ -2404,7 +2404,7 @@ private bool NeedToMarshallHandles(McgField[] fields, bool animated) foreach(McgField field in fields) { // Field is a resource that can not be passed by value or an animation - if(!field.Type.IsValueType || (animated && field.IsAnimated)) + if (!field.Type.IsValueType || (animated && field.IsAnimated)) { return true; } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/helpers/CodeGenHelpers.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/helpers/CodeGenHelpers.cs index e89e262be3c..af3f2852ade 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/helpers/CodeGenHelpers.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/helpers/CodeGenHelpers.cs @@ -247,7 +247,7 @@ bool kernelAccessibleStruct McgResource resourceType = type as McgResource; // If it's an McgResource, we have to handle reference types and collections - if(resourceType != null) + if (resourceType != null) { // Currently, collections are accounted for by storing just their size inline if (resourceType.IsCollection) @@ -391,7 +391,7 @@ internal static void AppendParameter( else if ((parameterType & ParameterType.RenderDataCallParamList) != 0) { // Field is a resource that can not be passed by value. - if(resourceType != null && !resourceType.IsValueType) + if (resourceType != null && !resourceType.IsValueType) { paramString = "_renderData.AddDependentResource(" + fieldName + ")"; } @@ -434,9 +434,9 @@ internal static void AppendParameter( if (isAnimated) { animateParamString = DuceHandle.ManagedTypeName + " h" + GeneratorMethods.FirstCap(name) + "Animations"; - } + } } - } + } else if ((parameterType & ParameterType.UnmanagedParamList) != 0) { if ((resourceType != null) && !resourceType.IsValueType) @@ -451,7 +451,7 @@ internal static void AppendParameter( if (isAnimated) { animateParamString = DuceHandle.UnmanagedTypeName + " h" + GeneratorMethods.FirstCap(name) + "Animations"; - } + } } } else @@ -470,7 +470,7 @@ internal static void AppendParameter( if (isAnimated) { animateParamString = "h" + GeneratorMethods.FirstCap(name) + "Animations"; - } + } } } @@ -1101,7 +1101,7 @@ internal static PaddedStructData SortStructForAlignment( Array flags = Enum.GetValues(typeof(T)); List values = new List(); - for(int i = 0; i < flags.Length; i++) + for (int i = 0; i < flags.Length; i++) { T flag = (T) flags.GetValue(i); @@ -1172,7 +1172,7 @@ public IEnumerable ManagedPackingFields if (this.packPadding > 0) { yield return "[FieldOffset(" + (this.packedStructSize - 1) + ")] private byte " + GetNextName("BYTEPacking"); - } + } } } diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/helpers/CollectionHelper.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/helpers/CollectionHelper.cs index d024709b096..f5e43b7bea8 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/helpers/CollectionHelper.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/codegen/mcg/helpers/CollectionHelper.cs @@ -605,7 +605,7 @@ public static string CloneCollection(McgResource resource, string method, string if (resource.CollectionType.IsFreezable) { - value = [[inline]]([[resource.CollectionType.Name]]) [[source]]._collection[i].[[method]]()[[/inline]]; + value = [[inline]]([[resource.CollectionType.Name]])[[source]]._collection[i].[[method]]()[[/inline]]; } else { @@ -845,10 +845,10 @@ internal override void OnInheritanceContextChangedCore(EventArgs args) { base.OnInheritanceContextChangedCore(args); - for (int i=0; i(&pData->coordinate)) = m_rgpGuidelineKits.GetCount() - 1; - } + } stackDepth++; break; diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/core/uce/generated_process_message.inl b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/core/uce/generated_process_message.inl index 8ea2f7e60d3..81f7f7c16dc 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/core/uce/generated_process_message.inl +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/WpfGfx/core/uce/generated_process_message.inl @@ -10,7 +10,7 @@ // File name: generated_process_message.inl //--------------------------------------------------------------------------- -switch(nCmdType) +switch (nCmdType) { case MilCmdTransportSyncFlush: { From 8780c420cd0e84ce11b56e32121b8cb8bd954840 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 12 May 2025 19:41:33 +0200 Subject: [PATCH 10/32] [main] Source code updates from dotnet/templating (#509) Co-authored-by: dotnet-maestro[bot] --- prereqs/git-info/templating.props | 6 +++--- src/source-manifest.json | 6 +++--- src/templating/eng/Version.Details.xml | 10 +++++----- src/templating/eng/Versions.props | 2 +- .../common/core-templates/steps/source-build.yml | 16 +++++----------- src/templating/eng/common/tools.sh | 6 +++++- src/templating/global.json | 2 +- 7 files changed, 23 insertions(+), 25 deletions(-) diff --git a/prereqs/git-info/templating.props b/prereqs/git-info/templating.props index 6ff99a11368..b4f3cf50287 100644 --- a/prereqs/git-info/templating.props +++ b/prereqs/git-info/templating.props @@ -1,8 +1,8 @@  - fd2db2bebc77711b3844faefb015af6a4ca59c3c - 20250507.7 - 10.0.100-preview.5.25257.7 + db6256f5f72d0b954273e94f616f1bf0ba9c443c + 20250511.1 + 10.0.100-preview.5.25261.1 \ No newline at end of file diff --git a/src/source-manifest.json b/src/source-manifest.json index eec3110d8c0..88da7d02a78 100644 --- a/src/source-manifest.json +++ b/src/source-manifest.json @@ -155,11 +155,11 @@ "commitSha": "6565fef44c1528244224690207a3f0c2a4b9295a" }, { - "packageVersion": "10.0.100-preview.5.25257.7", - "barId": 267322, + "packageVersion": "10.0.100-preview.5.25261.1", + "barId": 267808, "path": "templating", "remoteUri": "https://github.com/dotnet/templating", - "commitSha": "fd2db2bebc77711b3844faefb015af6a4ca59c3c" + "commitSha": "db6256f5f72d0b954273e94f616f1bf0ba9c443c" }, { "packageVersion": "17.15.0-preview-25224-01", diff --git a/src/templating/eng/Version.Details.xml b/src/templating/eng/Version.Details.xml index 2e9f60dc2a7..48042ea7afe 100644 --- a/src/templating/eng/Version.Details.xml +++ b/src/templating/eng/Version.Details.xml @@ -1,16 +1,16 @@ - + - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb diff --git a/src/templating/eng/Versions.props b/src/templating/eng/Versions.props index e4f2fb68a94..3da55f622cf 100644 --- a/src/templating/eng/Versions.props +++ b/src/templating/eng/Versions.props @@ -15,7 +15,7 @@ 9.0.3 - 2.0.0-beta5.25257.101 + 2.0.0-beta5.25260.104 9.0.3 9.0.3 9.0.3 diff --git a/src/templating/eng/common/core-templates/steps/source-build.yml b/src/templating/eng/common/core-templates/steps/source-build.yml index 325231215d5..f2a0f347fdd 100644 --- a/src/templating/eng/common/core-templates/steps/source-build.yml +++ b/src/templating/eng/common/core-templates/steps/source-build.yml @@ -38,14 +38,9 @@ steps: targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}' fi - runtimeOsArgs= - if [ '${{ parameters.platform.runtimeOS }}' != '' ]; then - runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}' - fi - - baseOsArgs= - if [ '${{ parameters.platform.baseOS }}' != '' ]; then - baseOsArgs='/p:BaseOS=${{ parameters.platform.baseOS }}' + baseRidArgs= + if [ '${{ parameters.platform.baseRID }}' != '' ]; then + baseRidArgs='/p:BaseRid=${{ parameters.platform.baseRID }}' fi portableBuildArgs= @@ -59,8 +54,7 @@ steps: ${{ parameters.platform.buildArguments }} \ $internalRuntimeDownloadArgs \ $targetRidArgs \ - $runtimeOsArgs \ - $baseOsArgs \ + $baseRidArgs \ $portableBuildArgs \ /p:DotNetBuildSourceOnly=true \ /p:DotNetBuildRepo=true \ @@ -71,7 +65,7 @@ steps: is1ESPipeline: ${{ parameters.is1ESPipeline }} args: displayName: Publish BuildLogs - targetPath: artifacts/log/$[ coalesce(variables._BuildConfig, 'Release') ]/ + targetPath: artifacts/log/${{ coalesce(variables._BuildConfig, 'Release') }} artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt) continueOnError: true condition: succeededOrFailed() diff --git a/src/templating/eng/common/tools.sh b/src/templating/eng/common/tools.sh index d51f300c772..cc007b1f15a 100755 --- a/src/templating/eng/common/tools.sh +++ b/src/templating/eng/common/tools.sh @@ -5,6 +5,9 @@ # CI mode - set to true on CI server for PR validation build or official build. ci=${ci:-false} +# Build mode +source_build=${source_build:-false} + # Set to true to use the pipelines logger which will enable Azure logging output. # https://github.com/Microsoft/azure-pipelines-tasks/blob/master/docs/authoring/commands.md # This flag is meant as a temporary opt-opt for the feature while validate it across @@ -58,7 +61,8 @@ use_installed_dotnet_cli=${use_installed_dotnet_cli:-true} dotnetInstallScriptVersion=${dotnetInstallScriptVersion:-'v1'} # True to use global NuGet cache instead of restoring packages to repository-local directory. -if [[ "$ci" == true ]]; then +# Keep in sync with NuGetPackageroot in Arcade SDK's RepositoryLayout.props. +if [[ "$ci" == true || "$source_build" == true ]]; then use_global_nuget_cache=${use_global_nuget_cache:-false} else use_global_nuget_cache=${use_global_nuget_cache:-true} diff --git a/src/templating/global.json b/src/templating/global.json index 01523229637..abf0c7c9a3e 100644 --- a/src/templating/global.json +++ b/src/templating/global.json @@ -3,6 +3,6 @@ "dotnet": "10.0.100-preview.3.25201.16" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25257.101" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25260.104" } } From bc683277b9b95fae74d0c697684f2a919bc9e06a Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 12 May 2025 19:41:57 +0200 Subject: [PATCH 11/32] [main] Source code updates from dotnet/efcore (#508) Co-authored-by: dotnet-maestro[bot] --- prereqs/git-info/efcore.props | 6 +- src/efcore/eng/Version.Details.xml | 74 ++++++------ src/efcore/eng/Versions.props | 32 ++--- .../core-templates/steps/source-build.yml | 16 +-- src/efcore/eng/common/tools.sh | 6 +- src/efcore/global.json | 4 +- ...yableMethodTranslatingExpressionVisitor.cs | 10 ++ ...lationalSqlTranslatingExpressionVisitor.cs | 10 ++ .../Query/GearsOfWarQueryTestBase.cs | 30 +++++ .../TestModels/GearsOfWarModel/LocustHorde.cs | 1 + .../Query/GearsOfWarQuerySqlServerTest.cs | 97 +++++++++++---- .../Query/TPCGearsOfWarQuerySqlServerTest.cs | 113 ++++++++++++++---- .../Query/TPTGearsOfWarQuerySqlServerTest.cs | 103 ++++++++++++---- .../TemporalGearsOfWarQuerySqlServerTest.cs | 99 +++++++++++---- .../Query/GearsOfWarQuerySqliteTest.cs | 98 +++++++++++---- src/source-manifest.json | 6 +- 16 files changed, 520 insertions(+), 185 deletions(-) diff --git a/prereqs/git-info/efcore.props b/prereqs/git-info/efcore.props index c4c38e90651..26e9db422d8 100644 --- a/prereqs/git-info/efcore.props +++ b/prereqs/git-info/efcore.props @@ -1,8 +1,8 @@  - a72632d6bfe67740954f74da5e42e1795e405522 - 20250508.1 - 10.0.0-preview.4.25258.1 + 7a87abf268190f3a0d5f218e9b0b595360701af3 + 20250512.1 + 10.0.0-preview.4.25262.1 \ No newline at end of file diff --git a/src/efcore/eng/Version.Details.xml b/src/efcore/eng/Version.Details.xml index 8f943ad891b..8c6354d49bc 100644 --- a/src/efcore/eng/Version.Details.xml +++ b/src/efcore/eng/Version.Details.xml @@ -1,84 +1,84 @@ - + - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb diff --git a/src/efcore/eng/Versions.props b/src/efcore/eng/Versions.props index ec4852a38a0..a0445bb5d2f 100644 --- a/src/efcore/eng/Versions.props +++ b/src/efcore/eng/Versions.props @@ -16,24 +16,24 @@ False - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 - 10.0.0-beta.25257.101 + 10.0.0-beta.25260.104 17.13.9 diff --git a/src/efcore/eng/common/core-templates/steps/source-build.yml b/src/efcore/eng/common/core-templates/steps/source-build.yml index 325231215d5..f2a0f347fdd 100644 --- a/src/efcore/eng/common/core-templates/steps/source-build.yml +++ b/src/efcore/eng/common/core-templates/steps/source-build.yml @@ -38,14 +38,9 @@ steps: targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}' fi - runtimeOsArgs= - if [ '${{ parameters.platform.runtimeOS }}' != '' ]; then - runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}' - fi - - baseOsArgs= - if [ '${{ parameters.platform.baseOS }}' != '' ]; then - baseOsArgs='/p:BaseOS=${{ parameters.platform.baseOS }}' + baseRidArgs= + if [ '${{ parameters.platform.baseRID }}' != '' ]; then + baseRidArgs='/p:BaseRid=${{ parameters.platform.baseRID }}' fi portableBuildArgs= @@ -59,8 +54,7 @@ steps: ${{ parameters.platform.buildArguments }} \ $internalRuntimeDownloadArgs \ $targetRidArgs \ - $runtimeOsArgs \ - $baseOsArgs \ + $baseRidArgs \ $portableBuildArgs \ /p:DotNetBuildSourceOnly=true \ /p:DotNetBuildRepo=true \ @@ -71,7 +65,7 @@ steps: is1ESPipeline: ${{ parameters.is1ESPipeline }} args: displayName: Publish BuildLogs - targetPath: artifacts/log/$[ coalesce(variables._BuildConfig, 'Release') ]/ + targetPath: artifacts/log/${{ coalesce(variables._BuildConfig, 'Release') }} artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt) continueOnError: true condition: succeededOrFailed() diff --git a/src/efcore/eng/common/tools.sh b/src/efcore/eng/common/tools.sh index d51f300c772..cc007b1f15a 100755 --- a/src/efcore/eng/common/tools.sh +++ b/src/efcore/eng/common/tools.sh @@ -5,6 +5,9 @@ # CI mode - set to true on CI server for PR validation build or official build. ci=${ci:-false} +# Build mode +source_build=${source_build:-false} + # Set to true to use the pipelines logger which will enable Azure logging output. # https://github.com/Microsoft/azure-pipelines-tasks/blob/master/docs/authoring/commands.md # This flag is meant as a temporary opt-opt for the feature while validate it across @@ -58,7 +61,8 @@ use_installed_dotnet_cli=${use_installed_dotnet_cli:-true} dotnetInstallScriptVersion=${dotnetInstallScriptVersion:-'v1'} # True to use global NuGet cache instead of restoring packages to repository-local directory. -if [[ "$ci" == true ]]; then +# Keep in sync with NuGetPackageroot in Arcade SDK's RepositoryLayout.props. +if [[ "$ci" == true || "$source_build" == true ]]; then use_global_nuget_cache=${use_global_nuget_cache:-false} else use_global_nuget_cache=${use_global_nuget_cache:-true} diff --git a/src/efcore/global.json b/src/efcore/global.json index 4788cf1576b..9dd20ccd1fe 100644 --- a/src/efcore/global.json +++ b/src/efcore/global.json @@ -13,7 +13,7 @@ } }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25257.101", - "Microsoft.DotNet.Helix.Sdk": "10.0.0-beta.25257.101" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25260.104", + "Microsoft.DotNet.Helix.Sdk": "10.0.0-beta.25260.104" } } diff --git a/src/efcore/src/EFCore.InMemory/Query/Internal/InMemoryQueryableMethodTranslatingExpressionVisitor.cs b/src/efcore/src/EFCore.InMemory/Query/Internal/InMemoryQueryableMethodTranslatingExpressionVisitor.cs index b259d6aa501..a64883aaf3f 100644 --- a/src/efcore/src/EFCore.InMemory/Query/Internal/InMemoryQueryableMethodTranslatingExpressionVisitor.cs +++ b/src/efcore/src/EFCore.InMemory/Query/Internal/InMemoryQueryableMethodTranslatingExpressionVisitor.cs @@ -1160,6 +1160,16 @@ public Expression Expand(InMemoryQueryExpression queryExpression, Expression lam protected override Expression VisitMember(MemberExpression memberExpression) { + // Fold member access into conditional, i.e. transform + // (test ? expr1 : expr2).Member -> (test ? expr1.Member : expr2.Member) + if (memberExpression.Expression is ConditionalExpression cond) { + return Visit(Expression.Condition( + cond.Test, + Expression.MakeMemberAccess(cond.IfTrue, memberExpression.Member), + Expression.MakeMemberAccess(cond.IfFalse, memberExpression.Member) + )); + } + var innerExpression = Visit(memberExpression.Expression); return TryExpand(innerExpression, MemberIdentity.Create(memberExpression.Member)) diff --git a/src/efcore/src/EFCore.Relational/Query/RelationalSqlTranslatingExpressionVisitor.cs b/src/efcore/src/EFCore.Relational/Query/RelationalSqlTranslatingExpressionVisitor.cs index 512c676a158..3a2fdd6b725 100644 --- a/src/efcore/src/EFCore.Relational/Query/RelationalSqlTranslatingExpressionVisitor.cs +++ b/src/efcore/src/EFCore.Relational/Query/RelationalSqlTranslatingExpressionVisitor.cs @@ -631,6 +631,16 @@ protected override Expression VisitListInit(ListInitExpression listInitExpressio /// protected override Expression VisitMember(MemberExpression memberExpression) { + // Fold member access into conditional, i.e. transform + // (test ? expr1 : expr2).Member -> (test ? expr1.Member : expr2.Member) + if (memberExpression.Expression is ConditionalExpression cond) { + return Visit(Expression.Condition( + cond.Test, + Expression.MakeMemberAccess(cond.IfTrue, memberExpression.Member), + Expression.MakeMemberAccess(cond.IfFalse, memberExpression.Member) + )); + } + var innerExpression = Visit(memberExpression.Expression); return TryBindMember(innerExpression, MemberIdentity.Create(memberExpression.Member), out var expression) diff --git a/src/efcore/test/EFCore.Specification.Tests/Query/GearsOfWarQueryTestBase.cs b/src/efcore/test/EFCore.Specification.Tests/Query/GearsOfWarQueryTestBase.cs index 9f3daa18fe4..35b623e098c 100644 --- a/src/efcore/test/EFCore.Specification.Tests/Query/GearsOfWarQueryTestBase.cs +++ b/src/efcore/test/EFCore.Specification.Tests/Query/GearsOfWarQueryTestBase.cs @@ -1196,6 +1196,36 @@ from t2 in ss.Set() AssertEqual(e.t2, e.t2); }); + [ConditionalTheory] + [MemberData(nameof(IsAsyncData))] + public virtual Task Conditional_Navigation_With_Trivial_Member_Access(bool async) + => AssertQuery( + async, + ss => ss.Set() + .Where(g => (g.AssignedCity != null ? g.AssignedCity : g.CityOfBirth).Name != "Ephyra") + .Select(g => new { g.Nickname }), + elementSorter: e => e.Nickname); + + [ConditionalTheory] + [MemberData(nameof(IsAsyncData))] + public virtual Task Conditional_Navigation_With_Member_Access_On_Same_Type(bool async) + => AssertQuery( + async, + ss => ss.Set() + .Where(g => (g.AssignedCity != null ? g.AssignedCity : g.CityOfBirth).Nation == "Tyrus") + .Select(g => new { g.Nickname, g.FullName }), + elementSorter: e => e.Nickname); + + [ConditionalTheory] + [MemberData(nameof(IsAsyncData))] + public virtual Task Conditional_Navigation_With_Member_Access_On_Related_Types(bool async) + => AssertQuery( + async, + ss => ss.Set() + .Where(g => (g.DeputyCommander != null ? g.DeputyCommander : g.Commander).ThreatLevel == 4) + .Select(g => new { g.Name }), + elementSorter: e => e.Name); + [ConditionalTheory] [MemberData(nameof(IsAsyncData))] public virtual Task Singleton_Navigation_With_Member_Access(bool async) diff --git a/src/efcore/test/EFCore.Specification.Tests/TestModels/GearsOfWarModel/LocustHorde.cs b/src/efcore/test/EFCore.Specification.Tests/TestModels/GearsOfWarModel/LocustHorde.cs index ec87e1442db..8ce30a63e98 100644 --- a/src/efcore/test/EFCore.Specification.Tests/TestModels/GearsOfWarModel/LocustHorde.cs +++ b/src/efcore/test/EFCore.Specification.Tests/TestModels/GearsOfWarModel/LocustHorde.cs @@ -8,6 +8,7 @@ namespace Microsoft.EntityFrameworkCore.TestModels.GearsOfWarModel; public class LocustHorde : Faction { public LocustCommander Commander { get; set; } + public LocustLeader DeputyCommander { get; set; } public List Leaders { get; set; } public string CommanderName { get; set; } diff --git a/src/efcore/test/EFCore.SqlServer.FunctionalTests/Query/GearsOfWarQuerySqlServerTest.cs b/src/efcore/test/EFCore.SqlServer.FunctionalTests/Query/GearsOfWarQuerySqlServerTest.cs index 48c87e39da4..04a021ecb67 100644 --- a/src/efcore/test/EFCore.SqlServer.FunctionalTests/Query/GearsOfWarQuerySqlServerTest.cs +++ b/src/efcore/test/EFCore.SqlServer.FunctionalTests/Query/GearsOfWarQuerySqlServerTest.cs @@ -992,6 +992,61 @@ CROSS JOIN [Tags] AS [t0] """); } + public override async Task Conditional_Navigation_With_Trivial_Member_Access(bool async) + { + await base.Conditional_Navigation_With_Trivial_Member_Access(async); + + AssertSql( + """ +SELECT [g].[Nickname] +FROM [Gears] AS [g] +LEFT JOIN [Cities] AS [c] ON [g].[AssignedCityName] = [c].[Name] +INNER JOIN [Cities] AS [c0] ON [g].[CityOfBirthName] = [c0].[Name] +WHERE CASE + WHEN [c].[Name] IS NOT NULL THEN [c].[Name] + ELSE [c0].[Name] +END <> N'Ephyra' +"""); + } + + public override async Task Conditional_Navigation_With_Member_Access_On_Same_Type(bool async) + { + await base.Conditional_Navigation_With_Member_Access_On_Same_Type(async); + + AssertSql( + """ +SELECT [g].[Nickname], [g].[FullName] +FROM [Gears] AS [g] +LEFT JOIN [Cities] AS [c] ON [g].[AssignedCityName] = [c].[Name] +INNER JOIN [Cities] AS [c0] ON [g].[CityOfBirthName] = [c0].[Name] +WHERE CASE + WHEN [c].[Name] IS NOT NULL THEN [c].[Nation] + ELSE [c0].[Nation] +END = N'Tyrus' +"""); + } + + public override async Task Conditional_Navigation_With_Member_Access_On_Related_Types(bool async) + { + await base.Conditional_Navigation_With_Member_Access_On_Related_Types(async); + + AssertSql( + """ +SELECT [f].[Name] +FROM [Factions] AS [f] +LEFT JOIN [LocustLeaders] AS [l] ON [f].[DeputyCommanderName] = [l].[Name] +LEFT JOIN ( + SELECT [l0].[Name], [l0].[ThreatLevel] + FROM [LocustLeaders] AS [l0] + WHERE [l0].[Discriminator] = N'LocustCommander' +) AS [l1] ON [f].[CommanderName] = [l1].[Name] +WHERE CASE + WHEN [l].[Name] IS NOT NULL THEN [l].[ThreatLevel] + ELSE [l1].[ThreatLevel] +END = CAST(4 AS smallint) +"""); + } + public override async Task Select_Singleton_Navigation_With_Member_Access(bool async) { await base.Select_Singleton_Navigation_With_Member_Access(async); @@ -2793,7 +2848,7 @@ public override async Task Member_access_on_derived_materialized_entity_using_ca AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated] +SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated] FROM [Factions] AS [f] ORDER BY [f].[Name] """); @@ -2846,7 +2901,7 @@ public override async Task Navigation_access_on_derived_materialized_entity_usin AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated], [l0].[ThreatLevel] AS [Threat] +SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated], [l0].[ThreatLevel] AS [Threat] FROM [Factions] AS [f] LEFT JOIN ( SELECT [l].[Name], [l].[ThreatLevel] @@ -2925,7 +2980,7 @@ public override async Task Include_on_derived_entity_using_OfType(bool async) AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated], [l0].[Name], [l0].[Discriminator], [l0].[LocustHordeId], [l0].[ThreatLevel], [l0].[ThreatLevelByte], [l0].[ThreatLevelNullableByte], [l0].[DefeatedByNickname], [l0].[DefeatedBySquadId], [l0].[HighCommandId], [l1].[Name], [l1].[Discriminator], [l1].[LocustHordeId], [l1].[ThreatLevel], [l1].[ThreatLevelByte], [l1].[ThreatLevelNullableByte], [l1].[DefeatedByNickname], [l1].[DefeatedBySquadId], [l1].[HighCommandId] +SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated], [l0].[Name], [l0].[Discriminator], [l0].[LocustHordeId], [l0].[ThreatLevel], [l0].[ThreatLevelByte], [l0].[ThreatLevelNullableByte], [l0].[DefeatedByNickname], [l0].[DefeatedBySquadId], [l0].[HighCommandId], [l1].[Name], [l1].[Discriminator], [l1].[LocustHordeId], [l1].[ThreatLevel], [l1].[ThreatLevelByte], [l1].[ThreatLevelNullableByte], [l1].[DefeatedByNickname], [l1].[DefeatedBySquadId], [l1].[HighCommandId] FROM [Factions] AS [f] LEFT JOIN ( SELECT [l].[Name], [l].[Discriminator], [l].[LocustHordeId], [l].[ThreatLevel], [l].[ThreatLevelByte], [l].[ThreatLevelNullableByte], [l].[DefeatedByNickname], [l].[DefeatedBySquadId], [l].[HighCommandId] @@ -3286,7 +3341,7 @@ public override async Task ThenInclude_collection_on_derived_after_derived_refer AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated], [l0].[Name], [l0].[Discriminator], [l0].[LocustHordeId], [l0].[ThreatLevel], [l0].[ThreatLevelByte], [l0].[ThreatLevelNullableByte], [l0].[DefeatedByNickname], [l0].[DefeatedBySquadId], [l0].[HighCommandId], [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOfBirthName], [g0].[Discriminator], [g0].[FullName], [g0].[HasSoulPatch], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank] +SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated], [l0].[Name], [l0].[Discriminator], [l0].[LocustHordeId], [l0].[ThreatLevel], [l0].[ThreatLevelByte], [l0].[ThreatLevelNullableByte], [l0].[DefeatedByNickname], [l0].[DefeatedBySquadId], [l0].[HighCommandId], [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOfBirthName], [g0].[Discriminator], [g0].[FullName], [g0].[HasSoulPatch], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank] FROM [Factions] AS [f] LEFT JOIN ( SELECT [l].[Name], [l].[Discriminator], [l].[LocustHordeId], [l].[ThreatLevel], [l].[ThreatLevelByte], [l].[ThreatLevelNullableByte], [l].[DefeatedByNickname], [l].[DefeatedBySquadId], [l].[HighCommandId] @@ -3322,7 +3377,7 @@ public override async Task ThenInclude_reference_on_derived_after_derived_collec AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated], [s].[Name], [s].[Discriminator], [s].[LocustHordeId], [s].[ThreatLevel], [s].[ThreatLevelByte], [s].[ThreatLevelNullableByte], [s].[DefeatedByNickname], [s].[DefeatedBySquadId], [s].[HighCommandId], [s].[Nickname], [s].[SquadId], [s].[AssignedCityName], [s].[CityOfBirthName], [s].[Discriminator0], [s].[FullName], [s].[HasSoulPatch], [s].[LeaderNickname], [s].[LeaderSquadId], [s].[Rank] +SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated], [s].[Name], [s].[Discriminator], [s].[LocustHordeId], [s].[ThreatLevel], [s].[ThreatLevelByte], [s].[ThreatLevelNullableByte], [s].[DefeatedByNickname], [s].[DefeatedBySquadId], [s].[HighCommandId], [s].[Nickname], [s].[SquadId], [s].[AssignedCityName], [s].[CityOfBirthName], [s].[Discriminator0], [s].[FullName], [s].[HasSoulPatch], [s].[LeaderNickname], [s].[LeaderSquadId], [s].[Rank] FROM [Factions] AS [f] LEFT JOIN ( SELECT [l].[Name], [l].[Discriminator], [l].[LocustHordeId], [l].[ThreatLevel], [l].[ThreatLevelByte], [l].[ThreatLevelNullableByte], [l].[DefeatedByNickname], [l].[DefeatedBySquadId], [l].[HighCommandId], [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[Discriminator] AS [Discriminator0], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank] @@ -3339,7 +3394,7 @@ public override async Task Multiple_derived_included_on_one_method(bool async) AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated], [l0].[Name], [l0].[Discriminator], [l0].[LocustHordeId], [l0].[ThreatLevel], [l0].[ThreatLevelByte], [l0].[ThreatLevelNullableByte], [l0].[DefeatedByNickname], [l0].[DefeatedBySquadId], [l0].[HighCommandId], [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOfBirthName], [g0].[Discriminator], [g0].[FullName], [g0].[HasSoulPatch], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank] +SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated], [l0].[Name], [l0].[Discriminator], [l0].[LocustHordeId], [l0].[ThreatLevel], [l0].[ThreatLevelByte], [l0].[ThreatLevelNullableByte], [l0].[DefeatedByNickname], [l0].[DefeatedBySquadId], [l0].[HighCommandId], [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOfBirthName], [g0].[Discriminator], [g0].[FullName], [g0].[HasSoulPatch], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[Rank] FROM [Factions] AS [f] LEFT JOIN ( SELECT [l].[Name], [l].[Discriminator], [l].[LocustHordeId], [l].[ThreatLevel], [l].[ThreatLevelByte], [l].[ThreatLevelNullableByte], [l].[DefeatedByNickname], [l].[DefeatedBySquadId], [l].[HighCommandId] @@ -4460,10 +4515,10 @@ public override async Task Null_semantics_on_nullable_bool_from_inner_join_subqu AssertSql( """ -SELECT [f0].[Id], [f0].[CapitalName], [f0].[Discriminator], [f0].[Name], [f0].[ServerAddress], [f0].[CommanderName], [f0].[Eradicated] +SELECT [f0].[Id], [f0].[CapitalName], [f0].[Discriminator], [f0].[Name], [f0].[ServerAddress], [f0].[CommanderName], [f0].[DeputyCommanderName], [f0].[Eradicated] FROM [LocustLeaders] AS [l] INNER JOIN ( - SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated] + SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated] FROM [Factions] AS [f] WHERE [f].[Name] = N'Swarm' ) AS [f0] ON [l].[Name] = [f0].[CommanderName] @@ -4477,10 +4532,10 @@ public override async Task Null_semantics_on_nullable_bool_from_left_join_subque AssertSql( """ -SELECT [f0].[Id], [f0].[CapitalName], [f0].[Discriminator], [f0].[Name], [f0].[ServerAddress], [f0].[CommanderName], [f0].[Eradicated] +SELECT [f0].[Id], [f0].[CapitalName], [f0].[Discriminator], [f0].[Name], [f0].[ServerAddress], [f0].[CommanderName], [f0].[DeputyCommanderName], [f0].[Eradicated] FROM [LocustLeaders] AS [l] LEFT JOIN ( - SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated] + SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated] FROM [Factions] AS [f] WHERE [f].[Name] = N'Swarm' ) AS [f0] ON [l].[Name] = [f0].[CommanderName] @@ -5756,9 +5811,7 @@ SELECT CASE END FROM [Gears] AS [g] ORDER BY CASE - WHEN CASE - WHEN [g].[LeaderNickname] IS NOT NULL THEN ~CAST(CAST(LEN([g].[Nickname]) AS int) ^ 5 AS bit) - END IS NOT NULL THEN CAST(1 AS bit) + WHEN [g].[LeaderNickname] IS NOT NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END """); @@ -5978,7 +6031,7 @@ public override async Task Nav_rewrite_with_convert2(bool async) AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated] +SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated] FROM [Factions] AS [f] LEFT JOIN [Cities] AS [c] ON [f].[CapitalName] = [c].[Name] LEFT JOIN ( @@ -5996,7 +6049,7 @@ public override async Task Nav_rewrite_with_convert3(bool async) AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated] +SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated] FROM [Factions] AS [f] LEFT JOIN [Cities] AS [c] ON [f].[CapitalName] = [c].[Name] LEFT JOIN ( @@ -6288,7 +6341,7 @@ public override async Task Navigation_based_on_complex_expression1(bool async) AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated] +SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated] FROM [Factions] AS [f] LEFT JOIN ( SELECT [l].[Name] @@ -6305,7 +6358,7 @@ public override async Task Navigation_based_on_complex_expression2(bool async) AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated] +SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated] FROM [Factions] AS [f] LEFT JOIN ( SELECT [l].[Name] @@ -8283,7 +8336,7 @@ public override async Task Comparison_with_value_converted_subclass(bool async) AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated] +SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated] FROM [Factions] AS [f] WHERE [f].[ServerAddress] = CAST(N'127.0.0.1' AS nvarchar(45)) """); @@ -8347,7 +8400,7 @@ public override async Task Project_navigation_defined_on_derived_from_entity_wit SELECT [l].[Name], [l].[Discriminator], [l].[LocustHordeId], [l].[ThreatLevel], [l].[ThreatLevelByte], [l].[ThreatLevelNullableByte], [l].[DefeatedByNickname], [l].[DefeatedBySquadId], [l].[HighCommandId], [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[Rank], CASE WHEN [g].[Nickname] IS NULL OR [g].[SquadId] IS NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) -END AS [IsNull], [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated], CASE +END AS [IsNull], [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated], CASE WHEN [f].[Id] IS NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [IsNull], [l0].[Id], [l0].[IsOperational], [l0].[Name], CASE @@ -8457,7 +8510,7 @@ public override async Task Include_after_Select_throws(bool async) AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated], [c].[Name], [c].[Location], [c].[Nation] +SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated], [c].[Name], [c].[Location], [c].[Nation] FROM [Factions] AS [f] LEFT JOIN [Cities] AS [c] ON [f].[CapitalName] = [c].[Name] """); @@ -8525,7 +8578,7 @@ public override async Task Include_on_derived_entity_with_cast(bool async) AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated], [c].[Name], [c].[Location], [c].[Nation] +SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated], [c].[Name], [c].[Location], [c].[Nation] FROM [Factions] AS [f] LEFT JOIN [Cities] AS [c] ON [f].[CapitalName] = [c].[Name] ORDER BY [f].[Id] @@ -8591,7 +8644,7 @@ public override async Task Project_derivied_entity_with_convert_to_parent(bool a AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated] +SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated] FROM [Factions] AS [f] """); } diff --git a/src/efcore/test/EFCore.SqlServer.FunctionalTests/Query/TPCGearsOfWarQuerySqlServerTest.cs b/src/efcore/test/EFCore.SqlServer.FunctionalTests/Query/TPCGearsOfWarQuerySqlServerTest.cs index dab41cd54b4..58c359ea089 100644 --- a/src/efcore/test/EFCore.SqlServer.FunctionalTests/Query/TPCGearsOfWarQuerySqlServerTest.cs +++ b/src/efcore/test/EFCore.SqlServer.FunctionalTests/Query/TPCGearsOfWarQuerySqlServerTest.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.EntityFrameworkCore.TestModels.GearsOfWarModel; @@ -1366,6 +1366,75 @@ FROM [Officers] AS [o0] """); } + public override async Task Conditional_Navigation_With_Trivial_Member_Access(bool async) + { + await base.Conditional_Navigation_With_Trivial_Member_Access(async); + + AssertSql( + """ +SELECT [u].[Nickname] +FROM ( + SELECT [g].[Nickname], [g].[AssignedCityName], [g].[CityOfBirthName] + FROM [Gears] AS [g] + UNION ALL + SELECT [o].[Nickname], [o].[AssignedCityName], [o].[CityOfBirthName] + FROM [Officers] AS [o] +) AS [u] +LEFT JOIN [Cities] AS [c] ON [u].[AssignedCityName] = [c].[Name] +INNER JOIN [Cities] AS [c0] ON [u].[CityOfBirthName] = [c0].[Name] +WHERE CASE + WHEN [c].[Name] IS NOT NULL THEN [c].[Name] + ELSE [c0].[Name] +END <> N'Ephyra' +"""); + } + + public override async Task Conditional_Navigation_With_Member_Access_On_Same_Type(bool async) + { + await base.Conditional_Navigation_With_Member_Access_On_Same_Type(async); + + AssertSql( + """ +SELECT [u].[Nickname], [u].[FullName] +FROM ( + SELECT [g].[Nickname], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[FullName] + FROM [Gears] AS [g] + UNION ALL + SELECT [o].[Nickname], [o].[AssignedCityName], [o].[CityOfBirthName], [o].[FullName] + FROM [Officers] AS [o] +) AS [u] +LEFT JOIN [Cities] AS [c] ON [u].[AssignedCityName] = [c].[Name] +INNER JOIN [Cities] AS [c0] ON [u].[CityOfBirthName] = [c0].[Name] +WHERE CASE + WHEN [c].[Name] IS NOT NULL THEN [c].[Nation] + ELSE [c0].[Nation] +END = N'Tyrus' +"""); + } + + public override async Task Conditional_Navigation_With_Member_Access_On_Related_Types(bool async) + { + await base.Conditional_Navigation_With_Member_Access_On_Related_Types(async); + + AssertSql( + """ +SELECT [l].[Name] +FROM [LocustHordes] AS [l] +LEFT JOIN ( + SELECT [l0].[Name], [l0].[ThreatLevel] + FROM [LocustLeaders] AS [l0] + UNION ALL + SELECT [l1].[Name], [l1].[ThreatLevel] + FROM [LocustCommanders] AS [l1] +) AS [u] ON [l].[DeputyCommanderName] = [u].[Name] +LEFT JOIN [LocustCommanders] AS [l2] ON [l].[CommanderName] = [l2].[Name] +WHERE CASE + WHEN [u].[Name] IS NOT NULL THEN [u].[ThreatLevel] + ELSE [l2].[ThreatLevel] +END = CAST(4 AS smallint) +"""); + } + public override async Task Select_Singleton_Navigation_With_Member_Access(bool async) { await base.Select_Singleton_Navigation_With_Member_Access(async); @@ -3762,7 +3831,7 @@ public override async Task Member_access_on_derived_materialized_entity_using_ca AssertSql( """ -SELECT [l].[Id], [l].[CapitalName], [l].[Name], [l].[ServerAddress], [l].[CommanderName], [l].[Eradicated] +SELECT [l].[Id], [l].[CapitalName], [l].[Name], [l].[ServerAddress], [l].[CommanderName], [l].[DeputyCommanderName], [l].[Eradicated] FROM [LocustHordes] AS [l] ORDER BY [l].[Name] """); @@ -3811,7 +3880,7 @@ public override async Task Navigation_access_on_derived_materialized_entity_usin AssertSql( """ -SELECT [l].[Id], [l].[CapitalName], [l].[Name], [l].[ServerAddress], [l].[CommanderName], [l].[Eradicated], [l0].[ThreatLevel] AS [Threat] +SELECT [l].[Id], [l].[CapitalName], [l].[Name], [l].[ServerAddress], [l].[CommanderName], [l].[DeputyCommanderName], [l].[Eradicated], [l0].[ThreatLevel] AS [Threat] FROM [LocustHordes] AS [l] LEFT JOIN [LocustCommanders] AS [l0] ON [l].[CommanderName] = [l0].[Name] ORDER BY [l].[Name] @@ -3890,7 +3959,7 @@ public override async Task Include_on_derived_entity_using_OfType(bool async) AssertSql( """ -SELECT [l].[Id], [l].[CapitalName], [l].[Name], [l].[ServerAddress], [l].[CommanderName], [l].[Eradicated], [l0].[Name], [l0].[LocustHordeId], [l0].[ThreatLevel], [l0].[ThreatLevelByte], [l0].[ThreatLevelNullableByte], [l0].[DefeatedByNickname], [l0].[DefeatedBySquadId], [l0].[HighCommandId], [u].[Name], [u].[LocustHordeId], [u].[ThreatLevel], [u].[ThreatLevelByte], [u].[ThreatLevelNullableByte], [u].[DefeatedByNickname], [u].[DefeatedBySquadId], [u].[HighCommandId], [u].[Discriminator] +SELECT [l].[Id], [l].[CapitalName], [l].[Name], [l].[ServerAddress], [l].[CommanderName], [l].[DeputyCommanderName], [l].[Eradicated], [l0].[Name], [l0].[LocustHordeId], [l0].[ThreatLevel], [l0].[ThreatLevelByte], [l0].[ThreatLevelNullableByte], [l0].[DefeatedByNickname], [l0].[DefeatedBySquadId], [l0].[HighCommandId], [u].[Name], [u].[LocustHordeId], [u].[ThreatLevel], [u].[ThreatLevelByte], [u].[ThreatLevelNullableByte], [u].[DefeatedByNickname], [u].[DefeatedBySquadId], [u].[HighCommandId], [u].[Discriminator] FROM [LocustHordes] AS [l] LEFT JOIN [LocustCommanders] AS [l0] ON [l].[CommanderName] = [l0].[Name] LEFT JOIN ( @@ -4439,7 +4508,7 @@ public override async Task ThenInclude_collection_on_derived_after_derived_refer AssertSql( """ -SELECT [l].[Id], [l].[CapitalName], [l].[Name], [l].[ServerAddress], [l].[CommanderName], [l].[Eradicated], [l0].[Name], [l0].[LocustHordeId], [l0].[ThreatLevel], [l0].[ThreatLevelByte], [l0].[ThreatLevelNullableByte], [l0].[DefeatedByNickname], [l0].[DefeatedBySquadId], [l0].[HighCommandId], [u].[Nickname], [u].[SquadId], [u].[AssignedCityName], [u].[CityOfBirthName], [u].[FullName], [u].[HasSoulPatch], [u].[LeaderNickname], [u].[LeaderSquadId], [u].[Rank], [u].[Discriminator], [u0].[Nickname], [u0].[SquadId], [u0].[AssignedCityName], [u0].[CityOfBirthName], [u0].[FullName], [u0].[HasSoulPatch], [u0].[LeaderNickname], [u0].[LeaderSquadId], [u0].[Rank], [u0].[Discriminator] +SELECT [l].[Id], [l].[CapitalName], [l].[Name], [l].[ServerAddress], [l].[CommanderName], [l].[DeputyCommanderName], [l].[Eradicated], [l0].[Name], [l0].[LocustHordeId], [l0].[ThreatLevel], [l0].[ThreatLevelByte], [l0].[ThreatLevelNullableByte], [l0].[DefeatedByNickname], [l0].[DefeatedBySquadId], [l0].[HighCommandId], [u].[Nickname], [u].[SquadId], [u].[AssignedCityName], [u].[CityOfBirthName], [u].[FullName], [u].[HasSoulPatch], [u].[LeaderNickname], [u].[LeaderSquadId], [u].[Rank], [u].[Discriminator], [u0].[Nickname], [u0].[SquadId], [u0].[AssignedCityName], [u0].[CityOfBirthName], [u0].[FullName], [u0].[HasSoulPatch], [u0].[LeaderNickname], [u0].[LeaderSquadId], [u0].[Rank], [u0].[Discriminator] FROM [LocustHordes] AS [l] LEFT JOIN [LocustCommanders] AS [l0] ON [l].[CommanderName] = [l0].[Name] LEFT JOIN ( @@ -4501,7 +4570,7 @@ public override async Task ThenInclude_reference_on_derived_after_derived_collec AssertSql( """ -SELECT [l].[Id], [l].[CapitalName], [l].[Name], [l].[ServerAddress], [l].[CommanderName], [l].[Eradicated], [s].[Name], [s].[LocustHordeId], [s].[ThreatLevel], [s].[ThreatLevelByte], [s].[ThreatLevelNullableByte], [s].[DefeatedByNickname], [s].[DefeatedBySquadId], [s].[HighCommandId], [s].[Discriminator], [s].[Nickname], [s].[SquadId], [s].[AssignedCityName], [s].[CityOfBirthName], [s].[FullName], [s].[HasSoulPatch], [s].[LeaderNickname], [s].[LeaderSquadId], [s].[Rank], [s].[Discriminator0] +SELECT [l].[Id], [l].[CapitalName], [l].[Name], [l].[ServerAddress], [l].[CommanderName], [l].[DeputyCommanderName], [l].[Eradicated], [s].[Name], [s].[LocustHordeId], [s].[ThreatLevel], [s].[ThreatLevelByte], [s].[ThreatLevelNullableByte], [s].[DefeatedByNickname], [s].[DefeatedBySquadId], [s].[HighCommandId], [s].[Discriminator], [s].[Nickname], [s].[SquadId], [s].[AssignedCityName], [s].[CityOfBirthName], [s].[FullName], [s].[HasSoulPatch], [s].[LeaderNickname], [s].[LeaderSquadId], [s].[Rank], [s].[Discriminator0] FROM [LocustHordes] AS [l] LEFT JOIN ( SELECT [u].[Name], [u].[LocustHordeId], [u].[ThreatLevel], [u].[ThreatLevelByte], [u].[ThreatLevelNullableByte], [u].[DefeatedByNickname], [u].[DefeatedBySquadId], [u].[HighCommandId], [u].[Discriminator], [u0].[Nickname], [u0].[SquadId], [u0].[AssignedCityName], [u0].[CityOfBirthName], [u0].[FullName], [u0].[HasSoulPatch], [u0].[LeaderNickname], [u0].[LeaderSquadId], [u0].[Rank], [u0].[Discriminator] AS [Discriminator0] @@ -4530,7 +4599,7 @@ public override async Task Multiple_derived_included_on_one_method(bool async) AssertSql( """ -SELECT [l].[Id], [l].[CapitalName], [l].[Name], [l].[ServerAddress], [l].[CommanderName], [l].[Eradicated], [l0].[Name], [l0].[LocustHordeId], [l0].[ThreatLevel], [l0].[ThreatLevelByte], [l0].[ThreatLevelNullableByte], [l0].[DefeatedByNickname], [l0].[DefeatedBySquadId], [l0].[HighCommandId], [u].[Nickname], [u].[SquadId], [u].[AssignedCityName], [u].[CityOfBirthName], [u].[FullName], [u].[HasSoulPatch], [u].[LeaderNickname], [u].[LeaderSquadId], [u].[Rank], [u].[Discriminator], [u0].[Nickname], [u0].[SquadId], [u0].[AssignedCityName], [u0].[CityOfBirthName], [u0].[FullName], [u0].[HasSoulPatch], [u0].[LeaderNickname], [u0].[LeaderSquadId], [u0].[Rank], [u0].[Discriminator] +SELECT [l].[Id], [l].[CapitalName], [l].[Name], [l].[ServerAddress], [l].[CommanderName], [l].[DeputyCommanderName], [l].[Eradicated], [l0].[Name], [l0].[LocustHordeId], [l0].[ThreatLevel], [l0].[ThreatLevelByte], [l0].[ThreatLevelNullableByte], [l0].[DefeatedByNickname], [l0].[DefeatedBySquadId], [l0].[HighCommandId], [u].[Nickname], [u].[SquadId], [u].[AssignedCityName], [u].[CityOfBirthName], [u].[FullName], [u].[HasSoulPatch], [u].[LeaderNickname], [u].[LeaderSquadId], [u].[Rank], [u].[Discriminator], [u0].[Nickname], [u0].[SquadId], [u0].[AssignedCityName], [u0].[CityOfBirthName], [u0].[FullName], [u0].[HasSoulPatch], [u0].[LeaderNickname], [u0].[LeaderSquadId], [u0].[Rank], [u0].[Discriminator] FROM [LocustHordes] AS [l] LEFT JOIN [LocustCommanders] AS [l0] ON [l].[CommanderName] = [l0].[Name] LEFT JOIN ( @@ -6059,7 +6128,7 @@ public override async Task Null_semantics_on_nullable_bool_from_inner_join_subqu AssertSql( """ -SELECT [l2].[Id], [l2].[CapitalName], [l2].[Name], [l2].[ServerAddress], [l2].[CommanderName], [l2].[Eradicated] +SELECT [l2].[Id], [l2].[CapitalName], [l2].[Name], [l2].[ServerAddress], [l2].[CommanderName], [l2].[DeputyCommanderName], [l2].[Eradicated] FROM ( SELECT [l].[Name] FROM [LocustLeaders] AS [l] @@ -6068,7 +6137,7 @@ SELECT [l0].[Name] FROM [LocustCommanders] AS [l0] ) AS [u] INNER JOIN ( - SELECT [l1].[Id], [l1].[CapitalName], [l1].[Name], [l1].[ServerAddress], [l1].[CommanderName], [l1].[Eradicated] + SELECT [l1].[Id], [l1].[CapitalName], [l1].[Name], [l1].[ServerAddress], [l1].[CommanderName], [l1].[DeputyCommanderName], [l1].[Eradicated] FROM [LocustHordes] AS [l1] WHERE [l1].[Name] = N'Swarm' ) AS [l2] ON [u].[Name] = [l2].[CommanderName] @@ -6082,7 +6151,7 @@ public override async Task Null_semantics_on_nullable_bool_from_left_join_subque AssertSql( """ -SELECT [l2].[Id], [l2].[CapitalName], [l2].[Name], [l2].[ServerAddress], [l2].[CommanderName], [l2].[Eradicated] +SELECT [l2].[Id], [l2].[CapitalName], [l2].[Name], [l2].[ServerAddress], [l2].[CommanderName], [l2].[DeputyCommanderName], [l2].[Eradicated] FROM ( SELECT [l].[Name] FROM [LocustLeaders] AS [l] @@ -6091,7 +6160,7 @@ SELECT [l0].[Name] FROM [LocustCommanders] AS [l0] ) AS [u] LEFT JOIN ( - SELECT [l1].[Id], [l1].[CapitalName], [l1].[Name], [l1].[ServerAddress], [l1].[CommanderName], [l1].[Eradicated] + SELECT [l1].[Id], [l1].[CapitalName], [l1].[Name], [l1].[ServerAddress], [l1].[CommanderName], [l1].[DeputyCommanderName], [l1].[Eradicated] FROM [LocustHordes] AS [l1] WHERE [l1].[Name] = N'Swarm' ) AS [l2] ON [u].[Name] = [l2].[CommanderName] @@ -7823,9 +7892,7 @@ UNION ALL FROM [Officers] AS [o] ) AS [u] ORDER BY CASE - WHEN CASE - WHEN [u].[LeaderNickname] IS NOT NULL THEN ~CAST(CAST(LEN([u].[Nickname]) AS int) ^ 5 AS bit) - END IS NOT NULL THEN CAST(1 AS bit) + WHEN [u].[LeaderNickname] IS NOT NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END """); @@ -8074,7 +8141,7 @@ public override async Task Nav_rewrite_with_convert2(bool async) AssertSql( """ -SELECT [l].[Id], [l].[CapitalName], [l].[Name], [l].[ServerAddress], [l].[CommanderName], [l].[Eradicated] +SELECT [l].[Id], [l].[CapitalName], [l].[Name], [l].[ServerAddress], [l].[CommanderName], [l].[DeputyCommanderName], [l].[Eradicated] FROM [LocustHordes] AS [l] LEFT JOIN [Cities] AS [c] ON [l].[CapitalName] = [c].[Name] LEFT JOIN [LocustCommanders] AS [l0] ON [l].[CommanderName] = [l0].[Name] @@ -8088,7 +8155,7 @@ public override async Task Nav_rewrite_with_convert3(bool async) AssertSql( """ -SELECT [l].[Id], [l].[CapitalName], [l].[Name], [l].[ServerAddress], [l].[CommanderName], [l].[Eradicated] +SELECT [l].[Id], [l].[CapitalName], [l].[Name], [l].[ServerAddress], [l].[CommanderName], [l].[DeputyCommanderName], [l].[Eradicated] FROM [LocustHordes] AS [l] LEFT JOIN [Cities] AS [c] ON [l].[CapitalName] = [c].[Name] LEFT JOIN [LocustCommanders] AS [l0] ON [l].[CommanderName] = [l0].[Name] @@ -8448,7 +8515,7 @@ public override async Task Navigation_based_on_complex_expression1(bool async) AssertSql( """ -SELECT [l].[Id], [l].[CapitalName], [l].[Name], [l].[ServerAddress], [l].[CommanderName], [l].[Eradicated] +SELECT [l].[Id], [l].[CapitalName], [l].[Name], [l].[ServerAddress], [l].[CommanderName], [l].[DeputyCommanderName], [l].[Eradicated] FROM [LocustHordes] AS [l] LEFT JOIN [LocustCommanders] AS [l0] ON [l].[CommanderName] = [l0].[Name] WHERE [l0].[Name] IS NOT NULL @@ -8461,7 +8528,7 @@ public override async Task Navigation_based_on_complex_expression2(bool async) AssertSql( """ -SELECT [l].[Id], [l].[CapitalName], [l].[Name], [l].[ServerAddress], [l].[CommanderName], [l].[Eradicated] +SELECT [l].[Id], [l].[CapitalName], [l].[Name], [l].[ServerAddress], [l].[CommanderName], [l].[DeputyCommanderName], [l].[Eradicated] FROM [LocustHordes] AS [l] LEFT JOIN [LocustCommanders] AS [l0] ON [l].[CommanderName] = [l0].[Name] WHERE [l0].[Name] IS NOT NULL @@ -10718,7 +10785,7 @@ public override async Task Project_navigation_defined_on_derived_from_entity_wit SELECT [u].[Name], [u].[LocustHordeId], [u].[ThreatLevel], [u].[ThreatLevelByte], [u].[ThreatLevelNullableByte], [u].[DefeatedByNickname], [u].[DefeatedBySquadId], [u].[HighCommandId], [u].[Discriminator], [u0].[Nickname], [u0].[SquadId], [u0].[AssignedCityName], [u0].[CityOfBirthName], [u0].[FullName], [u0].[HasSoulPatch], [u0].[LeaderNickname], [u0].[LeaderSquadId], [u0].[Rank], [u0].[Discriminator], CASE WHEN [u0].[Nickname] IS NULL OR [u0].[SquadId] IS NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) -END AS [IsNull], [l1].[Id], [l1].[CapitalName], [l1].[Name], [l1].[ServerAddress], [l1].[CommanderName], [l1].[Eradicated], CASE +END AS [IsNull], [l1].[Id], [l1].[CapitalName], [l1].[Name], [l1].[ServerAddress], [l1].[CommanderName], [l1].[DeputyCommanderName], [l1].[Eradicated], CASE WHEN [l1].[Id] IS NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [IsNull], [l2].[Id], [l2].[IsOperational], [l2].[Name], CASE @@ -11044,7 +11111,7 @@ public override async Task Comparison_with_value_converted_subclass(bool async) AssertSql( """ -SELECT [l].[Id], [l].[CapitalName], [l].[Name], [l].[ServerAddress], [l].[CommanderName], [l].[Eradicated] +SELECT [l].[Id], [l].[CapitalName], [l].[Name], [l].[ServerAddress], [l].[CommanderName], [l].[DeputyCommanderName], [l].[Eradicated] FROM [LocustHordes] AS [l] WHERE [l].[ServerAddress] = CAST(N'127.0.0.1' AS nvarchar(45)) """); @@ -11160,7 +11227,7 @@ public override async Task Include_after_Select_throws(bool async) AssertSql( """ -SELECT [l].[Id], [l].[CapitalName], [l].[Name], [l].[ServerAddress], [l].[CommanderName], [l].[Eradicated], [c].[Name], [c].[Location], [c].[Nation] +SELECT [l].[Id], [l].[CapitalName], [l].[Name], [l].[ServerAddress], [l].[CommanderName], [l].[DeputyCommanderName], [l].[Eradicated], [c].[Name], [c].[Location], [c].[Nation] FROM [LocustHordes] AS [l] LEFT JOIN [Cities] AS [c] ON [l].[CapitalName] = [c].[Name] """); @@ -11259,7 +11326,7 @@ public override async Task Project_derivied_entity_with_convert_to_parent(bool a AssertSql( """ -SELECT [l].[Id], [l].[CapitalName], [l].[Name], [l].[ServerAddress], [l].[CommanderName], [l].[Eradicated] +SELECT [l].[Id], [l].[CapitalName], [l].[Name], [l].[ServerAddress], [l].[CommanderName], [l].[DeputyCommanderName], [l].[Eradicated] FROM [LocustHordes] AS [l] """); } @@ -11437,7 +11504,7 @@ public override async Task Include_on_derived_entity_with_cast(bool async) AssertSql( """ -SELECT [l].[Id], [l].[CapitalName], [l].[Name], [l].[ServerAddress], [l].[CommanderName], [l].[Eradicated], [c].[Name], [c].[Location], [c].[Nation] +SELECT [l].[Id], [l].[CapitalName], [l].[Name], [l].[ServerAddress], [l].[CommanderName], [l].[DeputyCommanderName], [l].[Eradicated], [c].[Name], [c].[Location], [c].[Nation] FROM [LocustHordes] AS [l] LEFT JOIN [Cities] AS [c] ON [l].[CapitalName] = [c].[Name] ORDER BY [l].[Id] diff --git a/src/efcore/test/EFCore.SqlServer.FunctionalTests/Query/TPTGearsOfWarQuerySqlServerTest.cs b/src/efcore/test/EFCore.SqlServer.FunctionalTests/Query/TPTGearsOfWarQuerySqlServerTest.cs index 433caeeebc2..fe4f8f88245 100644 --- a/src/efcore/test/EFCore.SqlServer.FunctionalTests/Query/TPTGearsOfWarQuerySqlServerTest.cs +++ b/src/efcore/test/EFCore.SqlServer.FunctionalTests/Query/TPTGearsOfWarQuerySqlServerTest.cs @@ -1184,6 +1184,65 @@ FROM [Gears] AS [g0] """); } + public override async Task Conditional_Navigation_With_Trivial_Member_Access(bool async) + { + await base.Conditional_Navigation_With_Trivial_Member_Access(async); + + AssertSql( + """ +SELECT [g].[Nickname] +FROM [Gears] AS [g] +LEFT JOIN [Cities] AS [c] ON [g].[AssignedCityName] = [c].[Name] +INNER JOIN [Cities] AS [c0] ON [g].[CityOfBirthName] = [c0].[Name] +WHERE CASE + WHEN [c].[Name] IS NOT NULL THEN [c].[Name] + ELSE [c0].[Name] +END <> N'Ephyra' +"""); + } + + public override async Task Conditional_Navigation_With_Member_Access_On_Same_Type(bool async) + { + await base.Conditional_Navigation_With_Member_Access_On_Same_Type(async); + + AssertSql( + """ +SELECT [g].[Nickname], [g].[FullName] +FROM [Gears] AS [g] +LEFT JOIN [Cities] AS [c] ON [g].[AssignedCityName] = [c].[Name] +INNER JOIN [Cities] AS [c0] ON [g].[CityOfBirthName] = [c0].[Name] +WHERE CASE + WHEN [c].[Name] IS NOT NULL THEN [c].[Nation] + ELSE [c0].[Nation] +END = N'Tyrus' +"""); + } + + public override async Task Conditional_Navigation_With_Member_Access_On_Related_Types(bool async) + { + await base.Conditional_Navigation_With_Member_Access_On_Related_Types(async); + + AssertSql( + """ +SELECT [f].[Name] +FROM [Factions] AS [f] +INNER JOIN [LocustHordes] AS [l] ON [f].[Id] = [l].[Id] +LEFT JOIN ( + SELECT [l0].[Name], [l0].[ThreatLevel] + FROM [LocustLeaders] AS [l0] +) AS [s] ON [l].[DeputyCommanderName] = [s].[Name] +LEFT JOIN ( + SELECT [l1].[Name], [l1].[ThreatLevel] + FROM [LocustLeaders] AS [l1] + INNER JOIN [LocustCommanders] AS [l2] ON [l1].[Name] = [l2].[Name] +) AS [s0] ON [l].[CommanderName] = [s0].[Name] +WHERE CASE + WHEN [s].[Name] IS NOT NULL THEN [s].[ThreatLevel] + ELSE [s0].[ThreatLevel] +END = CAST(4 AS smallint) +"""); + } + public override async Task Select_Singleton_Navigation_With_Member_Access(bool async) { await base.Select_Singleton_Navigation_With_Member_Access(async); @@ -3184,7 +3243,7 @@ public override async Task Member_access_on_derived_materialized_entity_using_ca AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l].[CommanderName], [l].[Eradicated], CASE +SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l].[CommanderName], [l].[DeputyCommanderName], [l].[Eradicated], CASE WHEN [l].[Id] IS NOT NULL THEN N'LocustHorde' END AS [Discriminator] FROM [Factions] AS [f] @@ -3247,7 +3306,7 @@ public override async Task Navigation_access_on_derived_materialized_entity_usin AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l].[CommanderName], [l].[Eradicated], CASE +SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l].[CommanderName], [l].[DeputyCommanderName], [l].[Eradicated], CASE WHEN [l].[Id] IS NOT NULL THEN N'LocustHorde' END AS [Discriminator], [s].[ThreatLevel] AS [Threat] FROM [Factions] AS [f] @@ -3341,7 +3400,7 @@ public override async Task Include_on_derived_entity_using_OfType(bool async) AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l].[CommanderName], [l].[Eradicated], CASE +SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l].[CommanderName], [l].[DeputyCommanderName], [l].[Eradicated], CASE WHEN [l].[Id] IS NOT NULL THEN N'LocustHorde' END AS [Discriminator], [s].[Name], [s].[LocustHordeId], [s].[ThreatLevel], [s].[ThreatLevelByte], [s].[ThreatLevelNullableByte], [s].[DefeatedByNickname], [s].[DefeatedBySquadId], [s].[HighCommandId], [s0].[Name], [s0].[LocustHordeId], [s0].[ThreatLevel], [s0].[ThreatLevelByte], [s0].[ThreatLevelNullableByte], [s0].[DefeatedByNickname], [s0].[DefeatedBySquadId], [s0].[HighCommandId], [s0].[Discriminator] FROM [Factions] AS [f] @@ -3865,7 +3924,7 @@ public override async Task ThenInclude_collection_on_derived_after_derived_refer AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l].[CommanderName], [l].[Eradicated], CASE +SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l].[CommanderName], [l].[DeputyCommanderName], [l].[Eradicated], CASE WHEN [l].[Id] IS NOT NULL THEN N'LocustHorde' END AS [Discriminator], [s].[Name], [s].[LocustHordeId], [s].[ThreatLevel], [s].[ThreatLevelByte], [s].[ThreatLevelNullableByte], [s].[DefeatedByNickname], [s].[DefeatedBySquadId], [s].[HighCommandId], [s0].[Nickname], [s0].[SquadId], [s0].[AssignedCityName], [s0].[CityOfBirthName], [s0].[FullName], [s0].[HasSoulPatch], [s0].[LeaderNickname], [s0].[LeaderSquadId], [s0].[Rank], [s0].[Discriminator], [s1].[Nickname], [s1].[SquadId], [s1].[AssignedCityName], [s1].[CityOfBirthName], [s1].[FullName], [s1].[HasSoulPatch], [s1].[LeaderNickname], [s1].[LeaderSquadId], [s1].[Rank], [s1].[Discriminator] FROM [Factions] AS [f] @@ -3928,7 +3987,7 @@ public override async Task ThenInclude_reference_on_derived_after_derived_collec AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l].[CommanderName], [l].[Eradicated], CASE +SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l].[CommanderName], [l].[DeputyCommanderName], [l].[Eradicated], CASE WHEN [l].[Id] IS NOT NULL THEN N'LocustHorde' END AS [Discriminator], [s0].[Name], [s0].[LocustHordeId], [s0].[ThreatLevel], [s0].[ThreatLevelByte], [s0].[ThreatLevelNullableByte], [s0].[DefeatedByNickname], [s0].[DefeatedBySquadId], [s0].[HighCommandId], [s0].[Discriminator], [s0].[Nickname], [s0].[SquadId], [s0].[AssignedCityName], [s0].[CityOfBirthName], [s0].[FullName], [s0].[HasSoulPatch], [s0].[LeaderNickname], [s0].[LeaderSquadId], [s0].[Rank], [s0].[Discriminator0] FROM [Factions] AS [f] @@ -3957,7 +4016,7 @@ public override async Task Multiple_derived_included_on_one_method(bool async) AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l].[CommanderName], [l].[Eradicated], CASE +SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l].[CommanderName], [l].[DeputyCommanderName], [l].[Eradicated], CASE WHEN [l].[Id] IS NOT NULL THEN N'LocustHorde' END AS [Discriminator], [s].[Name], [s].[LocustHordeId], [s].[ThreatLevel], [s].[ThreatLevelByte], [s].[ThreatLevelNullableByte], [s].[DefeatedByNickname], [s].[DefeatedBySquadId], [s].[HighCommandId], [s0].[Nickname], [s0].[SquadId], [s0].[AssignedCityName], [s0].[CityOfBirthName], [s0].[FullName], [s0].[HasSoulPatch], [s0].[LeaderNickname], [s0].[LeaderSquadId], [s0].[Rank], [s0].[Discriminator], [s1].[Nickname], [s1].[SquadId], [s1].[AssignedCityName], [s1].[CityOfBirthName], [s1].[FullName], [s1].[HasSoulPatch], [s1].[LeaderNickname], [s1].[LeaderSquadId], [s1].[Rank], [s1].[Discriminator] FROM [Factions] AS [f] @@ -5145,10 +5204,10 @@ public override async Task Null_semantics_on_nullable_bool_from_inner_join_subqu AssertSql( """ -SELECT [s].[Id], [s].[CapitalName], [s].[Name], [s].[ServerAddress], [s].[CommanderName], [s].[Eradicated], [s].[Discriminator] +SELECT [s].[Id], [s].[CapitalName], [s].[Name], [s].[ServerAddress], [s].[CommanderName], [s].[DeputyCommanderName], [s].[Eradicated], [s].[Discriminator] FROM [LocustLeaders] AS [l] INNER JOIN ( - SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l0].[CommanderName], [l0].[Eradicated], CASE + SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l0].[CommanderName], [l0].[DeputyCommanderName], [l0].[Eradicated], CASE WHEN [l0].[Id] IS NOT NULL THEN N'LocustHorde' END AS [Discriminator] FROM [Factions] AS [f] @@ -5165,10 +5224,10 @@ public override async Task Null_semantics_on_nullable_bool_from_left_join_subque AssertSql( """ -SELECT [s].[Id], [s].[CapitalName], [s].[Name], [s].[ServerAddress], [s].[CommanderName], [s].[Eradicated], [s].[Discriminator] +SELECT [s].[Id], [s].[CapitalName], [s].[Name], [s].[ServerAddress], [s].[CommanderName], [s].[DeputyCommanderName], [s].[Eradicated], [s].[Discriminator] FROM [LocustLeaders] AS [l] LEFT JOIN ( - SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l0].[CommanderName], [l0].[Eradicated], CASE + SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l0].[CommanderName], [l0].[DeputyCommanderName], [l0].[Eradicated], CASE WHEN [l0].[Id] IS NOT NULL THEN N'LocustHorde' END AS [Discriminator] FROM [Factions] AS [f] @@ -6563,9 +6622,7 @@ SELECT CASE END FROM [Gears] AS [g] ORDER BY CASE - WHEN CASE - WHEN [g].[LeaderNickname] IS NOT NULL THEN ~CAST(CAST(LEN([g].[Nickname]) AS int) ^ 5 AS bit) - END IS NOT NULL THEN CAST(1 AS bit) + WHEN [g].[LeaderNickname] IS NOT NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END """); @@ -6804,7 +6861,7 @@ public override async Task Nav_rewrite_with_convert2(bool async) AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l].[CommanderName], [l].[Eradicated], CASE +SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l].[CommanderName], [l].[DeputyCommanderName], [l].[Eradicated], CASE WHEN [l].[Id] IS NOT NULL THEN N'LocustHorde' END AS [Discriminator] FROM [Factions] AS [f] @@ -6825,7 +6882,7 @@ public override async Task Nav_rewrite_with_convert3(bool async) AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l].[CommanderName], [l].[Eradicated], CASE +SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l].[CommanderName], [l].[DeputyCommanderName], [l].[Eradicated], CASE WHEN [l].[Id] IS NOT NULL THEN N'LocustHorde' END AS [Discriminator] FROM [Factions] AS [f] @@ -7141,7 +7198,7 @@ public override async Task Navigation_based_on_complex_expression1(bool async) AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l].[CommanderName], [l].[Eradicated], CASE +SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l].[CommanderName], [l].[DeputyCommanderName], [l].[Eradicated], CASE WHEN [l].[Id] IS NOT NULL THEN N'LocustHorde' END AS [Discriminator] FROM [Factions] AS [f] @@ -7164,7 +7221,7 @@ public override async Task Navigation_based_on_complex_expression2(bool async) AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l].[CommanderName], [l].[Eradicated], CASE +SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l].[CommanderName], [l].[DeputyCommanderName], [l].[Eradicated], CASE WHEN [l].[Id] IS NOT NULL THEN N'LocustHorde' END AS [Discriminator] FROM [Factions] AS [f] @@ -9056,7 +9113,7 @@ WHEN [l0].[Name] IS NOT NULL THEN N'LocustCommander' END AS [Discriminator], [s].[Nickname], [s].[SquadId], [s].[AssignedCityName], [s].[CityOfBirthName], [s].[FullName], [s].[HasSoulPatch], [s].[LeaderNickname], [s].[LeaderSquadId], [s].[Rank], [s].[Discriminator], CASE WHEN [s].[Nickname] IS NULL OR [s].[SquadId] IS NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) -END AS [IsNull], [s0].[Id], [s0].[CapitalName], [s0].[Name], [s0].[ServerAddress], [s0].[CommanderName], [s0].[Eradicated], CASE +END AS [IsNull], [s0].[Id], [s0].[CapitalName], [s0].[Name], [s0].[ServerAddress], [s0].[CommanderName], [s0].[DeputyCommanderName], [s0].[Eradicated], CASE WHEN [s0].[Id] IS NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [IsNull], [l2].[Id], [l2].[IsOperational], [l2].[Name], CASE @@ -9073,7 +9130,7 @@ FROM [Gears] AS [g] LEFT JOIN [Officers] AS [o] ON [g].[Nickname] = [o].[Nickname] AND [g].[SquadId] = [o].[SquadId] ) AS [s] ON [l0].[DefeatedByNickname] = [s].[Nickname] AND [l0].[DefeatedBySquadId] = [s].[SquadId] LEFT JOIN ( - SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l1].[CommanderName], [l1].[Eradicated] + SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l1].[CommanderName], [l1].[DeputyCommanderName], [l1].[Eradicated] FROM [Factions] AS [f] INNER JOIN [LocustHordes] AS [l1] ON [f].[Id] = [l1].[Id] ) AS [s0] ON [l].[Name] = [s0].[CommanderName] @@ -9333,7 +9390,7 @@ public override async Task Comparison_with_value_converted_subclass(bool async) AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l].[CommanderName], [l].[Eradicated], CASE +SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l].[CommanderName], [l].[DeputyCommanderName], [l].[Eradicated], CASE WHEN [l].[Id] IS NOT NULL THEN N'LocustHorde' END AS [Discriminator] FROM [Factions] AS [f] @@ -9459,7 +9516,7 @@ public override async Task Include_after_Select_throws(bool async) AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l].[CommanderName], [l].[Eradicated], CASE +SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l].[CommanderName], [l].[DeputyCommanderName], [l].[Eradicated], CASE WHEN [l].[Id] IS NOT NULL THEN N'LocustHorde' END AS [Discriminator], [c].[Name], [c].[Location], [c].[Nation] FROM [Factions] AS [f] @@ -9546,7 +9603,7 @@ public override async Task Project_derivied_entity_with_convert_to_parent(bool a AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l].[CommanderName], [l].[Eradicated], CASE +SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l].[CommanderName], [l].[DeputyCommanderName], [l].[Eradicated], CASE WHEN [l].[Id] IS NOT NULL THEN N'LocustHorde' END AS [Discriminator] FROM [Factions] AS [f] @@ -9713,7 +9770,7 @@ public override async Task Include_on_derived_entity_with_cast(bool async) AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l].[CommanderName], [l].[Eradicated], CASE +SELECT [f].[Id], [f].[CapitalName], [f].[Name], [f].[ServerAddress], [l].[CommanderName], [l].[DeputyCommanderName], [l].[Eradicated], CASE WHEN [l].[Id] IS NOT NULL THEN N'LocustHorde' END AS [Discriminator], [c].[Name], [c].[Location], [c].[Nation] FROM [Factions] AS [f] diff --git a/src/efcore/test/EFCore.SqlServer.FunctionalTests/Query/TemporalGearsOfWarQuerySqlServerTest.cs b/src/efcore/test/EFCore.SqlServer.FunctionalTests/Query/TemporalGearsOfWarQuerySqlServerTest.cs index df6e31c2bed..b8f09ac6bb8 100644 --- a/src/efcore/test/EFCore.SqlServer.FunctionalTests/Query/TemporalGearsOfWarQuerySqlServerTest.cs +++ b/src/efcore/test/EFCore.SqlServer.FunctionalTests/Query/TemporalGearsOfWarQuerySqlServerTest.cs @@ -1,4 +1,4 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using Microsoft.EntityFrameworkCore.SqlServer.Internal; @@ -1066,7 +1066,7 @@ public override async Task Nav_rewrite_with_convert2(bool async) AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated] +SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated] FROM [Factions] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [f] LEFT JOIN [Cities] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [c] ON [f].[CapitalName] = [c].[Name] LEFT JOIN ( @@ -1157,7 +1157,7 @@ public override async Task Project_navigation_defined_on_derived_from_entity_wit SELECT [l].[Name], [l].[Discriminator], [l].[LocustHordeId], [l].[PeriodEnd], [l].[PeriodStart], [l].[ThreatLevel], [l].[ThreatLevelByte], [l].[ThreatLevelNullableByte], [l].[DefeatedByNickname], [l].[DefeatedBySquadId], [l].[HighCommandId], [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[PeriodEnd], [g].[PeriodStart], [g].[Rank], CASE WHEN [g].[Nickname] IS NULL OR [g].[SquadId] IS NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) -END AS [IsNull], [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated], CASE +END AS [IsNull], [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated], CASE WHEN [f].[Id] IS NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END AS [IsNull], [l0].[Id], [l0].[IsOperational], [l0].[Name], [l0].[PeriodEnd], [l0].[PeriodStart], CASE @@ -1293,7 +1293,7 @@ public override async Task Member_access_on_derived_materialized_entity_using_ca AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated] +SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated] FROM [Factions] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [f] ORDER BY [f].[Name] """); @@ -2470,7 +2470,7 @@ public override async Task Include_on_derived_entity_using_OfType(bool async) AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated], [l0].[Name], [l0].[Discriminator], [l0].[LocustHordeId], [l0].[PeriodEnd], [l0].[PeriodStart], [l0].[ThreatLevel], [l0].[ThreatLevelByte], [l0].[ThreatLevelNullableByte], [l0].[DefeatedByNickname], [l0].[DefeatedBySquadId], [l0].[HighCommandId], [l1].[Name], [l1].[Discriminator], [l1].[LocustHordeId], [l1].[PeriodEnd], [l1].[PeriodStart], [l1].[ThreatLevel], [l1].[ThreatLevelByte], [l1].[ThreatLevelNullableByte], [l1].[DefeatedByNickname], [l1].[DefeatedBySquadId], [l1].[HighCommandId] +SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated], [l0].[Name], [l0].[Discriminator], [l0].[LocustHordeId], [l0].[PeriodEnd], [l0].[PeriodStart], [l0].[ThreatLevel], [l0].[ThreatLevelByte], [l0].[ThreatLevelNullableByte], [l0].[DefeatedByNickname], [l0].[DefeatedBySquadId], [l0].[HighCommandId], [l1].[Name], [l1].[Discriminator], [l1].[LocustHordeId], [l1].[PeriodEnd], [l1].[PeriodStart], [l1].[ThreatLevel], [l1].[ThreatLevelByte], [l1].[ThreatLevelNullableByte], [l1].[DefeatedByNickname], [l1].[DefeatedBySquadId], [l1].[HighCommandId] FROM [Factions] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [f] LEFT JOIN ( SELECT [l].[Name], [l].[Discriminator], [l].[LocustHordeId], [l].[PeriodEnd], [l].[PeriodStart], [l].[ThreatLevel], [l].[ThreatLevelByte], [l].[ThreatLevelNullableByte], [l].[DefeatedByNickname], [l].[DefeatedBySquadId], [l].[HighCommandId] @@ -2482,6 +2482,61 @@ LEFT JOIN ( """); } + public override async Task Conditional_Navigation_With_Trivial_Member_Access(bool async) + { + await base.Conditional_Navigation_With_Trivial_Member_Access(async); + + AssertSql( + """ +SELECT [g].[Nickname] +FROM [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g] +LEFT JOIN [Cities] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [c] ON [g].[AssignedCityName] = [c].[Name] +INNER JOIN [Cities] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [c0] ON [g].[CityOfBirthName] = [c0].[Name] +WHERE CASE + WHEN [c].[Name] IS NOT NULL THEN [c].[Name] + ELSE [c0].[Name] +END <> N'Ephyra' +"""); + } + + public override async Task Conditional_Navigation_With_Member_Access_On_Same_Type(bool async) + { + await base.Conditional_Navigation_With_Member_Access_On_Same_Type(async); + + AssertSql( + """ +SELECT [g].[Nickname], [g].[FullName] +FROM [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g] +LEFT JOIN [Cities] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [c] ON [g].[AssignedCityName] = [c].[Name] +INNER JOIN [Cities] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [c0] ON [g].[CityOfBirthName] = [c0].[Name] +WHERE CASE + WHEN [c].[Name] IS NOT NULL THEN [c].[Nation] + ELSE [c0].[Nation] +END = N'Tyrus' +"""); + } + + public override async Task Conditional_Navigation_With_Member_Access_On_Related_Types(bool async) + { + await base.Conditional_Navigation_With_Member_Access_On_Related_Types(async); + + AssertSql( + """ +SELECT [f].[Name] +FROM [Factions] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [f] +LEFT JOIN [LocustLeaders] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] ON [f].[DeputyCommanderName] = [l].[Name] +LEFT JOIN ( + SELECT [l0].[Name], [l0].[ThreatLevel] + FROM [LocustLeaders] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l0] + WHERE [l0].[Discriminator] = N'LocustCommander' +) AS [l1] ON [f].[CommanderName] = [l1].[Name] +WHERE CASE + WHEN [l].[Name] IS NOT NULL THEN [l].[ThreatLevel] + ELSE [l1].[ThreatLevel] +END = CAST(4 AS smallint) +"""); + } + public override async Task Select_Singleton_Navigation_With_Member_Access(bool async) { await base.Select_Singleton_Navigation_With_Member_Access(async); @@ -2689,7 +2744,7 @@ public override async Task Include_after_Select_throws(bool async) AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated], [c].[Name], [c].[Location], [c].[Nation], [c].[PeriodEnd], [c].[PeriodStart] +SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated], [c].[Name], [c].[Location], [c].[Nation], [c].[PeriodEnd], [c].[PeriodStart] FROM [Factions] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [f] LEFT JOIN [Cities] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [c] ON [f].[CapitalName] = [c].[Name] """); @@ -3568,7 +3623,7 @@ public override async Task Nav_rewrite_with_convert3(bool async) AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated] +SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated] FROM [Factions] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [f] LEFT JOIN [Cities] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [c] ON [f].[CapitalName] = [c].[Name] LEFT JOIN ( @@ -3913,10 +3968,10 @@ public override async Task Null_semantics_on_nullable_bool_from_inner_join_subqu AssertSql( """ -SELECT [f0].[Id], [f0].[CapitalName], [f0].[Discriminator], [f0].[Name], [f0].[PeriodEnd], [f0].[PeriodStart], [f0].[ServerAddress], [f0].[CommanderName], [f0].[Eradicated] +SELECT [f0].[Id], [f0].[CapitalName], [f0].[Discriminator], [f0].[Name], [f0].[PeriodEnd], [f0].[PeriodStart], [f0].[ServerAddress], [f0].[CommanderName], [f0].[DeputyCommanderName], [f0].[Eradicated] FROM [LocustLeaders] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] INNER JOIN ( - SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated] + SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated] FROM [Factions] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [f] WHERE [f].[Name] = N'Swarm' ) AS [f0] ON [l].[Name] = [f0].[CommanderName] @@ -4740,7 +4795,7 @@ public override async Task ThenInclude_collection_on_derived_after_derived_refer AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated], [l0].[Name], [l0].[Discriminator], [l0].[LocustHordeId], [l0].[PeriodEnd], [l0].[PeriodStart], [l0].[ThreatLevel], [l0].[ThreatLevelByte], [l0].[ThreatLevelNullableByte], [l0].[DefeatedByNickname], [l0].[DefeatedBySquadId], [l0].[HighCommandId], [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[PeriodEnd], [g].[PeriodStart], [g].[Rank], [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOfBirthName], [g0].[Discriminator], [g0].[FullName], [g0].[HasSoulPatch], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[PeriodEnd], [g0].[PeriodStart], [g0].[Rank] +SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated], [l0].[Name], [l0].[Discriminator], [l0].[LocustHordeId], [l0].[PeriodEnd], [l0].[PeriodStart], [l0].[ThreatLevel], [l0].[ThreatLevelByte], [l0].[ThreatLevelNullableByte], [l0].[DefeatedByNickname], [l0].[DefeatedBySquadId], [l0].[HighCommandId], [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[PeriodEnd], [g].[PeriodStart], [g].[Rank], [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOfBirthName], [g0].[Discriminator], [g0].[FullName], [g0].[HasSoulPatch], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[PeriodEnd], [g0].[PeriodStart], [g0].[Rank] FROM [Factions] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [f] LEFT JOIN ( SELECT [l].[Name], [l].[Discriminator], [l].[LocustHordeId], [l].[PeriodEnd], [l].[PeriodStart], [l].[ThreatLevel], [l].[ThreatLevelByte], [l].[ThreatLevelNullableByte], [l].[DefeatedByNickname], [l].[DefeatedBySquadId], [l].[HighCommandId] @@ -4988,7 +5043,7 @@ public override async Task Multiple_derived_included_on_one_method(bool async) AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated], [l0].[Name], [l0].[Discriminator], [l0].[LocustHordeId], [l0].[PeriodEnd], [l0].[PeriodStart], [l0].[ThreatLevel], [l0].[ThreatLevelByte], [l0].[ThreatLevelNullableByte], [l0].[DefeatedByNickname], [l0].[DefeatedBySquadId], [l0].[HighCommandId], [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[PeriodEnd], [g].[PeriodStart], [g].[Rank], [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOfBirthName], [g0].[Discriminator], [g0].[FullName], [g0].[HasSoulPatch], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[PeriodEnd], [g0].[PeriodStart], [g0].[Rank] +SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated], [l0].[Name], [l0].[Discriminator], [l0].[LocustHordeId], [l0].[PeriodEnd], [l0].[PeriodStart], [l0].[ThreatLevel], [l0].[ThreatLevelByte], [l0].[ThreatLevelNullableByte], [l0].[DefeatedByNickname], [l0].[DefeatedBySquadId], [l0].[HighCommandId], [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[Discriminator], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[PeriodEnd], [g].[PeriodStart], [g].[Rank], [g0].[Nickname], [g0].[SquadId], [g0].[AssignedCityName], [g0].[CityOfBirthName], [g0].[Discriminator], [g0].[FullName], [g0].[HasSoulPatch], [g0].[LeaderNickname], [g0].[LeaderSquadId], [g0].[PeriodEnd], [g0].[PeriodStart], [g0].[Rank] FROM [Factions] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [f] LEFT JOIN ( SELECT [l].[Name], [l].[Discriminator], [l].[LocustHordeId], [l].[PeriodEnd], [l].[PeriodStart], [l].[ThreatLevel], [l].[ThreatLevelByte], [l].[ThreatLevelNullableByte], [l].[DefeatedByNickname], [l].[DefeatedBySquadId], [l].[HighCommandId] @@ -5024,7 +5079,7 @@ public override async Task Include_on_derived_entity_with_cast(bool async) AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated], [c].[Name], [c].[Location], [c].[Nation], [c].[PeriodEnd], [c].[PeriodStart] +SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated], [c].[Name], [c].[Location], [c].[Nation], [c].[PeriodEnd], [c].[PeriodStart] FROM [Factions] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [f] LEFT JOIN [Cities] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [c] ON [f].[CapitalName] = [c].[Name] ORDER BY [f].[Id] @@ -5603,10 +5658,10 @@ public override async Task Null_semantics_on_nullable_bool_from_left_join_subque AssertSql( """ -SELECT [f0].[Id], [f0].[CapitalName], [f0].[Discriminator], [f0].[Name], [f0].[PeriodEnd], [f0].[PeriodStart], [f0].[ServerAddress], [f0].[CommanderName], [f0].[Eradicated] +SELECT [f0].[Id], [f0].[CapitalName], [f0].[Discriminator], [f0].[Name], [f0].[PeriodEnd], [f0].[PeriodStart], [f0].[ServerAddress], [f0].[CommanderName], [f0].[DeputyCommanderName], [f0].[Eradicated] FROM [LocustLeaders] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [l] LEFT JOIN ( - SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated] + SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated] FROM [Factions] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [f] WHERE [f].[Name] = N'Swarm' ) AS [f0] ON [l].[Name] = [f0].[CommanderName] @@ -5812,7 +5867,7 @@ public override async Task Navigation_based_on_complex_expression2(bool async) AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated] +SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated] FROM [Factions] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [f] LEFT JOIN ( SELECT [l].[Name] @@ -5998,7 +6053,7 @@ public override async Task Navigation_based_on_complex_expression1(bool async) AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated] +SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated] FROM [Factions] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [f] LEFT JOIN ( SELECT [l].[Name] @@ -6112,7 +6167,7 @@ public override async Task Comparison_with_value_converted_subclass(bool async) AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated] +SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated] FROM [Factions] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [f] WHERE [f].[ServerAddress] = CAST(N'127.0.0.1' AS nvarchar(45)) """); @@ -6138,7 +6193,7 @@ public override async Task Navigation_access_on_derived_materialized_entity_usin AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated], [l0].[ThreatLevel] AS [Threat] +SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated], [l0].[ThreatLevel] AS [Threat] FROM [Factions] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [f] LEFT JOIN ( SELECT [l].[Name], [l].[ThreatLevel] @@ -6302,7 +6357,7 @@ public override async Task Project_derivied_entity_with_convert_to_parent(bool a AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated] +SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated] FROM [Factions] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [f] """); } @@ -6344,7 +6399,7 @@ public override async Task ThenInclude_reference_on_derived_after_derived_collec AssertSql( """ -SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[Eradicated], [s].[Name], [s].[Discriminator], [s].[LocustHordeId], [s].[PeriodEnd], [s].[PeriodStart], [s].[ThreatLevel], [s].[ThreatLevelByte], [s].[ThreatLevelNullableByte], [s].[DefeatedByNickname], [s].[DefeatedBySquadId], [s].[HighCommandId], [s].[Nickname], [s].[SquadId], [s].[AssignedCityName], [s].[CityOfBirthName], [s].[Discriminator0], [s].[FullName], [s].[HasSoulPatch], [s].[LeaderNickname], [s].[LeaderSquadId], [s].[PeriodEnd0], [s].[PeriodStart0], [s].[Rank] +SELECT [f].[Id], [f].[CapitalName], [f].[Discriminator], [f].[Name], [f].[PeriodEnd], [f].[PeriodStart], [f].[ServerAddress], [f].[CommanderName], [f].[DeputyCommanderName], [f].[Eradicated], [s].[Name], [s].[Discriminator], [s].[LocustHordeId], [s].[PeriodEnd], [s].[PeriodStart], [s].[ThreatLevel], [s].[ThreatLevelByte], [s].[ThreatLevelNullableByte], [s].[DefeatedByNickname], [s].[DefeatedBySquadId], [s].[HighCommandId], [s].[Nickname], [s].[SquadId], [s].[AssignedCityName], [s].[CityOfBirthName], [s].[Discriminator0], [s].[FullName], [s].[HasSoulPatch], [s].[LeaderNickname], [s].[LeaderSquadId], [s].[PeriodEnd0], [s].[PeriodStart0], [s].[Rank] FROM [Factions] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [f] LEFT JOIN ( SELECT [l].[Name], [l].[Discriminator], [l].[LocustHordeId], [l].[PeriodEnd], [l].[PeriodStart], [l].[ThreatLevel], [l].[ThreatLevelByte], [l].[ThreatLevelNullableByte], [l].[DefeatedByNickname], [l].[DefeatedBySquadId], [l].[HighCommandId], [g].[Nickname], [g].[SquadId], [g].[AssignedCityName], [g].[CityOfBirthName], [g].[Discriminator] AS [Discriminator0], [g].[FullName], [g].[HasSoulPatch], [g].[LeaderNickname], [g].[LeaderSquadId], [g].[PeriodEnd] AS [PeriodEnd0], [g].[PeriodStart] AS [PeriodStart0], [g].[Rank] @@ -7323,9 +7378,7 @@ SELECT CASE END FROM [Gears] FOR SYSTEM_TIME AS OF '2010-01-01T00:00:00.0000000' AS [g] ORDER BY CASE - WHEN CASE - WHEN [g].[LeaderNickname] IS NOT NULL THEN ~CAST(CAST(LEN([g].[Nickname]) AS int) ^ 5 AS bit) - END IS NOT NULL THEN CAST(1 AS bit) + WHEN [g].[LeaderNickname] IS NOT NULL THEN CAST(1 AS bit) ELSE CAST(0 AS bit) END """); diff --git a/src/efcore/test/EFCore.Sqlite.FunctionalTests/Query/GearsOfWarQuerySqliteTest.cs b/src/efcore/test/EFCore.Sqlite.FunctionalTests/Query/GearsOfWarQuerySqliteTest.cs index 8f1b52e55cb..d5f16a848b3 100644 --- a/src/efcore/test/EFCore.Sqlite.FunctionalTests/Query/GearsOfWarQuerySqliteTest.cs +++ b/src/efcore/test/EFCore.Sqlite.FunctionalTests/Query/GearsOfWarQuerySqliteTest.cs @@ -435,7 +435,7 @@ public override async Task Include_on_derived_entity_using_OfType(bool async) AssertSql( """ -SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."Eradicated", "l0"."Name", "l0"."Discriminator", "l0"."LocustHordeId", "l0"."ThreatLevel", "l0"."ThreatLevelByte", "l0"."ThreatLevelNullableByte", "l0"."DefeatedByNickname", "l0"."DefeatedBySquadId", "l0"."HighCommandId", "l1"."Name", "l1"."Discriminator", "l1"."LocustHordeId", "l1"."ThreatLevel", "l1"."ThreatLevelByte", "l1"."ThreatLevelNullableByte", "l1"."DefeatedByNickname", "l1"."DefeatedBySquadId", "l1"."HighCommandId" +SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."DeputyCommanderName", "f"."Eradicated", "l0"."Name", "l0"."Discriminator", "l0"."LocustHordeId", "l0"."ThreatLevel", "l0"."ThreatLevelByte", "l0"."ThreatLevelNullableByte", "l0"."DefeatedByNickname", "l0"."DefeatedBySquadId", "l0"."HighCommandId", "l1"."Name", "l1"."Discriminator", "l1"."LocustHordeId", "l1"."ThreatLevel", "l1"."ThreatLevelByte", "l1"."ThreatLevelNullableByte", "l1"."DefeatedByNickname", "l1"."DefeatedBySquadId", "l1"."HighCommandId" FROM "Factions" AS "f" LEFT JOIN ( SELECT "l"."Name", "l"."Discriminator", "l"."LocustHordeId", "l"."ThreatLevel", "l"."ThreatLevelByte", "l"."ThreatLevelNullableByte", "l"."DefeatedByNickname", "l"."DefeatedBySquadId", "l"."HighCommandId" @@ -601,7 +601,7 @@ public override async Task Navigation_based_on_complex_expression1(bool async) AssertSql( """ -SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."Eradicated" +SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."DeputyCommanderName", "f"."Eradicated" FROM "Factions" AS "f" LEFT JOIN ( SELECT "l"."Name" @@ -1872,7 +1872,7 @@ public override async Task Navigation_based_on_complex_expression2(bool async) AssertSql( """ -SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."Eradicated" +SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."DeputyCommanderName", "f"."Eradicated" FROM "Factions" AS "f" LEFT JOIN ( SELECT "l"."Name" @@ -2019,7 +2019,7 @@ public override async Task Member_access_on_derived_materialized_entity_using_ca AssertSql( """ -SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."Eradicated" +SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."DeputyCommanderName", "f"."Eradicated" FROM "Factions" AS "f" ORDER BY "f"."Name" """); @@ -2214,7 +2214,7 @@ public override async Task Include_after_Select_throws(bool async) AssertSql( """ -SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."Eradicated", "c"."Name", "c"."Location", "c"."Nation" +SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."DeputyCommanderName", "f"."Eradicated", "c"."Name", "c"."Location", "c"."Nation" FROM "Factions" AS "f" LEFT JOIN "Cities" AS "c" ON "f"."CapitalName" = "c"."Name" """); @@ -2421,7 +2421,7 @@ public override async Task Comparison_with_value_converted_subclass(bool async) AssertSql( """ -SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."Eradicated" +SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."DeputyCommanderName", "f"."Eradicated" FROM "Factions" AS "f" WHERE "f"."ServerAddress" = CAST('127.0.0.1' AS TEXT) """); @@ -3382,7 +3382,7 @@ public override async Task Nav_rewrite_with_convert3(bool async) AssertSql( """ -SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."Eradicated" +SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."DeputyCommanderName", "f"."Eradicated" FROM "Factions" AS "f" LEFT JOIN "Cities" AS "c" ON "f"."CapitalName" = "c"."Name" LEFT JOIN ( @@ -3587,7 +3587,7 @@ public override async Task Nav_rewrite_with_convert2(bool async) AssertSql( """ -SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."Eradicated" +SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."DeputyCommanderName", "f"."Eradicated" FROM "Factions" AS "f" LEFT JOIN "Cities" AS "c" ON "f"."CapitalName" = "c"."Name" LEFT JOIN ( @@ -4192,7 +4192,7 @@ public override async Task Project_derivied_entity_with_convert_to_parent(bool a AssertSql( """ -SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."Eradicated" +SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."DeputyCommanderName", "f"."Eradicated" FROM "Factions" AS "f" """); } @@ -4373,7 +4373,7 @@ public override async Task Navigation_access_on_derived_materialized_entity_usin AssertSql( """ -SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."Eradicated", "l0"."ThreatLevel" AS "Threat" +SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."DeputyCommanderName", "f"."Eradicated", "l0"."ThreatLevel" AS "Threat" FROM "Factions" AS "f" LEFT JOIN ( SELECT "l"."Name", "l"."ThreatLevel" @@ -4610,10 +4610,10 @@ public override async Task Null_semantics_on_nullable_bool_from_left_join_subque AssertSql( """ -SELECT "f0"."Id", "f0"."CapitalName", "f0"."Discriminator", "f0"."Name", "f0"."ServerAddress", "f0"."CommanderName", "f0"."Eradicated" +SELECT "f0"."Id", "f0"."CapitalName", "f0"."Discriminator", "f0"."Name", "f0"."ServerAddress", "f0"."CommanderName", "f0"."DeputyCommanderName", "f0"."Eradicated" FROM "LocustLeaders" AS "l" LEFT JOIN ( - SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."Eradicated" + SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."DeputyCommanderName", "f"."Eradicated" FROM "Factions" AS "f" WHERE "f"."Name" = 'Swarm' ) AS "f0" ON "l"."Name" = "f0"."CommanderName" @@ -4678,10 +4678,10 @@ public override async Task Null_semantics_on_nullable_bool_from_inner_join_subqu AssertSql( """ -SELECT "f0"."Id", "f0"."CapitalName", "f0"."Discriminator", "f0"."Name", "f0"."ServerAddress", "f0"."CommanderName", "f0"."Eradicated" +SELECT "f0"."Id", "f0"."CapitalName", "f0"."Discriminator", "f0"."Name", "f0"."ServerAddress", "f0"."CommanderName", "f0"."DeputyCommanderName", "f0"."Eradicated" FROM "LocustLeaders" AS "l" INNER JOIN ( - SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."Eradicated" + SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."DeputyCommanderName", "f"."Eradicated" FROM "Factions" AS "f" WHERE "f"."Name" = 'Swarm' ) AS "f0" ON "l"."Name" = "f0"."CommanderName" @@ -4880,7 +4880,7 @@ public override async Task Project_navigation_defined_on_derived_from_entity_wit AssertSql( """ -SELECT "l"."Name", "l"."Discriminator", "l"."LocustHordeId", "l"."ThreatLevel", "l"."ThreatLevelByte", "l"."ThreatLevelNullableByte", "l"."DefeatedByNickname", "l"."DefeatedBySquadId", "l"."HighCommandId", "g"."Nickname", "g"."SquadId", "g"."AssignedCityName", "g"."CityOfBirthName", "g"."Discriminator", "g"."FullName", "g"."HasSoulPatch", "g"."LeaderNickname", "g"."LeaderSquadId", "g"."Rank", "g"."Nickname" IS NULL OR "g"."SquadId" IS NULL AS "IsNull", "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."Eradicated", "f"."Id" IS NULL AS "IsNull", "l0"."Id", "l0"."IsOperational", "l0"."Name", "l0"."Id" IS NULL AS "IsNull" +SELECT "l"."Name", "l"."Discriminator", "l"."LocustHordeId", "l"."ThreatLevel", "l"."ThreatLevelByte", "l"."ThreatLevelNullableByte", "l"."DefeatedByNickname", "l"."DefeatedBySquadId", "l"."HighCommandId", "g"."Nickname", "g"."SquadId", "g"."AssignedCityName", "g"."CityOfBirthName", "g"."Discriminator", "g"."FullName", "g"."HasSoulPatch", "g"."LeaderNickname", "g"."LeaderSquadId", "g"."Rank", "g"."Nickname" IS NULL OR "g"."SquadId" IS NULL AS "IsNull", "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."DeputyCommanderName", "f"."Eradicated", "f"."Id" IS NULL AS "IsNull", "l0"."Id", "l0"."IsOperational", "l0"."Name", "l0"."Id" IS NULL AS "IsNull" FROM "LocustLeaders" AS "l" LEFT JOIN "Gears" AS "g" ON "l"."DefeatedByNickname" = "g"."Nickname" AND "l"."DefeatedBySquadId" = "g"."SquadId" LEFT JOIN "Factions" AS "f" ON "l"."Name" = "f"."CommanderName" @@ -5962,7 +5962,7 @@ public override async Task ThenInclude_reference_on_derived_after_derived_collec AssertSql( """ -SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."Eradicated", "s"."Name", "s"."Discriminator", "s"."LocustHordeId", "s"."ThreatLevel", "s"."ThreatLevelByte", "s"."ThreatLevelNullableByte", "s"."DefeatedByNickname", "s"."DefeatedBySquadId", "s"."HighCommandId", "s"."Nickname", "s"."SquadId", "s"."AssignedCityName", "s"."CityOfBirthName", "s"."Discriminator0", "s"."FullName", "s"."HasSoulPatch", "s"."LeaderNickname", "s"."LeaderSquadId", "s"."Rank" +SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."DeputyCommanderName", "f"."Eradicated", "s"."Name", "s"."Discriminator", "s"."LocustHordeId", "s"."ThreatLevel", "s"."ThreatLevelByte", "s"."ThreatLevelNullableByte", "s"."DefeatedByNickname", "s"."DefeatedBySquadId", "s"."HighCommandId", "s"."Nickname", "s"."SquadId", "s"."AssignedCityName", "s"."CityOfBirthName", "s"."Discriminator0", "s"."FullName", "s"."HasSoulPatch", "s"."LeaderNickname", "s"."LeaderSquadId", "s"."Rank" FROM "Factions" AS "f" LEFT JOIN ( SELECT "l"."Name", "l"."Discriminator", "l"."LocustHordeId", "l"."ThreatLevel", "l"."ThreatLevelByte", "l"."ThreatLevelNullableByte", "l"."DefeatedByNickname", "l"."DefeatedBySquadId", "l"."HighCommandId", "g"."Nickname", "g"."SquadId", "g"."AssignedCityName", "g"."CityOfBirthName", "g"."Discriminator" AS "Discriminator0", "g"."FullName", "g"."HasSoulPatch", "g"."LeaderNickname", "g"."LeaderSquadId", "g"."Rank" @@ -5997,7 +5997,7 @@ public override async Task ThenInclude_collection_on_derived_after_derived_refer AssertSql( """ -SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."Eradicated", "l0"."Name", "l0"."Discriminator", "l0"."LocustHordeId", "l0"."ThreatLevel", "l0"."ThreatLevelByte", "l0"."ThreatLevelNullableByte", "l0"."DefeatedByNickname", "l0"."DefeatedBySquadId", "l0"."HighCommandId", "g"."Nickname", "g"."SquadId", "g"."AssignedCityName", "g"."CityOfBirthName", "g"."Discriminator", "g"."FullName", "g"."HasSoulPatch", "g"."LeaderNickname", "g"."LeaderSquadId", "g"."Rank", "g0"."Nickname", "g0"."SquadId", "g0"."AssignedCityName", "g0"."CityOfBirthName", "g0"."Discriminator", "g0"."FullName", "g0"."HasSoulPatch", "g0"."LeaderNickname", "g0"."LeaderSquadId", "g0"."Rank" +SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."DeputyCommanderName", "f"."Eradicated", "l0"."Name", "l0"."Discriminator", "l0"."LocustHordeId", "l0"."ThreatLevel", "l0"."ThreatLevelByte", "l0"."ThreatLevelNullableByte", "l0"."DefeatedByNickname", "l0"."DefeatedBySquadId", "l0"."HighCommandId", "g"."Nickname", "g"."SquadId", "g"."AssignedCityName", "g"."CityOfBirthName", "g"."Discriminator", "g"."FullName", "g"."HasSoulPatch", "g"."LeaderNickname", "g"."LeaderSquadId", "g"."Rank", "g0"."Nickname", "g0"."SquadId", "g0"."AssignedCityName", "g0"."CityOfBirthName", "g0"."Discriminator", "g0"."FullName", "g0"."HasSoulPatch", "g0"."LeaderNickname", "g0"."LeaderSquadId", "g0"."Rank" FROM "Factions" AS "f" LEFT JOIN ( SELECT "l"."Name", "l"."Discriminator", "l"."LocustHordeId", "l"."ThreatLevel", "l"."ThreatLevelByte", "l"."ThreatLevelNullableByte", "l"."DefeatedByNickname", "l"."DefeatedBySquadId", "l"."HighCommandId" @@ -6698,7 +6698,7 @@ public override async Task Multiple_derived_included_on_one_method(bool async) AssertSql( """ -SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."Eradicated", "l0"."Name", "l0"."Discriminator", "l0"."LocustHordeId", "l0"."ThreatLevel", "l0"."ThreatLevelByte", "l0"."ThreatLevelNullableByte", "l0"."DefeatedByNickname", "l0"."DefeatedBySquadId", "l0"."HighCommandId", "g"."Nickname", "g"."SquadId", "g"."AssignedCityName", "g"."CityOfBirthName", "g"."Discriminator", "g"."FullName", "g"."HasSoulPatch", "g"."LeaderNickname", "g"."LeaderSquadId", "g"."Rank", "g0"."Nickname", "g0"."SquadId", "g0"."AssignedCityName", "g0"."CityOfBirthName", "g0"."Discriminator", "g0"."FullName", "g0"."HasSoulPatch", "g0"."LeaderNickname", "g0"."LeaderSquadId", "g0"."Rank" +SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."DeputyCommanderName", "f"."Eradicated", "l0"."Name", "l0"."Discriminator", "l0"."LocustHordeId", "l0"."ThreatLevel", "l0"."ThreatLevelByte", "l0"."ThreatLevelNullableByte", "l0"."DefeatedByNickname", "l0"."DefeatedBySquadId", "l0"."HighCommandId", "g"."Nickname", "g"."SquadId", "g"."AssignedCityName", "g"."CityOfBirthName", "g"."Discriminator", "g"."FullName", "g"."HasSoulPatch", "g"."LeaderNickname", "g"."LeaderSquadId", "g"."Rank", "g0"."Nickname", "g0"."SquadId", "g0"."AssignedCityName", "g0"."CityOfBirthName", "g0"."Discriminator", "g0"."FullName", "g0"."HasSoulPatch", "g0"."LeaderNickname", "g0"."LeaderSquadId", "g0"."Rank" FROM "Factions" AS "f" LEFT JOIN ( SELECT "l"."Name", "l"."Discriminator", "l"."LocustHordeId", "l"."ThreatLevel", "l"."ThreatLevelByte", "l"."ThreatLevelNullableByte", "l"."DefeatedByNickname", "l"."DefeatedBySquadId", "l"."HighCommandId" @@ -6793,7 +6793,7 @@ public override async Task Include_on_derived_entity_with_cast(bool async) AssertSql( """ -SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."Eradicated", "c"."Name", "c"."Location", "c"."Nation" +SELECT "f"."Id", "f"."CapitalName", "f"."Discriminator", "f"."Name", "f"."ServerAddress", "f"."CommanderName", "f"."DeputyCommanderName", "f"."Eradicated", "c"."Name", "c"."Location", "c"."Nation" FROM "Factions" AS "f" LEFT JOIN "Cities" AS "c" ON "f"."CapitalName" = "c"."Name" ORDER BY "f"."Id" @@ -7238,8 +7238,9 @@ SELECT CASE END FROM "Gears" AS "g" ORDER BY CASE - WHEN "g"."LeaderNickname" IS NOT NULL THEN length("g"."Nickname") = 5 -END IS NOT NULL + WHEN "g"."LeaderNickname" IS NOT NULL THEN 1 + ELSE 0 +END """); } @@ -7798,6 +7799,61 @@ CROSS JOIN "Tags" AS "t0" """); } + public override async Task Conditional_Navigation_With_Trivial_Member_Access(bool async) + { + await base.Conditional_Navigation_With_Trivial_Member_Access(async); + + AssertSql( + """ +SELECT "g"."Nickname" +FROM "Gears" AS "g" +LEFT JOIN "Cities" AS "c" ON "g"."AssignedCityName" = "c"."Name" +INNER JOIN "Cities" AS "c0" ON "g"."CityOfBirthName" = "c0"."Name" +WHERE CASE + WHEN "c"."Name" IS NOT NULL THEN "c"."Name" + ELSE "c0"."Name" +END <> 'Ephyra' +"""); + } + + public override async Task Conditional_Navigation_With_Member_Access_On_Same_Type(bool async) + { + await base.Conditional_Navigation_With_Member_Access_On_Same_Type(async); + + AssertSql( + """ +SELECT "g"."Nickname", "g"."FullName" +FROM "Gears" AS "g" +LEFT JOIN "Cities" AS "c" ON "g"."AssignedCityName" = "c"."Name" +INNER JOIN "Cities" AS "c0" ON "g"."CityOfBirthName" = "c0"."Name" +WHERE CASE + WHEN "c"."Name" IS NOT NULL THEN "c"."Nation" + ELSE "c0"."Nation" +END = 'Tyrus' +"""); + } + + public override async Task Conditional_Navigation_With_Member_Access_On_Related_Types(bool async) + { + await base.Conditional_Navigation_With_Member_Access_On_Related_Types(async); + + AssertSql( + """ +SELECT "f"."Name" +FROM "Factions" AS "f" +LEFT JOIN "LocustLeaders" AS "l" ON "f"."DeputyCommanderName" = "l"."Name" +LEFT JOIN ( + SELECT "l0"."Name", "l0"."ThreatLevel" + FROM "LocustLeaders" AS "l0" + WHERE "l0"."Discriminator" = 'LocustCommander' +) AS "l1" ON "f"."CommanderName" = "l1"."Name" +WHERE CASE + WHEN "l"."Name" IS NOT NULL THEN "l"."ThreatLevel" + ELSE "l1"."ThreatLevel" +END = 4 +"""); + } + public override async Task Complex_GroupBy_after_set_operator_using_result_selector(bool async) { await base.Complex_GroupBy_after_set_operator_using_result_selector(async); diff --git a/src/source-manifest.json b/src/source-manifest.json index 88da7d02a78..0f447f13eff 100644 --- a/src/source-manifest.json +++ b/src/source-manifest.json @@ -50,11 +50,11 @@ "commitSha": "aebf15d23e5a25ab718e780a29d8aca9a5280425" }, { - "packageVersion": "10.0.0-preview.4.25258.1", - "barId": 267438, + "packageVersion": "10.0.0-preview.4.25262.1", + "barId": 267844, "path": "efcore", "remoteUri": "https://github.com/dotnet/efcore", - "commitSha": "a72632d6bfe67740954f74da5e42e1795e405522" + "commitSha": "7a87abf268190f3a0d5f218e9b0b595360701af3" }, { "packageVersion": "10.0.0-preview.5.25258.3", From 4405aa602b5f589c390caca6364d4febb0938cdd Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 12 May 2025 19:42:19 +0200 Subject: [PATCH 12/32] [main] Source code updates from dotnet/emsdk (#507) Co-authored-by: dotnet-maestro[bot] --- prereqs/git-info/emsdk.props | 6 ++-- src/emsdk/eng/Version.Details.xml | 30 +++++++++---------- src/emsdk/eng/Versions.props | 10 +++---- .../core-templates/steps/source-build.yml | 16 ++++------ src/emsdk/eng/common/tools.sh | 6 +++- src/emsdk/global.json | 4 +-- src/source-manifest.json | 6 ++-- 7 files changed, 38 insertions(+), 40 deletions(-) diff --git a/prereqs/git-info/emsdk.props b/prereqs/git-info/emsdk.props index ce4559c5a5d..f5cd2ae6f49 100644 --- a/prereqs/git-info/emsdk.props +++ b/prereqs/git-info/emsdk.props @@ -1,8 +1,8 @@  - b71a7e2de42aa8486e84ec10765c45e13109ccea - 20250508.3 - 10.0.0-preview.5.25258.3 + 06aad6dee7a5385f4d753d9111be036e641d7c3a + 20250512.1 + 10.0.0-preview.5.25262.1 \ No newline at end of file diff --git a/src/emsdk/eng/Version.Details.xml b/src/emsdk/eng/Version.Details.xml index c0fbc51d81c..6872ce23518 100644 --- a/src/emsdk/eng/Version.Details.xml +++ b/src/emsdk/eng/Version.Details.xml @@ -1,6 +1,6 @@ - + https://github.com/dotnet/binaryen @@ -236,33 +236,33 @@ https://github.com/dotnet/llvm-project 06dc649fc031114f675b184dc579d7c02d3d1f40 - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb diff --git a/src/emsdk/eng/Versions.props b/src/emsdk/eng/Versions.props index 035d62ac7cf..40dcaa68910 100644 --- a/src/emsdk/eng/Versions.props +++ b/src/emsdk/eng/Versions.props @@ -57,11 +57,11 @@ release - 10.0.0-beta.25257.101 - 10.0.0-beta.25257.101 - 10.0.0-beta.25257.101 - 10.0.0-beta.25257.101 - 10.0.0-beta.25257.101 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 1.1.87-gba258badda diff --git a/src/emsdk/eng/common/core-templates/steps/source-build.yml b/src/emsdk/eng/common/core-templates/steps/source-build.yml index 325231215d5..f2a0f347fdd 100644 --- a/src/emsdk/eng/common/core-templates/steps/source-build.yml +++ b/src/emsdk/eng/common/core-templates/steps/source-build.yml @@ -38,14 +38,9 @@ steps: targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}' fi - runtimeOsArgs= - if [ '${{ parameters.platform.runtimeOS }}' != '' ]; then - runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}' - fi - - baseOsArgs= - if [ '${{ parameters.platform.baseOS }}' != '' ]; then - baseOsArgs='/p:BaseOS=${{ parameters.platform.baseOS }}' + baseRidArgs= + if [ '${{ parameters.platform.baseRID }}' != '' ]; then + baseRidArgs='/p:BaseRid=${{ parameters.platform.baseRID }}' fi portableBuildArgs= @@ -59,8 +54,7 @@ steps: ${{ parameters.platform.buildArguments }} \ $internalRuntimeDownloadArgs \ $targetRidArgs \ - $runtimeOsArgs \ - $baseOsArgs \ + $baseRidArgs \ $portableBuildArgs \ /p:DotNetBuildSourceOnly=true \ /p:DotNetBuildRepo=true \ @@ -71,7 +65,7 @@ steps: is1ESPipeline: ${{ parameters.is1ESPipeline }} args: displayName: Publish BuildLogs - targetPath: artifacts/log/$[ coalesce(variables._BuildConfig, 'Release') ]/ + targetPath: artifacts/log/${{ coalesce(variables._BuildConfig, 'Release') }} artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt) continueOnError: true condition: succeededOrFailed() diff --git a/src/emsdk/eng/common/tools.sh b/src/emsdk/eng/common/tools.sh index d51f300c772..cc007b1f15a 100755 --- a/src/emsdk/eng/common/tools.sh +++ b/src/emsdk/eng/common/tools.sh @@ -5,6 +5,9 @@ # CI mode - set to true on CI server for PR validation build or official build. ci=${ci:-false} +# Build mode +source_build=${source_build:-false} + # Set to true to use the pipelines logger which will enable Azure logging output. # https://github.com/Microsoft/azure-pipelines-tasks/blob/master/docs/authoring/commands.md # This flag is meant as a temporary opt-opt for the feature while validate it across @@ -58,7 +61,8 @@ use_installed_dotnet_cli=${use_installed_dotnet_cli:-true} dotnetInstallScriptVersion=${dotnetInstallScriptVersion:-'v1'} # True to use global NuGet cache instead of restoring packages to repository-local directory. -if [[ "$ci" == true ]]; then +# Keep in sync with NuGetPackageroot in Arcade SDK's RepositoryLayout.props. +if [[ "$ci" == true || "$source_build" == true ]]; then use_global_nuget_cache=${use_global_nuget_cache:-false} else use_global_nuget_cache=${use_global_nuget_cache:-true} diff --git a/src/emsdk/global.json b/src/emsdk/global.json index c9c4a3504a4..ad29ae30d6f 100644 --- a/src/emsdk/global.json +++ b/src/emsdk/global.json @@ -3,8 +3,8 @@ "dotnet": "10.0.100-preview.3.25201.16" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25257.101", - "Microsoft.DotNet.Helix.Sdk": "10.0.0-beta.25257.101", + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25260.104", + "Microsoft.DotNet.Helix.Sdk": "10.0.0-beta.25260.104", "Microsoft.Build.Traversal": "3.4.0" } } diff --git a/src/source-manifest.json b/src/source-manifest.json index 0f447f13eff..5e5ac6ea8fc 100644 --- a/src/source-manifest.json +++ b/src/source-manifest.json @@ -57,11 +57,11 @@ "commitSha": "7a87abf268190f3a0d5f218e9b0b595360701af3" }, { - "packageVersion": "10.0.0-preview.5.25258.3", - "barId": 267435, + "packageVersion": "10.0.0-preview.5.25262.1", + "barId": 267839, "path": "emsdk", "remoteUri": "https://github.com/dotnet/emsdk", - "commitSha": "b71a7e2de42aa8486e84ec10765c45e13109ccea" + "commitSha": "06aad6dee7a5385f4d753d9111be036e641d7c3a" }, { "packageVersion": "10.0.100-beta.25224.6", From f3fb7c4333cf2593aaedfcbc598d54c5bcdbd433 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 12 May 2025 19:42:36 +0200 Subject: [PATCH 13/32] [main] Source code updates from dotnet/windowsdesktop (#506) Co-authored-by: dotnet-maestro[bot] --- prereqs/git-info/windowsdesktop.props | 6 +- src/source-manifest.json | 6 +- src/windowsdesktop/eng/Version.Details.xml | 174 +++++++++--------- src/windowsdesktop/eng/Versions.props | 82 ++++----- .../core-templates/steps/source-build.yml | 16 +- src/windowsdesktop/eng/common/tools.sh | 6 +- src/windowsdesktop/global.json | 4 +- 7 files changed, 146 insertions(+), 148 deletions(-) diff --git a/prereqs/git-info/windowsdesktop.props b/prereqs/git-info/windowsdesktop.props index eff9a049531..c3b548dffde 100644 --- a/prereqs/git-info/windowsdesktop.props +++ b/prereqs/git-info/windowsdesktop.props @@ -1,8 +1,8 @@  - 1e5f448ed7d1774c0f8665c66e50d6e2173c27bb - 20250507.5 - 10.0.0-preview.5.25257.5 + 2736c90fe4a9e7397341e9288ca5a0b9caa0533f + 20250510.1 + 10.0.0-preview.5.25260.1 \ No newline at end of file diff --git a/src/source-manifest.json b/src/source-manifest.json index 5e5ac6ea8fc..77f8b9492b1 100644 --- a/src/source-manifest.json +++ b/src/source-manifest.json @@ -169,11 +169,11 @@ "commitSha": "2e6d9288d3aa0269ae710844f3aa9e0a3981b26e" }, { - "packageVersion": "10.0.0-preview.5.25257.5", - "barId": 267313, + "packageVersion": "10.0.0-preview.5.25260.1", + "barId": 267786, "path": "windowsdesktop", "remoteUri": "https://github.com/dotnet/windowsdesktop", - "commitSha": "1e5f448ed7d1774c0f8665c66e50d6e2173c27bb" + "commitSha": "2736c90fe4a9e7397341e9288ca5a0b9caa0533f" }, { "packageVersion": "10.0.0-preview.5.25258.5", diff --git a/src/windowsdesktop/eng/Version.Details.xml b/src/windowsdesktop/eng/Version.Details.xml index 069f27e69bc..52c3db02478 100644 --- a/src/windowsdesktop/eng/Version.Details.xml +++ b/src/windowsdesktop/eng/Version.Details.xml @@ -1,180 +1,180 @@ - + - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb diff --git a/src/windowsdesktop/eng/Versions.props b/src/windowsdesktop/eng/Versions.props index ab0e928fbe4..790ff225ff6 100644 --- a/src/windowsdesktop/eng/Versions.props +++ b/src/windowsdesktop/eng/Versions.props @@ -8,16 +8,16 @@ false release - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-beta.25257.101 - 10.0.0-preview.5.25257.101 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-beta.25260.104 + 10.0.0-preview.5.25260.104 - 10.0.0-beta.25257.101 - 10.0.0-beta.25257.101 - 10.0.0-beta.25257.101 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 4.5.0 6.12.1 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 5.0.0 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 5.0.0 - 10.0.0-preview.5.25257.101 + 10.0.0-preview.5.25260.104 5.0.0 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 6.0.0 5.0.0 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 5.0.0 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 8.1.2 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 - 10.0.0-preview.5.25257.101 + 10.0.0-preview.5.25260.104 diff --git a/src/windowsdesktop/eng/common/core-templates/steps/source-build.yml b/src/windowsdesktop/eng/common/core-templates/steps/source-build.yml index 325231215d5..f2a0f347fdd 100644 --- a/src/windowsdesktop/eng/common/core-templates/steps/source-build.yml +++ b/src/windowsdesktop/eng/common/core-templates/steps/source-build.yml @@ -38,14 +38,9 @@ steps: targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}' fi - runtimeOsArgs= - if [ '${{ parameters.platform.runtimeOS }}' != '' ]; then - runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}' - fi - - baseOsArgs= - if [ '${{ parameters.platform.baseOS }}' != '' ]; then - baseOsArgs='/p:BaseOS=${{ parameters.platform.baseOS }}' + baseRidArgs= + if [ '${{ parameters.platform.baseRID }}' != '' ]; then + baseRidArgs='/p:BaseRid=${{ parameters.platform.baseRID }}' fi portableBuildArgs= @@ -59,8 +54,7 @@ steps: ${{ parameters.platform.buildArguments }} \ $internalRuntimeDownloadArgs \ $targetRidArgs \ - $runtimeOsArgs \ - $baseOsArgs \ + $baseRidArgs \ $portableBuildArgs \ /p:DotNetBuildSourceOnly=true \ /p:DotNetBuildRepo=true \ @@ -71,7 +65,7 @@ steps: is1ESPipeline: ${{ parameters.is1ESPipeline }} args: displayName: Publish BuildLogs - targetPath: artifacts/log/$[ coalesce(variables._BuildConfig, 'Release') ]/ + targetPath: artifacts/log/${{ coalesce(variables._BuildConfig, 'Release') }} artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt) continueOnError: true condition: succeededOrFailed() diff --git a/src/windowsdesktop/eng/common/tools.sh b/src/windowsdesktop/eng/common/tools.sh index d51f300c772..cc007b1f15a 100755 --- a/src/windowsdesktop/eng/common/tools.sh +++ b/src/windowsdesktop/eng/common/tools.sh @@ -5,6 +5,9 @@ # CI mode - set to true on CI server for PR validation build or official build. ci=${ci:-false} +# Build mode +source_build=${source_build:-false} + # Set to true to use the pipelines logger which will enable Azure logging output. # https://github.com/Microsoft/azure-pipelines-tasks/blob/master/docs/authoring/commands.md # This flag is meant as a temporary opt-opt for the feature while validate it across @@ -58,7 +61,8 @@ use_installed_dotnet_cli=${use_installed_dotnet_cli:-true} dotnetInstallScriptVersion=${dotnetInstallScriptVersion:-'v1'} # True to use global NuGet cache instead of restoring packages to repository-local directory. -if [[ "$ci" == true ]]; then +# Keep in sync with NuGetPackageroot in Arcade SDK's RepositoryLayout.props. +if [[ "$ci" == true || "$source_build" == true ]]; then use_global_nuget_cache=${use_global_nuget_cache:-false} else use_global_nuget_cache=${use_global_nuget_cache:-true} diff --git a/src/windowsdesktop/global.json b/src/windowsdesktop/global.json index e8b08a3fff1..5e56a63f337 100644 --- a/src/windowsdesktop/global.json +++ b/src/windowsdesktop/global.json @@ -8,8 +8,8 @@ } }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25257.101", - "Microsoft.DotNet.SharedFramework.Sdk": "10.0.0-beta.25257.101", + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25260.104", + "Microsoft.DotNet.SharedFramework.Sdk": "10.0.0-beta.25260.104", "Microsoft.Build.NoTargets": "3.7.0", "Microsoft.Build.Traversal": "3.4.0" } From 81451fb94936e735fc88f794f3fcb5bcbc2e8a2a Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 12 May 2025 19:43:08 +0200 Subject: [PATCH 14/32] [main] Source code updates from dotnet/winforms (#512) Co-authored-by: dotnet-maestro[bot] --- prereqs/git-info/winforms.props | 6 +- src/source-manifest.json | 6 +- src/winforms/eng/Version.Details.xml | 106 +++++++++--------- src/winforms/eng/Versions.props | 46 ++++---- .../core-templates/steps/source-build.yml | 16 +-- src/winforms/eng/common/tools.sh | 6 +- src/winforms/global.json | 8 +- 7 files changed, 96 insertions(+), 98 deletions(-) diff --git a/prereqs/git-info/winforms.props b/prereqs/git-info/winforms.props index 644713b7ea8..84a238fd656 100644 --- a/prereqs/git-info/winforms.props +++ b/prereqs/git-info/winforms.props @@ -1,8 +1,8 @@  - dd514dc4d78cab740356965cb7dd121c3dbf865d - 20250508.5 - 10.0.0-preview.5.25258.5 + 5821493f0b62aac1f34ed28e386868d5bbc710ce + 20250510.1 + 10.0.0-preview.5.25260.1 \ No newline at end of file diff --git a/src/source-manifest.json b/src/source-manifest.json index 77f8b9492b1..d4ed2d15c57 100644 --- a/src/source-manifest.json +++ b/src/source-manifest.json @@ -176,11 +176,11 @@ "commitSha": "2736c90fe4a9e7397341e9288ca5a0b9caa0533f" }, { - "packageVersion": "10.0.0-preview.5.25258.5", - "barId": 267521, + "packageVersion": "10.0.0-preview.5.25260.1", + "barId": 267790, "path": "winforms", "remoteUri": "https://github.com/dotnet/winforms", - "commitSha": "dd514dc4d78cab740356965cb7dd121c3dbf865d" + "commitSha": "5821493f0b62aac1f34ed28e386868d5bbc710ce" }, { "packageVersion": "10.0.0-preview.5.25262.1", diff --git a/src/winforms/eng/Version.Details.xml b/src/winforms/eng/Version.Details.xml index 36e068e427f..8a494c4d64d 100644 --- a/src/winforms/eng/Version.Details.xml +++ b/src/winforms/eng/Version.Details.xml @@ -6,114 +6,114 @@ Note: if the Uri is a new place, you will need to add a subscription from that p And you can check these with "darc get-dependencies target-repo "winforms" --> - + - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb diff --git a/src/winforms/eng/Versions.props b/src/winforms/eng/Versions.props index 38b61fa9cd0..d2ee97caa08 100644 --- a/src/winforms/eng/Versions.props +++ b/src/winforms/eng/Versions.props @@ -10,32 +10,32 @@ $(MajorVersion).$(MinorVersion).$(PatchVersion) false release - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 5.0.0-preview.7.20320.5 - 10.0.0-preview.5.25257.101 + 10.0.0-preview.5.25260.104 6.1.0-preview.1.24511.1 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 10.0.0-preview.5.25227.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 @@ -48,9 +48,9 @@ - 10.0.0-beta.25257.101 - 10.0.0-beta.25257.101 - 10.0.0-beta.25257.101 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 17.4.0-preview-20220707-01 diff --git a/src/winforms/eng/common/core-templates/steps/source-build.yml b/src/winforms/eng/common/core-templates/steps/source-build.yml index 325231215d5..f2a0f347fdd 100644 --- a/src/winforms/eng/common/core-templates/steps/source-build.yml +++ b/src/winforms/eng/common/core-templates/steps/source-build.yml @@ -38,14 +38,9 @@ steps: targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}' fi - runtimeOsArgs= - if [ '${{ parameters.platform.runtimeOS }}' != '' ]; then - runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}' - fi - - baseOsArgs= - if [ '${{ parameters.platform.baseOS }}' != '' ]; then - baseOsArgs='/p:BaseOS=${{ parameters.platform.baseOS }}' + baseRidArgs= + if [ '${{ parameters.platform.baseRID }}' != '' ]; then + baseRidArgs='/p:BaseRid=${{ parameters.platform.baseRID }}' fi portableBuildArgs= @@ -59,8 +54,7 @@ steps: ${{ parameters.platform.buildArguments }} \ $internalRuntimeDownloadArgs \ $targetRidArgs \ - $runtimeOsArgs \ - $baseOsArgs \ + $baseRidArgs \ $portableBuildArgs \ /p:DotNetBuildSourceOnly=true \ /p:DotNetBuildRepo=true \ @@ -71,7 +65,7 @@ steps: is1ESPipeline: ${{ parameters.is1ESPipeline }} args: displayName: Publish BuildLogs - targetPath: artifacts/log/$[ coalesce(variables._BuildConfig, 'Release') ]/ + targetPath: artifacts/log/${{ coalesce(variables._BuildConfig, 'Release') }} artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt) continueOnError: true condition: succeededOrFailed() diff --git a/src/winforms/eng/common/tools.sh b/src/winforms/eng/common/tools.sh index d51f300c772..cc007b1f15a 100755 --- a/src/winforms/eng/common/tools.sh +++ b/src/winforms/eng/common/tools.sh @@ -5,6 +5,9 @@ # CI mode - set to true on CI server for PR validation build or official build. ci=${ci:-false} +# Build mode +source_build=${source_build:-false} + # Set to true to use the pipelines logger which will enable Azure logging output. # https://github.com/Microsoft/azure-pipelines-tasks/blob/master/docs/authoring/commands.md # This flag is meant as a temporary opt-opt for the feature while validate it across @@ -58,7 +61,8 @@ use_installed_dotnet_cli=${use_installed_dotnet_cli:-true} dotnetInstallScriptVersion=${dotnetInstallScriptVersion:-'v1'} # True to use global NuGet cache instead of restoring packages to repository-local directory. -if [[ "$ci" == true ]]; then +# Keep in sync with NuGetPackageroot in Arcade SDK's RepositoryLayout.props. +if [[ "$ci" == true || "$source_build" == true ]]; then use_global_nuget_cache=${use_global_nuget_cache:-false} else use_global_nuget_cache=${use_global_nuget_cache:-true} diff --git a/src/winforms/global.json b/src/winforms/global.json index f102a77bee2..4c178dbb508 100644 --- a/src/winforms/global.json +++ b/src/winforms/global.json @@ -14,11 +14,11 @@ "version": "10.0.100-preview.3.25201.16" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25257.101", - "Microsoft.DotNet.CMake.Sdk": "10.0.0-beta.25257.101", - "Microsoft.DotNet.Helix.Sdk": "10.0.0-beta.25257.101", + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25260.104", + "Microsoft.DotNet.CMake.Sdk": "10.0.0-beta.25260.104", + "Microsoft.DotNet.Helix.Sdk": "10.0.0-beta.25260.104", "FIX-85B6-MERGE-9C38-CONFLICT": "1.0.0", - "Microsoft.NET.Sdk.IL": "10.0.0-preview.5.25257.101" + "Microsoft.NET.Sdk.IL": "10.0.0-preview.5.25260.104" }, "native-tools": { "cmake": "latest" From e0753c2ffb1206f45aba924ae16b74d5cd97bba4 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Mon, 12 May 2025 19:44:41 +0200 Subject: [PATCH 15/32] [main] Source code updates from dotnet/roslyn-analyzers (#511) Co-authored-by: dotnet-maestro[bot] --- prereqs/git-info/roslyn-analyzers.props | 6 +++--- src/roslyn-analyzers/eng/Version.Details.xml | 10 +++++----- src/roslyn-analyzers/eng/Versions.props | 2 +- .../common/core-templates/steps/source-build.yml | 16 +++++----------- src/roslyn-analyzers/eng/common/tools.sh | 6 +++++- src/roslyn-analyzers/global.json | 2 +- src/source-manifest.json | 6 +++--- 7 files changed, 23 insertions(+), 25 deletions(-) diff --git a/prereqs/git-info/roslyn-analyzers.props b/prereqs/git-info/roslyn-analyzers.props index 856e8495bbf..1a4f7eae270 100644 --- a/prereqs/git-info/roslyn-analyzers.props +++ b/prereqs/git-info/roslyn-analyzers.props @@ -1,8 +1,8 @@  - fb6e4b4d3f36ff60dd731a7b2006dab231c70935 - 20250507.1 - 10.0.0-preview.25257.1 + 4829e8048a7b398fc72304823bd6a4361fd31582 + 20250510.1 + 10.0.0-preview.25260.1 \ No newline at end of file diff --git a/src/roslyn-analyzers/eng/Version.Details.xml b/src/roslyn-analyzers/eng/Version.Details.xml index c99866dfc25..7b30e1db064 100644 --- a/src/roslyn-analyzers/eng/Version.Details.xml +++ b/src/roslyn-analyzers/eng/Version.Details.xml @@ -1,6 +1,6 @@ - + https://github.com/dotnet/roslyn @@ -8,13 +8,13 @@ - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb https://github.com/dotnet/roslyn diff --git a/src/roslyn-analyzers/eng/Versions.props b/src/roslyn-analyzers/eng/Versions.props index 92e1df0a30a..7b5c8b89950 100644 --- a/src/roslyn-analyzers/eng/Versions.props +++ b/src/roslyn-analyzers/eng/Versions.props @@ -75,7 +75,7 @@ 1.1.2-beta1.24314.1 - 10.0.0-beta.25257.101 + 10.0.0-beta.25260.104 0.13.0 2.14.1 diff --git a/src/roslyn-analyzers/eng/common/core-templates/steps/source-build.yml b/src/roslyn-analyzers/eng/common/core-templates/steps/source-build.yml index 325231215d5..f2a0f347fdd 100644 --- a/src/roslyn-analyzers/eng/common/core-templates/steps/source-build.yml +++ b/src/roslyn-analyzers/eng/common/core-templates/steps/source-build.yml @@ -38,14 +38,9 @@ steps: targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}' fi - runtimeOsArgs= - if [ '${{ parameters.platform.runtimeOS }}' != '' ]; then - runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}' - fi - - baseOsArgs= - if [ '${{ parameters.platform.baseOS }}' != '' ]; then - baseOsArgs='/p:BaseOS=${{ parameters.platform.baseOS }}' + baseRidArgs= + if [ '${{ parameters.platform.baseRID }}' != '' ]; then + baseRidArgs='/p:BaseRid=${{ parameters.platform.baseRID }}' fi portableBuildArgs= @@ -59,8 +54,7 @@ steps: ${{ parameters.platform.buildArguments }} \ $internalRuntimeDownloadArgs \ $targetRidArgs \ - $runtimeOsArgs \ - $baseOsArgs \ + $baseRidArgs \ $portableBuildArgs \ /p:DotNetBuildSourceOnly=true \ /p:DotNetBuildRepo=true \ @@ -71,7 +65,7 @@ steps: is1ESPipeline: ${{ parameters.is1ESPipeline }} args: displayName: Publish BuildLogs - targetPath: artifacts/log/$[ coalesce(variables._BuildConfig, 'Release') ]/ + targetPath: artifacts/log/${{ coalesce(variables._BuildConfig, 'Release') }} artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt) continueOnError: true condition: succeededOrFailed() diff --git a/src/roslyn-analyzers/eng/common/tools.sh b/src/roslyn-analyzers/eng/common/tools.sh index d51f300c772..cc007b1f15a 100755 --- a/src/roslyn-analyzers/eng/common/tools.sh +++ b/src/roslyn-analyzers/eng/common/tools.sh @@ -5,6 +5,9 @@ # CI mode - set to true on CI server for PR validation build or official build. ci=${ci:-false} +# Build mode +source_build=${source_build:-false} + # Set to true to use the pipelines logger which will enable Azure logging output. # https://github.com/Microsoft/azure-pipelines-tasks/blob/master/docs/authoring/commands.md # This flag is meant as a temporary opt-opt for the feature while validate it across @@ -58,7 +61,8 @@ use_installed_dotnet_cli=${use_installed_dotnet_cli:-true} dotnetInstallScriptVersion=${dotnetInstallScriptVersion:-'v1'} # True to use global NuGet cache instead of restoring packages to repository-local directory. -if [[ "$ci" == true ]]; then +# Keep in sync with NuGetPackageroot in Arcade SDK's RepositoryLayout.props. +if [[ "$ci" == true || "$source_build" == true ]]; then use_global_nuget_cache=${use_global_nuget_cache:-false} else use_global_nuget_cache=${use_global_nuget_cache:-true} diff --git a/src/roslyn-analyzers/global.json b/src/roslyn-analyzers/global.json index 6c46d07497b..539046de976 100644 --- a/src/roslyn-analyzers/global.json +++ b/src/roslyn-analyzers/global.json @@ -18,6 +18,6 @@ "rollForward": "patch" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25257.101" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25260.104" } } diff --git a/src/source-manifest.json b/src/source-manifest.json index d4ed2d15c57..86f949a004a 100644 --- a/src/source-manifest.json +++ b/src/source-manifest.json @@ -99,11 +99,11 @@ "commitSha": "7c625024a1984d9f04f317940d518402f5898758" }, { - "packageVersion": "10.0.0-preview.25257.1", - "barId": 267321, + "packageVersion": "10.0.0-preview.25260.1", + "barId": 267788, "path": "roslyn-analyzers", "remoteUri": "https://github.com/dotnet/roslyn-analyzers", - "commitSha": "fb6e4b4d3f36ff60dd731a7b2006dab231c70935" + "commitSha": "4829e8048a7b398fc72304823bd6a4361fd31582" }, { "packageVersion": "10.0.0-preview.5.25261.2", From fd91f17cb56c1f5df8c70988438a0aa116f6dc52 Mon Sep 17 00:00:00 2001 From: ".NET Source-Build Bot" <102560831+dotnet-sb-bot@users.noreply.github.com> Date: Mon, 12 May 2025 12:45:29 -0500 Subject: [PATCH 16/32] Update Source-Build License Scan Baselines and Exclusions (#487) Co-authored-by: Matt Thalman --- .../LicenseScanTests.cs | 1 + .../LicenseScanTests/LicenseExclusions.txt | 20 ++++++++----------- .../Licenses.source-build-externals.json | 2 +- 3 files changed, 10 insertions(+), 13 deletions(-) diff --git a/test/Microsoft.DotNet.SourceBuild.Tests/LicenseScanTests.cs b/test/Microsoft.DotNet.SourceBuild.Tests/LicenseScanTests.cs index 50ba90b2aab..6083a32f581 100644 --- a/test/Microsoft.DotNet.SourceBuild.Tests/LicenseScanTests.cs +++ b/test/Microsoft.DotNet.SourceBuild.Tests/LicenseScanTests.cs @@ -93,6 +93,7 @@ public class LicenseScanTests : TestBase "ms-rl", // https://opensource.org/license/ms-rl-html/ "newton-king-cla", // https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/newton-king-cla.LICENSE "ngpl", // https://opensource.org/license/nethack-php/ + "nist-software", // https://github.com/aboutcode-org/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/nist-software.LICENSE "object-form-exception-to-mit", // https://github.com/nexB/scancode-toolkit/blob/develop/src/licensedcode/data/licenses/object-form-exception-to-mit.LICENSE "ofl-1.1", // https://opensource.org/license/ofl-1-1/ "osf-1990", // https://fedoraproject.org/wiki/Licensing:MIT?rd=Licensing/MIT#HP_Variant diff --git a/test/Microsoft.DotNet.SourceBuild.Tests/assets/LicenseScanTests/LicenseExclusions.txt b/test/Microsoft.DotNet.SourceBuild.Tests/assets/LicenseScanTests/LicenseExclusions.txt index ca885c28000..f06068badee 100644 --- a/test/Microsoft.DotNet.SourceBuild.Tests/assets/LicenseScanTests/LicenseExclusions.txt +++ b/test/Microsoft.DotNet.SourceBuild.Tests/assets/LicenseScanTests/LicenseExclusions.txt @@ -185,22 +185,18 @@ src/sdk/THIRD-PARTY-NOTICES.TXT|unknown-license-reference # # False positive -src/source-build-externals/src/abstractions-xunit/README.md|free-unknown -src/source-build-externals/src/application-insights/NETCORE/ThirdPartyNotices.txt|unknown -src/source-build-externals/src/humanizer/NuSpecs/*.nuspec* -src/source-build-externals/src/xunit/README.md|free-unknown -src/source-build-externals/src/xunit/src/xunit.assert/Asserts/README.md|free-unknown -src/source-build-externals/src/xunit/tools/builder/common/README.md|free-unknown +src/source-build-externals/src/repos/src/abstractions-xunit/README.md|free-unknown +src/source-build-externals/src/repos/src/application-insights/NETCORE/ThirdPartyNotices.txt|unknown +src/source-build-externals/src/repos/src/humanizer/NuSpecs/*.nuspec* +src/source-build-externals/src/repos/src/xunit/README.md|free-unknown +src/source-build-externals/src/repos/src/xunit/src/xunit.assert/Asserts/README.md|free-unknown +src/source-build-externals/src/repos/src/xunit/tools/builder/common/README.md|free-unknown # Configuration, doesn't apply to source directly -src/source-build-externals/src/vs-solutionpersistence/stylecop.json - -# Scanner is identifying the https://github.com/SixLabors/ImageSharp/blob/master/LICENSE license as unknown. But this license is not applicable because we're -# relying on the Spectre.Console distribution. -# See https://github.com/dotnet/dotnet/blob/c6a7278fbb7d79fa3d1f386ef0dc8474043ed06c/src/source-build-externals/src/spectre-console/README.md?plain=1#L104 +src/source-build-externals/src/repos/src/vs-solutionpersistence/stylecop.json # Configuration, doesn't apply to source directly -src/source-build-externals/src/vs-solutionpersistence/stylecop.json +src/source-build-externals/src/repos/src/vs-solutionpersistence/stylecop.json # # source-build-reference-packages diff --git a/test/Microsoft.DotNet.SourceBuild.Tests/assets/LicenseScanTests/Licenses.source-build-externals.json b/test/Microsoft.DotNet.SourceBuild.Tests/assets/LicenseScanTests/Licenses.source-build-externals.json index 30537629287..fd8d32adaaf 100644 --- a/test/Microsoft.DotNet.SourceBuild.Tests/assets/LicenseScanTests/Licenses.source-build-externals.json +++ b/test/Microsoft.DotNet.SourceBuild.Tests/assets/LicenseScanTests/Licenses.source-build-externals.json @@ -1,7 +1,7 @@ { "files": [ { - "path": "src/application-insights/LOGGING/ThirdPartyNotices.txt", + "path": "src/repos/src/application-insights/LOGGING/ThirdPartyNotices.txt", "detected_license_expression": "unknown AND apache-2.0 AND mit AND bsd-new" } ] From 8b2fbf9dc63bed08b8faea6d3c944a569496ce73 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Tue, 13 May 2025 09:50:21 +0200 Subject: [PATCH 17/32] [main] Source code updates from dotnet/diagnostics (#516) Co-authored-by: dotnet-maestro[bot] --- prereqs/git-info/diagnostics.props | 6 +- src/diagnostics/eng/Version.Details.xml | 8 +- src/diagnostics/eng/Versions.props | 2 +- src/diagnostics/src/SOS/Strike/metadata.cpp | 352 ++++++++++++-------- src/diagnostics/src/SOS/Strike/strike.cpp | 38 ++- src/source-manifest.json | 6 +- 6 files changed, 236 insertions(+), 176 deletions(-) diff --git a/prereqs/git-info/diagnostics.props b/prereqs/git-info/diagnostics.props index e2a27d99e87..9123991a484 100644 --- a/prereqs/git-info/diagnostics.props +++ b/prereqs/git-info/diagnostics.props @@ -1,8 +1,8 @@  - aebf15d23e5a25ab718e780a29d8aca9a5280425 - 20250506.1 - 9.0.625601 + 3a08702ea8e0083a74e10556c60c0bccd868b64a + 20250512.2 + 9.0.626202 \ No newline at end of file diff --git a/src/diagnostics/eng/Version.Details.xml b/src/diagnostics/eng/Version.Details.xml index a7a60ce15df..a5ecb2bfc1f 100644 --- a/src/diagnostics/eng/Version.Details.xml +++ b/src/diagnostics/eng/Version.Details.xml @@ -1,13 +1,13 @@ - + https://github.com/microsoft/clrmd - cccf496872323338afe872dd102720f9606945d4 + fd6ccca33b888a5077a477218cac2461b81e8586 - + https://github.com/microsoft/clrmd - cccf496872323338afe872dd102720f9606945d4 + fd6ccca33b888a5077a477218cac2461b81e8586 diff --git a/src/diagnostics/eng/Versions.props b/src/diagnostics/eng/Versions.props index 71be36d92e0..2d6fa857101 100644 --- a/src/diagnostics/eng/Versions.props +++ b/src/diagnostics/eng/Versions.props @@ -37,7 +37,7 @@ 8.0.0 6.0.0 - 4.0.0-beta.25255.1 + 4.0.0-beta.25261.1 17.10.0-beta1.24272.1 3.1.21 6.0.0 diff --git a/src/diagnostics/src/SOS/Strike/metadata.cpp b/src/diagnostics/src/SOS/Strike/metadata.cpp index 95d12f9aa09..f5a2b807897 100644 --- a/src/diagnostics/src/SOS/Strike/metadata.cpp +++ b/src/diagnostics/src/SOS/Strike/metadata.cpp @@ -2,9 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. // ==++== -// - -// +// + +// // ==--== #include "strike.h" #include "util.h" @@ -12,7 +12,7 @@ /**********************************************************************\ * Routine Description: * * * -* This function is called to find the name of a TypeDef using * +* This function is called to find the name of a TypeDef using * * metadata API. * * * \**********************************************************************/ @@ -20,9 +20,14 @@ static HRESULT NameForTypeDef_s(mdTypeDef tkTypeDef, IMetaDataImport *pImport, __out_ecount (capacity_mdName) WCHAR *mdName, size_t capacity_mdName) { + if (pImport == NULL) + { + int res = swprintf_s(mdName, capacity_mdName, W("0x%08x"), tkTypeDef); + return res != -1 ? S_OK : E_FAIL; + } + DWORD flags; ULONG nameLen; - HRESULT hr = pImport->GetTypeDefProps(tkTypeDef, mdName, (ULONG)capacity_mdName, &nameLen, &flags, NULL); @@ -68,13 +73,13 @@ IMetaDataImport* MDImportForModule(DacpModuleData* pModule) IMetaDataImport *pRet = NULL; ToRelease module; HRESULT hr = g_sos->GetModule(pModule->Address, &module); - + if (SUCCEEDED(hr)) hr = module->QueryInterface(IID_IMetaDataImport, (LPVOID *) &pRet); if (SUCCEEDED(hr)) return pRet; - + return NULL; } @@ -104,9 +109,9 @@ HRESULT NameForToken_s(mdTypeDef mb, IMetaDataImport *pImport, __out_ecount (cap //ExtOut("unsupported\n"); return E_FAIL; } - + HRESULT hr = E_FAIL; - + PAL_CPP_TRY { static WCHAR name[MAX_CLASSNAME_LENGTH]; @@ -168,7 +173,7 @@ HRESULT NameForToken_s(mdTypeDef mb, IMetaDataImport *pImport, __out_ecount (cap /**********************************************************************\ * Routine Description: * * * -* This function is called to find the name of a metadata token * +* This function is called to find the name of a metadata token * * using metadata API. * * * \**********************************************************************/ @@ -206,7 +211,7 @@ void NameForToken_s(DacpModuleData *pModule, mdTypeDef mb, __out_ecount (capacit { hr = NameForToken_s (mb, pImport, mdName, capacity_mdName, bClassName); } - + if (!pImport || !SUCCEEDED (hr)) { const SIZE_T capacity_moduleName = mdNameLen+19; @@ -218,7 +223,7 @@ void NameForToken_s(DacpModuleData *pModule, mdTypeDef mb, __out_ecount (capacit if (assembly.isDynamic) { wcscpy_s(moduleName, capacity_moduleName, W("Dynamic ")); } - wcscat_s (moduleName, capacity_moduleName, W("Module in ")); + wcscat_s (moduleName, capacity_moduleName, W("Module in ")); if(g_sos->GetAssemblyName(pModule->Assembly, mdNameLen, g_mdName, NULL)==S_OK) { wcscat_s(moduleName, capacity_moduleName, g_mdName); @@ -238,9 +243,16 @@ class MDInfo public: MDInfo (DWORD_PTR ModuleAddr) { - m_pImport = MDImportForModule(ModuleAddr); - if (!m_pImport) - ExtOut("Unable to get IMetaDataImport for module %p\n", ModuleAddr); + if (ModuleAddr == 0) + { + m_pImport = NULL; + } + else + { + m_pImport = MDImportForModule(ModuleAddr); + if (!m_pImport) + ExtOut("Unable to get IMetaDataImport for module %p\n", ModuleAddr); + } m_pSigBuf = NULL; } @@ -251,7 +263,7 @@ class MDInfo m_pSigBuf = NULL; } - void GetMethodName(mdTypeDef token, CQuickBytes *fullName); + void GetMethodName(mdMethodDef token, CQuickBytes *fullName); GetSignatureStringResults GetMethodSignature(PCCOR_SIGNATURE pbSigBlob, ULONG ulSigBlob, CQuickBytes *fullName); GetSignatureStringResults GetSignature(PCCOR_SIGNATURE pbSigBlob, ULONG ulSigBlob, CQuickBytes *fullName); @@ -308,46 +320,47 @@ void GetMethodName(mdMethodDef methodDef, IMetaDataImport * pImport, CQuickBytes // Tables for mapping element type to text -const WCHAR *g_wszMapElementType[] = +const WCHAR *g_wszMapElementType[] = { W("End"), // 0x0 W("Void"), // 0x1 W("Boolean"), - W("Char"), + W("Char"), W("I1"), - W("UI1"), + W("U1"), W("I2"), // 0x6 - W("UI2"), + W("U2"), W("I4"), - W("UI4"), + W("U4"), W("I8"), - W("UI8"), + W("U8"), W("R4"), W("R8"), W("String"), W("Ptr"), // 0xf W("ByRef"), // 0x10 - W("ValueClass"), + W("ValueType"), W("Class"), - W("CopyCtor"), + W("Var"), W("MDArray"), // 0x14 - W("GENArray"), + W("GenericInst"), W("TypedByRef"), - W("VALUEARRAY"), - W("I"), - W("U"), - W("R"), // 0x1a - W("FNPTR"), + W("UNUSED"), + W("IntPtr"), + W("UIntPtr"), + W("UNUSED"), // 0x1a + W("FnPtr"), W("Object"), W("SZArray"), - W("GENERICArray"), + W("MVar"), W("CMOD_REQD"), W("CMOD_OPT"), W("INTERNAL"), + W("CMOD_INTERNAL"), }; - -const WCHAR *g_wszCalling[] = -{ + +const WCHAR *g_wszCalling[] = +{ W("[DEFAULT]"), W("[C]"), W("[STDCALL]"), @@ -358,36 +371,44 @@ const WCHAR *g_wszCalling[] = W("[LOCALSIG]"), W("[PROPERTY]"), W("[UNMANAGED]"), + W("[GENERICINST]"), + W("[NATIVEVARARG]"), + W("[UNKNOWN]"), + W("[UNKNOWN]"), + W("[UNKNOWN]"), + W("[UNKNOWN]"), }; -void MDInfo::GetMethodName(mdTypeDef token, CQuickBytes *fullName) +void MDInfo::GetMethodName(mdMethodDef token, CQuickBytes *fullName) { - if (m_pImport == NULL) { - return; - } - - HRESULT hr; - mdTypeDef memTypeDef; - ULONG nameLen; - DWORD flags; - PCCOR_SIGNATURE pbSigBlob; - ULONG ulSigBlob; - ULONG ulCodeRVA; - ULONG ulImplFlags; + HRESULT hr = E_FAIL; + mdTypeDef memTypeDef = mdTypeDefNil; + ULONG nameLen = 0; + DWORD flags = 0; + PCCOR_SIGNATURE pbSigBlob = NULL; + ULONG ulSigBlob = 0; + ULONG ulCodeRVA = 0; + ULONG ulImplFlags = 0; m_pSigBuf = fullName; InitSigBuffer(); WCHAR szFunctionName[1024]; - hr = m_pImport->GetMethodProps(token, &memTypeDef, - szFunctionName, ARRAY_SIZE(szFunctionName), &nameLen, - &flags, &pbSigBlob, &ulSigBlob, &ulCodeRVA, &ulImplFlags); - if (FAILED (hr)) + if (m_pImport != NULL) { + hr = m_pImport->GetMethodProps(token, &memTypeDef, + szFunctionName, ARRAY_SIZE(szFunctionName), &nameLen, + &flags, &pbSigBlob, &ulSigBlob, &ulCodeRVA, &ulImplFlags); + } + + if (FAILED(hr)) + { + swprintf_s(szFunctionName, ARRAY_SIZE(szFunctionName), W("0x%08x"), token); + AddToSigBuffer(szFunctionName); return; } - + szFunctionName[nameLen] = L'\0'; m_szName[0] = L'\0'; if (memTypeDef != mdTypeDefNil) @@ -420,9 +441,6 @@ void MDInfo::GetMethodName(mdTypeDef token, CQuickBytes *fullName) GetSignatureStringResults MDInfo::GetMethodSignature(PCCOR_SIGNATURE pbSigBlob, ULONG ulSigBlob, CQuickBytes *fullName) { - if (!m_pImport) - return GSS_ERROR; - m_pSigBuf = fullName; InitSigBuffer(); @@ -431,7 +449,7 @@ GetSignatureStringResults MDInfo::GetMethodSignature(PCCOR_SIGNATURE pbSigBlob, LONG lSigBlobRemaining; if (FAILED(GetFullNameForMD(pbSigBlob, ulSigBlob, &lSigBlobRemaining))) return GSS_ERROR; - + if (lSigBlobRemaining < 0) return GSS_INSUFFICIENT_DATA; @@ -441,9 +459,6 @@ GetSignatureStringResults MDInfo::GetMethodSignature(PCCOR_SIGNATURE pbSigBlob, GetSignatureStringResults MDInfo::GetSignature(PCCOR_SIGNATURE pbSigBlob, ULONG ulSigBlob, CQuickBytes *fullName) { - if (!m_pImport) - return GSS_ERROR; - m_pSigBuf = fullName; InitSigBuffer(); @@ -461,10 +476,9 @@ GetSignatureStringResults MDInfo::GetSignature(PCCOR_SIGNATURE pbSigBlob, ULONG return GSS_SUCCESS; } - inline bool isCallConv(unsigned sigByte, CorCallingConvention conv) { - return ((sigByte & IMAGE_CEE_CS_CALLCONV_MASK) == (unsigned) conv); + return ((sigByte & IMAGE_CEE_CS_CALLCONV_MASK) == (unsigned) conv); } #undef IfFailGoto @@ -492,16 +506,11 @@ HRESULT MDInfo::GetFullNameForMD(PCCOR_SIGNATURE pbSigBlob, ULONG ulSigBlob, LON // goto ErrExit; AddToSigBuffer (g_wszCalling[ulData & IMAGE_CEE_CS_CALLCONV_MASK]); - if (cb>ulSigBlob) + if (cb>ulSigBlob) goto ErrExit; cbCur += cb; ulSigBlob -= cb; - if (ulData & IMAGE_CEE_CS_CALLCONV_HASTHIS) - AddToSigBuffer ( W(" [hasThis]")); - if (ulData & IMAGE_CEE_CS_CALLCONV_EXPLICITTHIS) - AddToSigBuffer ( W(" [explicit]")); - AddToSigBuffer (W(" ")); if ( isCallConv(ulData,IMAGE_CEE_CS_CALLCONV_FIELD) ) { @@ -510,15 +519,36 @@ HRESULT MDInfo::GetFullNameForMD(PCCOR_SIGNATURE pbSigBlob, ULONG ulSigBlob, LON goto ErrExit; AddToSigBuffer ( W(" ")); AddToSigBuffer ( m_szName); - if (cb>ulSigBlob) + if (cb>ulSigBlob) goto ErrExit; cbCur += cb; ulSigBlob -= cb; } - else + else { + if (ulData & IMAGE_CEE_CS_CALLCONV_HASTHIS) + AddToSigBuffer ( W("[hasThis] ")); + if (ulData & IMAGE_CEE_CS_CALLCONV_EXPLICITTHIS) + AddToSigBuffer ( W("[explicit] ")); + + if (ulData & IMAGE_CEE_CS_CALLCONV_GENERIC) + { + ULONG ulGenericCount; + cb = CorSigUncompressData(&pbSigBlob[cbCur], &ulGenericCount); + if (cb>ulSigBlob) + goto ErrExit; + AddToSigBuffer (W("[generic:")); + + WCHAR buffer[16]; + _itow_s(ulGenericCount, buffer, ARRAY_SIZE(buffer), 10); + AddToSigBuffer (buffer); + AddToSigBuffer (W("] ")); + cbCur += cb; + ulSigBlob -= cb; + } + cb = CorSigUncompressData(&pbSigBlob[cbCur], &ulArgs); - if (cb>ulSigBlob) + if (cb>ulSigBlob) goto ErrExit; cbCur += cb; ulSigBlob -= cb; @@ -531,7 +561,7 @@ HRESULT MDInfo::GetFullNameForMD(PCCOR_SIGNATURE pbSigBlob, ULONG ulSigBlob, LON AddToSigBuffer (W(" ")); AddToSigBuffer (m_szName); AddToSigBuffer ( W("(")); - if (cb>ulSigBlob) + if (cb>ulSigBlob) goto ErrExit; cbCur += cb; ulSigBlob -= cb; @@ -551,7 +581,7 @@ HRESULT MDInfo::GetFullNameForMD(PCCOR_SIGNATURE pbSigBlob, ULONG ulSigBlob, LON if (i != ulArgs) { AddToSigBuffer ( W(",")); } - if (cb>ulSigBlob) + if (cb>ulSigBlob) goto ErrExit; cbCur += cb; @@ -573,39 +603,42 @@ HRESULT MDInfo::GetFullNameForMD(PCCOR_SIGNATURE pbSigBlob, ULONG ulSigBlob, LON LPCWSTR MDInfo::TypeDefName(mdTypeDef inTypeDef) { - if (m_pImport == NULL) { - return W(""); + HRESULT hr = E_FAIL; + if (m_pImport != NULL) + { + hr = m_pImport->GetTypeDefProps( + // [IN] The import scope. + inTypeDef, // [IN] TypeDef token for inquiry. + m_szTempBuf, // [OUT] Put name here. + MAX_CLASSNAME_LENGTH , // [IN] size of name buffer in wide chars. + NULL, // [OUT] put size of name (wide chars) here. + NULL, // [OUT] Put flags here. + NULL); // [OUT] Put base class TypeDef/TypeRef here. + } + if (FAILED(hr)) + { + swprintf_s(m_szTempBuf, MAX_CLASSNAME_LENGTH, W("0x%08x"), inTypeDef); } - HRESULT hr; - - hr = m_pImport->GetTypeDefProps( - // [IN] The import scope. - inTypeDef, // [IN] TypeDef token for inquiry. - m_szTempBuf, // [OUT] Put name here. - MAX_CLASSNAME_LENGTH , // [IN] size of name buffer in wide chars. - NULL, // [OUT] put size of name (wide chars) here. - NULL, // [OUT] Put flags here. - NULL); // [OUT] Put base class TypeDef/TypeRef here. - - if (FAILED(hr)) return (W("NoName")); return (m_szTempBuf); } // LPCWSTR MDInfo::TypeDefName() + LPCWSTR MDInfo::TypeRefName(mdTypeRef tr) { - if (m_pImport == NULL) { - return W(""); + HRESULT hr = E_FAIL; + if (m_pImport != NULL) + { + hr = m_pImport->GetTypeRefProps( + tr, // The class ref token. + NULL, // Resolution scope. + m_szTempBuf, // Put the name here. + MAX_CLASSNAME_LENGTH, // Size of the name buffer, wide chars. + NULL); // Put actual size of name here. + } + if (FAILED(hr)) + { + swprintf_s(m_szTempBuf, MAX_CLASSNAME_LENGTH, W("0x%08x"), tr); } - - HRESULT hr; - - hr = m_pImport->GetTypeRefProps( - tr, // The class ref token. - NULL, // Resolution scope. - m_szTempBuf, // Put the name here. - MAX_CLASSNAME_LENGTH, // Size of the name buffer, wide chars. - NULL); // Put actual size of name here. - if (FAILED(hr)) return (W("NoName")); return (m_szTempBuf); } // LPCWSTR MDInfo::TypeRefName() @@ -643,7 +676,6 @@ HRESULT MDInfo::GetOneElementType(PCCOR_SIGNATURE pbSigBlob, ULONG ulSigBlob, UL ULONG ulTemp; int iTemp = 0; mdToken tk; - const size_t capacity_buffer = 9; cb = CorSigUncompressData(pbSigBlob, &ulData); @@ -673,11 +705,12 @@ HRESULT MDInfo::GetOneElementType(PCCOR_SIGNATURE pbSigBlob, ULONG ulSigBlob, UL } // Handle the underlying element types. - if (ulData >= ELEMENT_TYPE_MAX) + if (ulData >= ELEMENT_TYPE_MAX) { hr = E_FAIL; goto ErrExit; } + while (ulData == ELEMENT_TYPE_PTR || ulData == ELEMENT_TYPE_BYREF) { IfFailGo(AddToSigBuffer(g_wszMapElementType[ulData])); @@ -687,14 +720,24 @@ HRESULT MDInfo::GetOneElementType(PCCOR_SIGNATURE pbSigBlob, ULONG ulSigBlob, UL } // Generics - if (ulData == ELEMENT_TYPE_VAR) + if (ulData == ELEMENT_TYPE_VAR || ulData == ELEMENT_TYPE_MVAR) { - IfFailGo(AddToSigBuffer(W("__Canon"))); + if (ulData == ELEMENT_TYPE_VAR) + { + IfFailGo(AddToSigBuffer(W("!"))); + } + else + { + IfFailGo(AddToSigBuffer(W("!!"))); + } + + ULONG varIndex = 0; + IfFailGo(CorSigUncompressData(&pbSigBlob[cbCur], ulSigBlob-cbCur, &varIndex, &cb)); + cbCur += cb; - // The next byte represents which generic parameter is referred to. We - // do not currently use this information, so just bypass this byte. - cbCur++; - + WCHAR buffer[16]; + _itow_s(varIndex, buffer, ARRAY_SIZE(buffer), 10); + AddToSigBuffer(buffer); goto ErrExit; } @@ -707,26 +750,32 @@ HRESULT MDInfo::GetOneElementType(PCCOR_SIGNATURE pbSigBlob, ULONG ulSigBlob, UL // Get the number of generic arguments. ULONG numParams = 0; - IfFailGo(CorSigUncompressData(&pbSigBlob[cbCur], 1, &numParams, &cb)); + IfFailGo(CorSigUncompressData(&pbSigBlob[cbCur], ulSigBlob-cbCur, &numParams, &cb)); cbCur += cb; // Print out the list of arguments IfFailGo(AddToSigBuffer(W("<"))); for (ULONG i = 0; i < numParams; i++) { - if (i > 0) + if (i > 0) IfFailGo(AddToSigBuffer(W(","))); - + IfFailGo(GetOneElementType(&pbSigBlob[cbCur], ulSigBlob-cbCur, &cb)); cbCur += cb; } IfFailGo(AddToSigBuffer(W(">"))); goto ErrExit; } - + // Past this point we must have something which directly maps to a value in g_wszMapElementType. + if (ulData >= ARRAY_SIZE(g_wszMapElementType)) + { + IfFailGo(AddToSigBuffer(W("INVALID_ELEMENT_TYPE"))); + return E_FAIL; + } + IfFailGo(AddToSigBuffer(g_wszMapElementType[ulData])); - if (CorIsPrimitiveType((CorElementType)ulData) || + if (CorIsPrimitiveType((CorElementType)ulData) || ulData == ELEMENT_TYPE_TYPEDBYREF || ulData == ELEMENT_TYPE_OBJECT || ulData == ELEMENT_TYPE_I || @@ -737,8 +786,8 @@ HRESULT MDInfo::GetOneElementType(PCCOR_SIGNATURE pbSigBlob, ULONG ulSigBlob, UL } AddToSigBuffer(W(" ")); - if (ulData == ELEMENT_TYPE_VALUETYPE || - ulData == ELEMENT_TYPE_CLASS || + if (ulData == ELEMENT_TYPE_VALUETYPE || + ulData == ELEMENT_TYPE_CLASS || ulData == ELEMENT_TYPE_CMOD_REQD || ulData == ELEMENT_TYPE_CMOD_OPT) { @@ -753,8 +802,8 @@ HRESULT MDInfo::GetOneElementType(PCCOR_SIGNATURE pbSigBlob, ULONG ulSigBlob, UL else { _ASSERTE(TypeFromToken(tk) == mdtTypeSpec); - WCHAR buffer[capacity_buffer]; - _itow_s (tk, buffer, capacity_buffer, 16); + WCHAR buffer[16]; + _itow_s (tk, buffer, ARRAY_SIZE(buffer), 16); IfFailGo(AddToSigBuffer(buffer)); } if (ulData == ELEMENT_TYPE_CMOD_REQD || @@ -770,13 +819,13 @@ HRESULT MDInfo::GetOneElementType(PCCOR_SIGNATURE pbSigBlob, ULONG ulSigBlob, UL } if (ulData == ELEMENT_TYPE_SZARRAY) { - // display the base type of SZARRAY or GENERICARRAY + // display the base type of SZARRAY if (FAILED(GetOneElementType(&pbSigBlob[cbCur], ulSigBlob-cbCur, &cb))) goto ErrExit; cbCur += cb; goto ErrExit; } - if (ulData == ELEMENT_TYPE_FNPTR) + if (ulData == ELEMENT_TYPE_FNPTR) { cb = CorSigUncompressData(&pbSigBlob[cbCur], &ulData); cbCur += cb; @@ -798,7 +847,7 @@ HRESULT MDInfo::GetOneElementType(PCCOR_SIGNATURE pbSigBlob, ULONG ulSigBlob, UL cbCur += cb; IfFailGo(AddToSigBuffer(W("("))); - while (numArgs > 0) + while (numArgs > 0) { if (cbCur > ulSigBlob) goto ErrExit; @@ -806,7 +855,7 @@ HRESULT MDInfo::GetOneElementType(PCCOR_SIGNATURE pbSigBlob, ULONG ulSigBlob, UL goto ErrExit; cbCur += cb; --numArgs; - if (numArgs > 0) + if (numArgs > 0) IfFailGo(AddToSigBuffer(W(","))); } IfFailGo(AddToSigBuffer(W(")"))); @@ -821,9 +870,8 @@ HRESULT MDInfo::GetOneElementType(PCCOR_SIGNATURE pbSigBlob, ULONG ulSigBlob, UL cb = CorSigUncompressPointer(&pbSigBlob[cbCur], (void**)&pvMethodTable); cbCur += cb; - const size_t capacity_szMethodTableValue = 10; - WCHAR szMethodTableValue[10]; - itow_s_ptr((INT_PTR)pvMethodTable, szMethodTableValue, capacity_szMethodTableValue, 16); + WCHAR szMethodTableValue[32]; + itow_s_ptr((INT_PTR)pvMethodTable, szMethodTableValue, ARRAY_SIZE(szMethodTableValue), 16); IfFailGo(AddToSigBuffer(szMethodTableValue)); IfFailGo(AddToSigBuffer(W(" "))); @@ -834,60 +882,68 @@ HRESULT MDInfo::GetOneElementType(PCCOR_SIGNATURE pbSigBlob, ULONG ulSigBlob, UL goto ErrExit; } - - if(ulData != ELEMENT_TYPE_ARRAY) return E_FAIL; + if(ulData != ELEMENT_TYPE_ARRAY) + return E_FAIL; + + // Since MDARRAY has extra data, we will use a visual indication + // to group the base type and the ArrayShape. + IfFailGo(AddToSigBuffer(W("{"))); - // display the base type of SDARRAY + // Display the base type of MDARRAY if (FAILED(GetOneElementType(&pbSigBlob[cbCur], ulSigBlob-cbCur, &cb))) goto ErrExit; cbCur += cb; - IfFailGo(AddToSigBuffer(W(" "))); - // display the rank of MDARRAY + // Print the ArrayShape - ECMA-335 II.23.2.13 + AddToSigBuffer(W(", ")); + + // Display the rank cb = CorSigUncompressData(&pbSigBlob[cbCur], &ulData); cbCur += cb; - WCHAR buffer[capacity_buffer]; - _itow_s (ulData, buffer, capacity_buffer, 10); + WCHAR buffer[16]; + _itow_s (ulData, buffer, ARRAY_SIZE(buffer), 10); IfFailGo(AddToSigBuffer(buffer)); + + // we are done if no rank specified if (ulData == 0) - // we are done if no rank specified goto ErrExit; IfFailGo(AddToSigBuffer(W(" "))); + // how many dimensions have size specified? cb = CorSigUncompressData(&pbSigBlob[cbCur], &ulData); cbCur += cb; - _itow_s (ulData, buffer, capacity_buffer, 10); + _itow_s (ulData, buffer, ARRAY_SIZE(buffer), 10); IfFailGo(AddToSigBuffer(buffer)); - if (ulData == 0) { + if (ulData == 0) IfFailGo(AddToSigBuffer(W(" "))); - } - while (ulData) - { + for (;ulData != 0; ulData--) + { cb = CorSigUncompressData(&pbSigBlob[cbCur], &ulTemp); - _itow_s (ulTemp, buffer, capacity_buffer, 10); + _itow_s (ulTemp, buffer, ARRAY_SIZE(buffer), 10); IfFailGo(AddToSigBuffer(buffer)); IfFailGo(AddToSigBuffer(W(" "))); cbCur += cb; - ulData--; } + // how many dimensions have lower bounds specified? cb = CorSigUncompressData(&pbSigBlob[cbCur], &ulData); cbCur += cb; - _itow_s (ulData, buffer, capacity_buffer, 10); + _itow_s (ulData, buffer, ARRAY_SIZE(buffer), 10); IfFailGo(AddToSigBuffer(buffer)); - while (ulData) - { + IfFailGo(AddToSigBuffer(W(" "))); + for (;ulData != 0; ulData--) + { cb = CorSigUncompressSignedInt(&pbSigBlob[cbCur], &iTemp); - _itow_s (iTemp, buffer, capacity_buffer, 10); + _itow_s (iTemp, buffer, ARRAY_SIZE(buffer), 10); IfFailGo(AddToSigBuffer(buffer)); IfFailGo(AddToSigBuffer(W(" "))); cbCur += cb; - ulData--; } - + IfFailGo(AddToSigBuffer(W("}"))); + ErrExit: if (cbCur > ulSigBlob) hr = E_FAIL; @@ -900,17 +956,17 @@ HRESULT MDInfo::GetOneElementType(PCCOR_SIGNATURE pbSigBlob, ULONG ulSigBlob, UL //***************************************************************************** typedef struct tagCOR_ILMETHOD_TINY : IMAGE_COR_ILMETHOD_TINY { - bool IsTiny() const { return((Flags_CodeSize & (CorILMethod_FormatMask >> 1)) == CorILMethod_TinyFormat); } - DWORD GetLocalVarSigTok() const { return(0); } + bool IsTiny() const { return((Flags_CodeSize & (CorILMethod_FormatMask >> 1)) == CorILMethod_TinyFormat); } + DWORD GetLocalVarSigTok() const { return(0); } } COR_ILMETHOD_TINY; //***************************************************************************** -// This strucuture is the 'fat' layout, where no compression is attempted. +// This strucuture is the 'fat' layout, where no compression is attempted. // Note that this structure can be added on at the end, thus making it extensible //***************************************************************************** typedef struct tagCOR_ILMETHOD_FAT : IMAGE_COR_ILMETHOD_FAT { - bool IsFat() const { return((Flags & CorILMethod_FormatMask) == CorILMethod_FatFormat); } - mdToken GetLocalVarSigTok() const { return(LocalVarSigTok); } + bool IsFat() const { return((Flags & CorILMethod_FormatMask) == CorILMethod_FatFormat); } + mdToken GetLocalVarSigTok() const { return(LocalVarSigTok); } } COR_ILMETHOD_FAT; diff --git a/src/diagnostics/src/SOS/Strike/strike.cpp b/src/diagnostics/src/SOS/Strike/strike.cpp index 766c574d3bc..4dab0bd56c5 100644 --- a/src/diagnostics/src/SOS/Strike/strike.cpp +++ b/src/diagnostics/src/SOS/Strike/strike.cpp @@ -844,8 +844,7 @@ DECLARE_API(DumpIL) return Status; } - -void DumpSigWorker ( +static void DumpSigWorker ( DWORD_PTR dwSigAddr, DWORD_PTR dwModuleAddr, BOOL fMethod) @@ -946,21 +945,24 @@ DECLARE_API(DumpSig) { return E_INVALIDARG; } - if (nArg != 2) + + if (nArg < 1 || nArg > 2) { - ExtOut("%sdumpsig \n", SOSPrefix); + ExtOut("%sdumpsig []?\n", SOSPrefix); return E_INVALIDARG; } DWORD_PTR dwSigAddr = GetExpression(sigExpr.data); - DWORD_PTR dwModuleAddr = GetExpression(moduleExpr.data); - - if (dwSigAddr == 0 || dwModuleAddr == 0) + if (dwSigAddr == 0) { - ExtOut("Invalid parameters %s %s\n", sigExpr.data, moduleExpr.data); - return Status; + ExtOut("Invalid parameter %s\n", sigExpr.data); + return E_INVALIDARG; } + DWORD_PTR dwModuleAddr = 0; + if (nArg == 2) + dwModuleAddr = GetExpression(moduleExpr.data); + DumpSigWorker(dwSigAddr, dwModuleAddr, TRUE); return Status; } @@ -994,21 +996,23 @@ DECLARE_API(DumpSigElem) return E_INVALIDARG; } - if (nArg != 2) + if (nArg < 1 || nArg > 2) { - ExtOut("%sdumpsigelem \n", SOSPrefix); + ExtOut("%sdumpsigelem []?\n", SOSPrefix); return E_INVALIDARG; } DWORD_PTR dwSigAddr = GetExpression(sigExpr.data); - DWORD_PTR dwModuleAddr = GetExpression(moduleExpr.data); - - if (dwSigAddr == 0 || dwModuleAddr == 0) + if (dwSigAddr == 0) { - ExtOut("Invalid parameters %s %s\n", sigExpr.data, moduleExpr.data); + ExtOut("Invalid parameter %s\n", sigExpr.data); return E_INVALIDARG; } + DWORD_PTR dwModuleAddr = 0; + if (nArg == 2) + dwModuleAddr = GetExpression(moduleExpr.data); + DumpSigWorker(dwSigAddr, dwModuleAddr, FALSE); return Status; } @@ -8073,9 +8077,9 @@ DECLARE_API(EEVersion) } } else + { ExtOut("Workstation mode\n"); - - + } if (!GetGcStructuresValid()) { diff --git a/src/source-manifest.json b/src/source-manifest.json index 86f949a004a..4c15149f6fc 100644 --- a/src/source-manifest.json +++ b/src/source-manifest.json @@ -43,11 +43,11 @@ "commitSha": "c97b44a3c5d3504ae98d3499bcdce4828d3d7230" }, { - "packageVersion": "9.0.625601", - "barId": 267066, + "packageVersion": "9.0.626202", + "barId": 267916, "path": "diagnostics", "remoteUri": "https://github.com/dotnet/diagnostics", - "commitSha": "aebf15d23e5a25ab718e780a29d8aca9a5280425" + "commitSha": "3a08702ea8e0083a74e10556c60c0bccd868b64a" }, { "packageVersion": "10.0.0-preview.4.25262.1", From aac56807b0d341a11dc80f2b16a826a9debace17 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Tue, 13 May 2025 10:35:26 +0200 Subject: [PATCH 18/32] [main] Source code updates from dotnet/source-build-externals (#527) Co-authored-by: dotnet-maestro[bot] --- prereqs/git-info/source-build-externals.props | 4 ++-- src/source-build-externals/eng/Version.Details.xml | 6 +++--- .../common/core-templates/steps/source-build.yml | 14 ++++---------- src/source-build-externals/eng/common/tools.sh | 6 +++++- src/source-build-externals/global.json | 2 +- src/source-manifest.json | 4 ++-- 6 files changed, 17 insertions(+), 19 deletions(-) diff --git a/prereqs/git-info/source-build-externals.props b/prereqs/git-info/source-build-externals.props index 541d5f3ee99..ea9691d1110 100644 --- a/prereqs/git-info/source-build-externals.props +++ b/prereqs/git-info/source-build-externals.props @@ -1,8 +1,8 @@  - 51f102c8aa5afcd42ff3a3c8a687262b194bf929 - 20250508.2 + a4f971d850e3a10462dd8ec2be47c90532e3490e + 20250511.1 10.0.622801 \ No newline at end of file diff --git a/src/source-build-externals/eng/Version.Details.xml b/src/source-build-externals/eng/Version.Details.xml index 188faf8d8ce..d8f03407b34 100644 --- a/src/source-build-externals/eng/Version.Details.xml +++ b/src/source-build-externals/eng/Version.Details.xml @@ -1,14 +1,14 @@ - + https://github.com/dotnet/msbuild e9b99f554a3c298e1106ea171f5a0462780af2c5 - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb diff --git a/src/source-build-externals/eng/common/core-templates/steps/source-build.yml b/src/source-build-externals/eng/common/core-templates/steps/source-build.yml index c7c062e88ee..f2a0f347fdd 100644 --- a/src/source-build-externals/eng/common/core-templates/steps/source-build.yml +++ b/src/source-build-externals/eng/common/core-templates/steps/source-build.yml @@ -38,14 +38,9 @@ steps: targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}' fi - runtimeOsArgs= - if [ '${{ parameters.platform.runtimeOS }}' != '' ]; then - runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}' - fi - - baseOsArgs= - if [ '${{ parameters.platform.baseOS }}' != '' ]; then - baseOsArgs='/p:BaseOS=${{ parameters.platform.baseOS }}' + baseRidArgs= + if [ '${{ parameters.platform.baseRID }}' != '' ]; then + baseRidArgs='/p:BaseRid=${{ parameters.platform.baseRID }}' fi portableBuildArgs= @@ -59,8 +54,7 @@ steps: ${{ parameters.platform.buildArguments }} \ $internalRuntimeDownloadArgs \ $targetRidArgs \ - $runtimeOsArgs \ - $baseOsArgs \ + $baseRidArgs \ $portableBuildArgs \ /p:DotNetBuildSourceOnly=true \ /p:DotNetBuildRepo=true \ diff --git a/src/source-build-externals/eng/common/tools.sh b/src/source-build-externals/eng/common/tools.sh index d51f300c772..cc007b1f15a 100755 --- a/src/source-build-externals/eng/common/tools.sh +++ b/src/source-build-externals/eng/common/tools.sh @@ -5,6 +5,9 @@ # CI mode - set to true on CI server for PR validation build or official build. ci=${ci:-false} +# Build mode +source_build=${source_build:-false} + # Set to true to use the pipelines logger which will enable Azure logging output. # https://github.com/Microsoft/azure-pipelines-tasks/blob/master/docs/authoring/commands.md # This flag is meant as a temporary opt-opt for the feature while validate it across @@ -58,7 +61,8 @@ use_installed_dotnet_cli=${use_installed_dotnet_cli:-true} dotnetInstallScriptVersion=${dotnetInstallScriptVersion:-'v1'} # True to use global NuGet cache instead of restoring packages to repository-local directory. -if [[ "$ci" == true ]]; then +# Keep in sync with NuGetPackageroot in Arcade SDK's RepositoryLayout.props. +if [[ "$ci" == true || "$source_build" == true ]]; then use_global_nuget_cache=${use_global_nuget_cache:-false} else use_global_nuget_cache=${use_global_nuget_cache:-true} diff --git a/src/source-build-externals/global.json b/src/source-build-externals/global.json index 8a4131bdcd1..254bec3b082 100644 --- a/src/source-build-externals/global.json +++ b/src/source-build-externals/global.json @@ -3,7 +3,7 @@ "dotnet": "10.0.100-preview.3.25201.16" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25257.101", + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25260.104", "Microsoft.Build.NoTargets": "3.7.0" } } diff --git a/src/source-manifest.json b/src/source-manifest.json index 4c15149f6fc..2e7b7bf91e1 100644 --- a/src/source-manifest.json +++ b/src/source-manifest.json @@ -128,10 +128,10 @@ }, { "packageVersion": "10.0.622801", - "barId": 267488, + "barId": 267816, "path": "source-build-externals", "remoteUri": "https://github.com/dotnet/source-build-externals", - "commitSha": "51f102c8aa5afcd42ff3a3c8a687262b194bf929" + "commitSha": "a4f971d850e3a10462dd8ec2be47c90532e3490e" }, { "packageVersion": "", From f6d7a23ff87dff9def6dc27249a9989bc59de444 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Tue, 13 May 2025 10:35:43 +0200 Subject: [PATCH 19/32] [main] Source code updates from dotnet/scenario-tests (#526) Co-authored-by: dotnet-maestro[bot] --- prereqs/git-info/scenario-tests.props | 4 +- src/scenario-tests/eng/Version.Details.xml | 10 ++--- src/scenario-tests/eng/Versions.props | 2 +- .../core-templates/steps/source-build.yml | 44 +++---------------- src/scenario-tests/eng/common/tools.sh | 6 ++- src/scenario-tests/global.json | 2 +- src/source-manifest.json | 4 +- 7 files changed, 21 insertions(+), 51 deletions(-) diff --git a/prereqs/git-info/scenario-tests.props b/prereqs/git-info/scenario-tests.props index 62d6c287e43..3c03a4cf4be 100644 --- a/prereqs/git-info/scenario-tests.props +++ b/prereqs/git-info/scenario-tests.props @@ -1,8 +1,8 @@  - 3ba55042a88ef20d2aba4475d7622d3fa14c0527 - 20250506.1 + 828faff7300aac7fae6f9544393f9cb317baeb6d + 20250512.1 10.0.0-preview.25221.1 \ No newline at end of file diff --git a/src/scenario-tests/eng/Version.Details.xml b/src/scenario-tests/eng/Version.Details.xml index bc54839488e..21702100c79 100644 --- a/src/scenario-tests/eng/Version.Details.xml +++ b/src/scenario-tests/eng/Version.Details.xml @@ -1,16 +1,16 @@ - + - + https://github.com/dotnet/dotnet - 86c2177121ebf8d49b372dd7232588ceaae6c7cb + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 86c2177121ebf8d49b372dd7232588ceaae6c7cb + 85778473549347b3e4bad3ea009e9438df7b11bb diff --git a/src/scenario-tests/eng/Versions.props b/src/scenario-tests/eng/Versions.props index e1781349e08..61b3604659c 100644 --- a/src/scenario-tests/eng/Versions.props +++ b/src/scenario-tests/eng/Versions.props @@ -4,6 +4,6 @@ preview - 2.0.0-beta5.25252.107 + 2.0.0-beta5.25260.104 diff --git a/src/scenario-tests/eng/common/core-templates/steps/source-build.yml b/src/scenario-tests/eng/common/core-templates/steps/source-build.yml index 9292c9b67a3..f2a0f347fdd 100644 --- a/src/scenario-tests/eng/common/core-templates/steps/source-build.yml +++ b/src/scenario-tests/eng/common/core-templates/steps/source-build.yml @@ -19,19 +19,6 @@ steps: set -x df -h - # If file changes are detected, set CopyWipIntoInnerSourceBuildRepo to copy the WIP changes into the inner source build repo. - internalRestoreArgs= - if ! git diff --quiet; then - internalRestoreArgs='/p:CopyWipIntoInnerSourceBuildRepo=true' - # The 'Copy WIP' feature of source build uses git stash to apply changes from the original repo. - # This only works if there is a username/email configured, which won't be the case in most CI runs. - git config --get user.email - if [ $? -ne 0 ]; then - git config user.email dn-bot@microsoft.com - git config user.name dn-bot - fi - fi - # If building on the internal project, the internal storage variable may be available (usually only if needed) # In that case, add variables to allow the download of internal runtimes if the specified versions are not found # in the default public locations. @@ -51,14 +38,9 @@ steps: targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}' fi - runtimeOsArgs= - if [ '${{ parameters.platform.runtimeOS }}' != '' ]; then - runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}' - fi - - baseOsArgs= - if [ '${{ parameters.platform.baseOS }}' != '' ]; then - baseOsArgs='/p:BaseOS=${{ parameters.platform.baseOS }}' + baseRidArgs= + if [ '${{ parameters.platform.baseRID }}' != '' ]; then + baseRidArgs='/p:BaseRid=${{ parameters.platform.baseRID }}' fi portableBuildArgs= @@ -71,35 +53,19 @@ steps: --restore --build --pack -bl \ ${{ parameters.platform.buildArguments }} \ $internalRuntimeDownloadArgs \ - $internalRestoreArgs \ $targetRidArgs \ - $runtimeOsArgs \ - $baseOsArgs \ + $baseRidArgs \ $portableBuildArgs \ /p:DotNetBuildSourceOnly=true \ /p:DotNetBuildRepo=true \ displayName: Build -# Upload build logs for diagnosis. -- task: CopyFiles@2 - displayName: Prepare BuildLogs staging directory - inputs: - SourceFolder: '$(Build.SourcesDirectory)' - Contents: | - **/*.log - **/*.binlog - artifacts/sb/prebuilt-report/** - TargetFolder: '$(Build.StagingDirectory)/BuildLogs' - CleanTargetFolder: true - continueOnError: true - condition: succeededOrFailed() - - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml parameters: is1ESPipeline: ${{ parameters.is1ESPipeline }} args: displayName: Publish BuildLogs - targetPath: '$(Build.StagingDirectory)/BuildLogs' + targetPath: artifacts/log/${{ coalesce(variables._BuildConfig, 'Release') }} artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt) continueOnError: true condition: succeededOrFailed() diff --git a/src/scenario-tests/eng/common/tools.sh b/src/scenario-tests/eng/common/tools.sh index d51f300c772..cc007b1f15a 100755 --- a/src/scenario-tests/eng/common/tools.sh +++ b/src/scenario-tests/eng/common/tools.sh @@ -5,6 +5,9 @@ # CI mode - set to true on CI server for PR validation build or official build. ci=${ci:-false} +# Build mode +source_build=${source_build:-false} + # Set to true to use the pipelines logger which will enable Azure logging output. # https://github.com/Microsoft/azure-pipelines-tasks/blob/master/docs/authoring/commands.md # This flag is meant as a temporary opt-opt for the feature while validate it across @@ -58,7 +61,8 @@ use_installed_dotnet_cli=${use_installed_dotnet_cli:-true} dotnetInstallScriptVersion=${dotnetInstallScriptVersion:-'v1'} # True to use global NuGet cache instead of restoring packages to repository-local directory. -if [[ "$ci" == true ]]; then +# Keep in sync with NuGetPackageroot in Arcade SDK's RepositoryLayout.props. +if [[ "$ci" == true || "$source_build" == true ]]; then use_global_nuget_cache=${use_global_nuget_cache:-false} else use_global_nuget_cache=${use_global_nuget_cache:-true} diff --git a/src/scenario-tests/global.json b/src/scenario-tests/global.json index f7c29b66c19..58f82faf262 100644 --- a/src/scenario-tests/global.json +++ b/src/scenario-tests/global.json @@ -10,6 +10,6 @@ } }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25252.107" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25260.104" } } diff --git a/src/source-manifest.json b/src/source-manifest.json index 2e7b7bf91e1..06ad0976fd3 100644 --- a/src/source-manifest.json +++ b/src/source-manifest.json @@ -114,10 +114,10 @@ }, { "packageVersion": "10.0.0-preview.25221.1", - "barId": 266989, + "barId": 267832, "path": "scenario-tests", "remoteUri": "https://github.com/dotnet/scenario-tests", - "commitSha": "3ba55042a88ef20d2aba4475d7622d3fa14c0527" + "commitSha": "828faff7300aac7fae6f9544393f9cb317baeb6d" }, { "packageVersion": "10.0.100-preview.5.25259.8", From abefc057997643f4d194a344b9511f77c377ddb1 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Tue, 13 May 2025 10:35:59 +0200 Subject: [PATCH 20/32] [main] Source code updates from dotnet/wpf (#525) Co-authored-by: dotnet-maestro[bot] --- prereqs/git-info/wpf.props | 6 +++--- src/source-manifest.json | 6 +++--- src/wpf/src/Microsoft.DotNet.Wpf/src/.editorconfig | 3 --- .../src/PresentationCore/GlobalSuppressions.cs | 3 +++ 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/prereqs/git-info/wpf.props b/prereqs/git-info/wpf.props index 14a11be4743..e6611433152 100644 --- a/prereqs/git-info/wpf.props +++ b/prereqs/git-info/wpf.props @@ -1,8 +1,8 @@  - bcdf1d61342fed2c3ceafe3f692c58d4eaca70ba - 20250512.1 - 10.0.0-preview.5.25262.1 + ac5efa2727c7980fa9623e8b41411866d25e7332 + 20250512.2 + 10.0.0-preview.5.25262.2 \ No newline at end of file diff --git a/src/source-manifest.json b/src/source-manifest.json index 06ad0976fd3..e793c30a4cb 100644 --- a/src/source-manifest.json +++ b/src/source-manifest.json @@ -183,11 +183,11 @@ "commitSha": "5821493f0b62aac1f34ed28e386868d5bbc710ce" }, { - "packageVersion": "10.0.0-preview.5.25262.1", - "barId": 267850, + "packageVersion": "10.0.0-preview.5.25262.2", + "barId": 267856, "path": "wpf", "remoteUri": "https://github.com/dotnet/wpf", - "commitSha": "bcdf1d61342fed2c3ceafe3f692c58d4eaca70ba" + "commitSha": "ac5efa2727c7980fa9623e8b41411866d25e7332" }, { "packageVersion": "10.0.0-preview.25258.1", diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/.editorconfig b/src/wpf/src/Microsoft.DotNet.Wpf/src/.editorconfig index 51e25141dfe..e0c9018a8d8 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/.editorconfig +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/.editorconfig @@ -53,9 +53,6 @@ dotnet_diagnostic.CA1510.severity = suggestion # CA2211: Non-constant fields should not be visible dotnet_diagnostic.CA2211.severity = suggestion -# CA1512: Use ArgumentOutOfRangeException throw helper -dotnet_diagnostic.CA1512.severity = suggestion - # CA1513: Use ObjectDisposedException throw helper dotnet_diagnostic.CA1513.severity = suggestion diff --git a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/GlobalSuppressions.cs b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/GlobalSuppressions.cs index 1e2ad3e04e1..cac7a30e31d 100644 --- a/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/GlobalSuppressions.cs +++ b/src/wpf/src/Microsoft.DotNet.Wpf/src/PresentationCore/GlobalSuppressions.cs @@ -32,3 +32,6 @@ [assembly: SuppressMessage("Usage", "CA2201:Do not raise reserved exception types", Justification = "Compat", Scope = "member", Target = "~M:System.Windows.Clipboard.IsCurrent(System.Windows.IDataObject)~System.Boolean")] [assembly: SuppressMessage("Usage", "CA2201:Do not raise reserved exception types", Justification = "Compat", Scope = "member", Target = "~M:System.Windows.DataObject.System#Runtime#InteropServices#ComTypes#IDataObject#EnumFormatEtc(System.Runtime.InteropServices.ComTypes.DATADIR)~System.Runtime.InteropServices.ComTypes.IEnumFORMATETC")] [assembly: SuppressMessage("Usage", "CA2201:Do not raise reserved exception types", Justification = "Compat", Scope = "member", Target = "~M:System.Windows.OleServicesContext.SetDispatcherThread")] + +// TODO: Remove these when analyzer issue is fixed (https://github.com/dotnet/roslyn-analyzers/issues/7617) +[assembly: SuppressMessage("Maintainability", "CA1512:Use ArgumentOutOfRangeException throw helper", Justification = "Analyzer bug: https://github.com/dotnet/roslyn-analyzers/issues/7617", Scope = "member", Target = "~M:System.Windows.Interop.D3DImage.TryLock(System.Windows.Duration)~System.Boolean")] From fe06dcab681de00e0a62c6c7b5633c71ff7ac6ba Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Tue, 13 May 2025 10:36:14 +0200 Subject: [PATCH 21/32] [main] Source code updates from dotnet/deployment-tools (#524) Co-authored-by: dotnet-maestro[bot] --- prereqs/git-info/deployment-tools.props | 6 +++--- src/deployment-tools/eng/Version.Details.xml | 6 +++--- .../common/core-templates/steps/source-build.yml | 14 ++++---------- src/deployment-tools/eng/common/tools.sh | 6 +++++- src/deployment-tools/global.json | 2 +- src/source-manifest.json | 6 +++--- 6 files changed, 19 insertions(+), 21 deletions(-) diff --git a/prereqs/git-info/deployment-tools.props b/prereqs/git-info/deployment-tools.props index ba67a4d4a57..cc99514f08a 100644 --- a/prereqs/git-info/deployment-tools.props +++ b/prereqs/git-info/deployment-tools.props @@ -1,8 +1,8 @@  - c97b44a3c5d3504ae98d3499bcdce4828d3d7230 - 20250508.1 - 9.0.0-preview.1.25258.1 + e49e231fca51db9fad01d36efdd230d3307640cc + 20250512.1 + 9.0.0-preview.1.25262.1 \ No newline at end of file diff --git a/src/deployment-tools/eng/Version.Details.xml b/src/deployment-tools/eng/Version.Details.xml index 8eb9821420c..91bd708eebc 100644 --- a/src/deployment-tools/eng/Version.Details.xml +++ b/src/deployment-tools/eng/Version.Details.xml @@ -1,11 +1,11 @@ - + - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb diff --git a/src/deployment-tools/eng/common/core-templates/steps/source-build.yml b/src/deployment-tools/eng/common/core-templates/steps/source-build.yml index c7c062e88ee..f2a0f347fdd 100644 --- a/src/deployment-tools/eng/common/core-templates/steps/source-build.yml +++ b/src/deployment-tools/eng/common/core-templates/steps/source-build.yml @@ -38,14 +38,9 @@ steps: targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}' fi - runtimeOsArgs= - if [ '${{ parameters.platform.runtimeOS }}' != '' ]; then - runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}' - fi - - baseOsArgs= - if [ '${{ parameters.platform.baseOS }}' != '' ]; then - baseOsArgs='/p:BaseOS=${{ parameters.platform.baseOS }}' + baseRidArgs= + if [ '${{ parameters.platform.baseRID }}' != '' ]; then + baseRidArgs='/p:BaseRid=${{ parameters.platform.baseRID }}' fi portableBuildArgs= @@ -59,8 +54,7 @@ steps: ${{ parameters.platform.buildArguments }} \ $internalRuntimeDownloadArgs \ $targetRidArgs \ - $runtimeOsArgs \ - $baseOsArgs \ + $baseRidArgs \ $portableBuildArgs \ /p:DotNetBuildSourceOnly=true \ /p:DotNetBuildRepo=true \ diff --git a/src/deployment-tools/eng/common/tools.sh b/src/deployment-tools/eng/common/tools.sh index d51f300c772..cc007b1f15a 100755 --- a/src/deployment-tools/eng/common/tools.sh +++ b/src/deployment-tools/eng/common/tools.sh @@ -5,6 +5,9 @@ # CI mode - set to true on CI server for PR validation build or official build. ci=${ci:-false} +# Build mode +source_build=${source_build:-false} + # Set to true to use the pipelines logger which will enable Azure logging output. # https://github.com/Microsoft/azure-pipelines-tasks/blob/master/docs/authoring/commands.md # This flag is meant as a temporary opt-opt for the feature while validate it across @@ -58,7 +61,8 @@ use_installed_dotnet_cli=${use_installed_dotnet_cli:-true} dotnetInstallScriptVersion=${dotnetInstallScriptVersion:-'v1'} # True to use global NuGet cache instead of restoring packages to repository-local directory. -if [[ "$ci" == true ]]; then +# Keep in sync with NuGetPackageroot in Arcade SDK's RepositoryLayout.props. +if [[ "$ci" == true || "$source_build" == true ]]; then use_global_nuget_cache=${use_global_nuget_cache:-false} else use_global_nuget_cache=${use_global_nuget_cache:-true} diff --git a/src/deployment-tools/global.json b/src/deployment-tools/global.json index 61817e2bd00..6e368302e04 100644 --- a/src/deployment-tools/global.json +++ b/src/deployment-tools/global.json @@ -8,7 +8,7 @@ "dotnet": "10.0.100-preview.3.25201.16" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25257.101", + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25260.104", "Microsoft.Build.NoTargets": "3.7.0", "Microsoft.Build.Traversal": "3.4.0" } diff --git a/src/source-manifest.json b/src/source-manifest.json index e793c30a4cb..72948a77356 100644 --- a/src/source-manifest.json +++ b/src/source-manifest.json @@ -36,11 +36,11 @@ "commitSha": "493a1d270887d7c51372fd17f774ea44b0c3101a" }, { - "packageVersion": "9.0.0-preview.1.25258.1", - "barId": 267420, + "packageVersion": "9.0.0-preview.1.25262.1", + "barId": 267836, "path": "deployment-tools", "remoteUri": "https://github.com/dotnet/deployment-tools", - "commitSha": "c97b44a3c5d3504ae98d3499bcdce4828d3d7230" + "commitSha": "e49e231fca51db9fad01d36efdd230d3307640cc" }, { "packageVersion": "9.0.626202", From c3786bcb513144563e96db7e1e42e417d1dbdc88 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Tue, 13 May 2025 10:36:31 +0200 Subject: [PATCH 22/32] [main] Source code updates from dotnet/symreader (#522) Co-authored-by: dotnet-maestro[bot] --- prereqs/git-info/symreader.props | 6 +- src/source-manifest.json | 6 +- src/symreader/eng/Version.Details.xml | 6 +- .../core-templates/steps/source-build.yml | 63 ++----------------- src/symreader/eng/common/tools.sh | 6 +- src/symreader/global.json | 2 +- 6 files changed, 21 insertions(+), 68 deletions(-) diff --git a/prereqs/git-info/symreader.props b/prereqs/git-info/symreader.props index f8d88e9f1f2..ee1d627b671 100644 --- a/prereqs/git-info/symreader.props +++ b/prereqs/git-info/symreader.props @@ -1,8 +1,8 @@  - 6565fef44c1528244224690207a3f0c2a4b9295a - 20250506.1 - 2.2.0-beta.25256.1 + d38d92c12935201bb8852096935c267d53592ad9 + 20250512.1 + 2.2.0-beta.25262.1 \ No newline at end of file diff --git a/src/source-manifest.json b/src/source-manifest.json index 72948a77356..0666c493837 100644 --- a/src/source-manifest.json +++ b/src/source-manifest.json @@ -148,11 +148,11 @@ "commitSha": "8be2b265e8ac8f8dc9a3e97026cfdc8ee2cb587c" }, { - "packageVersion": "2.2.0-beta.25256.1", - "barId": 266957, + "packageVersion": "2.2.0-beta.25262.1", + "barId": 267834, "path": "symreader", "remoteUri": "https://github.com/dotnet/symreader", - "commitSha": "6565fef44c1528244224690207a3f0c2a4b9295a" + "commitSha": "d38d92c12935201bb8852096935c267d53592ad9" }, { "packageVersion": "10.0.100-preview.5.25261.1", diff --git a/src/symreader/eng/Version.Details.xml b/src/symreader/eng/Version.Details.xml index a918c6b79b6..7d97ce9a0f8 100644 --- a/src/symreader/eng/Version.Details.xml +++ b/src/symreader/eng/Version.Details.xml @@ -1,12 +1,12 @@ - + - + https://github.com/dotnet/dotnet - 3b83017bbef1dd0918f7c2f894cfd07f56bcd689 + 85778473549347b3e4bad3ea009e9438df7b11bb diff --git a/src/symreader/eng/common/core-templates/steps/source-build.yml b/src/symreader/eng/common/core-templates/steps/source-build.yml index c6b9ef51ac6..f2a0f347fdd 100644 --- a/src/symreader/eng/common/core-templates/steps/source-build.yml +++ b/src/symreader/eng/common/core-templates/steps/source-build.yml @@ -19,19 +19,6 @@ steps: set -x df -h - # If file changes are detected, set CopyWipIntoInnerSourceBuildRepo to copy the WIP changes into the inner source build repo. - internalRestoreArgs= - if ! git diff --quiet; then - internalRestoreArgs='/p:CopyWipIntoInnerSourceBuildRepo=true' - # The 'Copy WIP' feature of source build uses git stash to apply changes from the original repo. - # This only works if there is a username/email configured, which won't be the case in most CI runs. - git config --get user.email - if [ $? -ne 0 ]; then - git config user.email dn-bot@microsoft.com - git config user.name dn-bot - fi - fi - # If building on the internal project, the internal storage variable may be available (usually only if needed) # In that case, add variables to allow the download of internal runtimes if the specified versions are not found # in the default public locations. @@ -46,34 +33,14 @@ steps: buildConfig='$(_BuildConfig)' fi - officialBuildArgs= - if [ '${{ and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}' = 'True' ]; then - officialBuildArgs='/p:DotNetPublishUsingPipelines=true /p:OfficialBuildId=$(BUILD.BUILDNUMBER)' - fi - targetRidArgs= if [ '${{ parameters.platform.targetRID }}' != '' ]; then targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}' fi - runtimeOsArgs= - if [ '${{ parameters.platform.runtimeOS }}' != '' ]; then - runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}' - fi - - baseOsArgs= - if [ '${{ parameters.platform.baseOS }}' != '' ]; then - baseOsArgs='/p:BaseOS=${{ parameters.platform.baseOS }}' - fi - - publishArgs= - if [ '${{ parameters.platform.skipPublishValidation }}' != 'true' ]; then - publishArgs='--publish' - fi - - assetManifestFileName=SourceBuild_RidSpecific.xml - if [ '${{ parameters.platform.name }}' != '' ]; then - assetManifestFileName=SourceBuild_${{ parameters.platform.name }}.xml + baseRidArgs= + if [ '${{ parameters.platform.baseRID }}' != '' ]; then + baseRidArgs='/p:BaseRid=${{ parameters.platform.baseRID }}' fi portableBuildArgs= @@ -83,40 +50,22 @@ steps: ${{ coalesce(parameters.platform.buildScript, './build.sh') }} --ci \ --configuration $buildConfig \ - --restore --build --pack $publishArgs -bl \ + --restore --build --pack -bl \ ${{ parameters.platform.buildArguments }} \ - $officialBuildArgs \ $internalRuntimeDownloadArgs \ - $internalRestoreArgs \ $targetRidArgs \ - $runtimeOsArgs \ - $baseOsArgs \ + $baseRidArgs \ $portableBuildArgs \ /p:DotNetBuildSourceOnly=true \ /p:DotNetBuildRepo=true \ - /p:AssetManifestFileName=$assetManifestFileName displayName: Build -# Upload build logs for diagnosis. -- task: CopyFiles@2 - displayName: Prepare BuildLogs staging directory - inputs: - SourceFolder: '$(Build.SourcesDirectory)' - Contents: | - **/*.log - **/*.binlog - artifacts/sb/prebuilt-report/** - TargetFolder: '$(Build.StagingDirectory)/BuildLogs' - CleanTargetFolder: true - continueOnError: true - condition: succeededOrFailed() - - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml parameters: is1ESPipeline: ${{ parameters.is1ESPipeline }} args: displayName: Publish BuildLogs - targetPath: '$(Build.StagingDirectory)/BuildLogs' + targetPath: artifacts/log/${{ coalesce(variables._BuildConfig, 'Release') }} artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt) continueOnError: true condition: succeededOrFailed() diff --git a/src/symreader/eng/common/tools.sh b/src/symreader/eng/common/tools.sh index d51f300c772..cc007b1f15a 100755 --- a/src/symreader/eng/common/tools.sh +++ b/src/symreader/eng/common/tools.sh @@ -5,6 +5,9 @@ # CI mode - set to true on CI server for PR validation build or official build. ci=${ci:-false} +# Build mode +source_build=${source_build:-false} + # Set to true to use the pipelines logger which will enable Azure logging output. # https://github.com/Microsoft/azure-pipelines-tasks/blob/master/docs/authoring/commands.md # This flag is meant as a temporary opt-opt for the feature while validate it across @@ -58,7 +61,8 @@ use_installed_dotnet_cli=${use_installed_dotnet_cli:-true} dotnetInstallScriptVersion=${dotnetInstallScriptVersion:-'v1'} # True to use global NuGet cache instead of restoring packages to repository-local directory. -if [[ "$ci" == true ]]; then +# Keep in sync with NuGetPackageroot in Arcade SDK's RepositoryLayout.props. +if [[ "$ci" == true || "$source_build" == true ]]; then use_global_nuget_cache=${use_global_nuget_cache:-false} else use_global_nuget_cache=${use_global_nuget_cache:-true} diff --git a/src/symreader/global.json b/src/symreader/global.json index 887c8cb53a2..abf0c7c9a3e 100644 --- a/src/symreader/global.json +++ b/src/symreader/global.json @@ -3,6 +3,6 @@ "dotnet": "10.0.100-preview.3.25201.16" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25251.105" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25260.104" } } From 41848198e02e345324340cf857b49a8fa0b49aba Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Tue, 13 May 2025 10:36:48 +0200 Subject: [PATCH 23/32] [main] Source code updates from dotnet/source-build-reference-packages (#521) Co-authored-by: dotnet-maestro[bot] --- .../git-info/source-build-reference-packages.props | 4 ++-- .../eng/Version.Details.xml | 10 +++++----- .../eng/Versions.props | 2 +- .../common/core-templates/steps/source-build.yml | 14 ++++---------- .../eng/common/tools.sh | 6 +++++- src/source-build-reference-packages/global.json | 2 +- src/source-manifest.json | 4 ++-- 7 files changed, 20 insertions(+), 22 deletions(-) diff --git a/prereqs/git-info/source-build-reference-packages.props b/prereqs/git-info/source-build-reference-packages.props index cfdb6cd5068..01cd870baef 100644 --- a/prereqs/git-info/source-build-reference-packages.props +++ b/prereqs/git-info/source-build-reference-packages.props @@ -1,8 +1,8 @@  - 804fed8577d3f6226b1a12966af5ddde6928106b - 20250508.1 + b43f862282711dcccd5b534620443e4c2947f8ba + 20250511.1 \ No newline at end of file diff --git a/src/source-build-reference-packages/eng/Version.Details.xml b/src/source-build-reference-packages/eng/Version.Details.xml index 3f409938e8f..3ca0f63b334 100644 --- a/src/source-build-reference-packages/eng/Version.Details.xml +++ b/src/source-build-reference-packages/eng/Version.Details.xml @@ -1,14 +1,14 @@ - + - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb https://github.com/dotnet/runtime diff --git a/src/source-build-reference-packages/eng/Versions.props b/src/source-build-reference-packages/eng/Versions.props index 84520f14477..fb164981c88 100644 --- a/src/source-build-reference-packages/eng/Versions.props +++ b/src/source-build-reference-packages/eng/Versions.props @@ -17,7 +17,7 @@ 6.0.0-preview.6.21352.12 6.0.0-preview.6.21352.12 - 10.0.100-preview.5.25257.101 + 10.0.100-preview.5.25260.104 1.4.13 diff --git a/src/source-build-reference-packages/eng/common/core-templates/steps/source-build.yml b/src/source-build-reference-packages/eng/common/core-templates/steps/source-build.yml index c7c062e88ee..f2a0f347fdd 100644 --- a/src/source-build-reference-packages/eng/common/core-templates/steps/source-build.yml +++ b/src/source-build-reference-packages/eng/common/core-templates/steps/source-build.yml @@ -38,14 +38,9 @@ steps: targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}' fi - runtimeOsArgs= - if [ '${{ parameters.platform.runtimeOS }}' != '' ]; then - runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}' - fi - - baseOsArgs= - if [ '${{ parameters.platform.baseOS }}' != '' ]; then - baseOsArgs='/p:BaseOS=${{ parameters.platform.baseOS }}' + baseRidArgs= + if [ '${{ parameters.platform.baseRID }}' != '' ]; then + baseRidArgs='/p:BaseRid=${{ parameters.platform.baseRID }}' fi portableBuildArgs= @@ -59,8 +54,7 @@ steps: ${{ parameters.platform.buildArguments }} \ $internalRuntimeDownloadArgs \ $targetRidArgs \ - $runtimeOsArgs \ - $baseOsArgs \ + $baseRidArgs \ $portableBuildArgs \ /p:DotNetBuildSourceOnly=true \ /p:DotNetBuildRepo=true \ diff --git a/src/source-build-reference-packages/eng/common/tools.sh b/src/source-build-reference-packages/eng/common/tools.sh index d51f300c772..cc007b1f15a 100755 --- a/src/source-build-reference-packages/eng/common/tools.sh +++ b/src/source-build-reference-packages/eng/common/tools.sh @@ -5,6 +5,9 @@ # CI mode - set to true on CI server for PR validation build or official build. ci=${ci:-false} +# Build mode +source_build=${source_build:-false} + # Set to true to use the pipelines logger which will enable Azure logging output. # https://github.com/Microsoft/azure-pipelines-tasks/blob/master/docs/authoring/commands.md # This flag is meant as a temporary opt-opt for the feature while validate it across @@ -58,7 +61,8 @@ use_installed_dotnet_cli=${use_installed_dotnet_cli:-true} dotnetInstallScriptVersion=${dotnetInstallScriptVersion:-'v1'} # True to use global NuGet cache instead of restoring packages to repository-local directory. -if [[ "$ci" == true ]]; then +# Keep in sync with NuGetPackageroot in Arcade SDK's RepositoryLayout.props. +if [[ "$ci" == true || "$source_build" == true ]]; then use_global_nuget_cache=${use_global_nuget_cache:-false} else use_global_nuget_cache=${use_global_nuget_cache:-true} diff --git a/src/source-build-reference-packages/global.json b/src/source-build-reference-packages/global.json index 8a4131bdcd1..254bec3b082 100644 --- a/src/source-build-reference-packages/global.json +++ b/src/source-build-reference-packages/global.json @@ -3,7 +3,7 @@ "dotnet": "10.0.100-preview.3.25201.16" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25257.101", + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25260.104", "Microsoft.Build.NoTargets": "3.7.0" } } diff --git a/src/source-manifest.json b/src/source-manifest.json index 0666c493837..0a3ac962cfc 100644 --- a/src/source-manifest.json +++ b/src/source-manifest.json @@ -135,10 +135,10 @@ }, { "packageVersion": "", - "barId": 267423, + "barId": 267819, "path": "source-build-reference-packages", "remoteUri": "https://github.com/dotnet/source-build-reference-packages", - "commitSha": "804fed8577d3f6226b1a12966af5ddde6928106b" + "commitSha": "b43f862282711dcccd5b534620443e4c2947f8ba" }, { "packageVersion": "10.0.0-beta.25261.1", From 327437ed57e41edec7b45832381d67523608f8d4 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Tue, 13 May 2025 10:37:09 +0200 Subject: [PATCH 24/32] [main] Source code updates from dotnet/cecil (#520) Co-authored-by: dotnet-maestro[bot] --- prereqs/git-info/cecil.props | 6 +- src/cecil/eng/Version.Details.xml | 6 +- .../core-templates/steps/source-build.yml | 63 ++----------------- src/cecil/eng/common/tools.sh | 6 +- src/cecil/global.json | 2 +- src/source-manifest.json | 6 +- 6 files changed, 21 insertions(+), 68 deletions(-) diff --git a/prereqs/git-info/cecil.props b/prereqs/git-info/cecil.props index 9c071741636..83a1cbe4fbf 100644 --- a/prereqs/git-info/cecil.props +++ b/prereqs/git-info/cecil.props @@ -1,8 +1,8 @@  - ace481b2c118341192e9ac0caceb17cede03ed47 - 20250502.1 - 0.11.5-alpha.25252.1 + 091a4d494e2575c524c316013a482ec88bba28f2 + 20250511.1 + 0.11.5-alpha.25261.1 \ No newline at end of file diff --git a/src/cecil/eng/Version.Details.xml b/src/cecil/eng/Version.Details.xml index 6d55eb3474a..29f8b749402 100644 --- a/src/cecil/eng/Version.Details.xml +++ b/src/cecil/eng/Version.Details.xml @@ -1,12 +1,12 @@ - + - + https://github.com/dotnet/dotnet - 3b83017bbef1dd0918f7c2f894cfd07f56bcd689 + 85778473549347b3e4bad3ea009e9438df7b11bb diff --git a/src/cecil/eng/common/core-templates/steps/source-build.yml b/src/cecil/eng/common/core-templates/steps/source-build.yml index c6b9ef51ac6..f2a0f347fdd 100644 --- a/src/cecil/eng/common/core-templates/steps/source-build.yml +++ b/src/cecil/eng/common/core-templates/steps/source-build.yml @@ -19,19 +19,6 @@ steps: set -x df -h - # If file changes are detected, set CopyWipIntoInnerSourceBuildRepo to copy the WIP changes into the inner source build repo. - internalRestoreArgs= - if ! git diff --quiet; then - internalRestoreArgs='/p:CopyWipIntoInnerSourceBuildRepo=true' - # The 'Copy WIP' feature of source build uses git stash to apply changes from the original repo. - # This only works if there is a username/email configured, which won't be the case in most CI runs. - git config --get user.email - if [ $? -ne 0 ]; then - git config user.email dn-bot@microsoft.com - git config user.name dn-bot - fi - fi - # If building on the internal project, the internal storage variable may be available (usually only if needed) # In that case, add variables to allow the download of internal runtimes if the specified versions are not found # in the default public locations. @@ -46,34 +33,14 @@ steps: buildConfig='$(_BuildConfig)' fi - officialBuildArgs= - if [ '${{ and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}' = 'True' ]; then - officialBuildArgs='/p:DotNetPublishUsingPipelines=true /p:OfficialBuildId=$(BUILD.BUILDNUMBER)' - fi - targetRidArgs= if [ '${{ parameters.platform.targetRID }}' != '' ]; then targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}' fi - runtimeOsArgs= - if [ '${{ parameters.platform.runtimeOS }}' != '' ]; then - runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}' - fi - - baseOsArgs= - if [ '${{ parameters.platform.baseOS }}' != '' ]; then - baseOsArgs='/p:BaseOS=${{ parameters.platform.baseOS }}' - fi - - publishArgs= - if [ '${{ parameters.platform.skipPublishValidation }}' != 'true' ]; then - publishArgs='--publish' - fi - - assetManifestFileName=SourceBuild_RidSpecific.xml - if [ '${{ parameters.platform.name }}' != '' ]; then - assetManifestFileName=SourceBuild_${{ parameters.platform.name }}.xml + baseRidArgs= + if [ '${{ parameters.platform.baseRID }}' != '' ]; then + baseRidArgs='/p:BaseRid=${{ parameters.platform.baseRID }}' fi portableBuildArgs= @@ -83,40 +50,22 @@ steps: ${{ coalesce(parameters.platform.buildScript, './build.sh') }} --ci \ --configuration $buildConfig \ - --restore --build --pack $publishArgs -bl \ + --restore --build --pack -bl \ ${{ parameters.platform.buildArguments }} \ - $officialBuildArgs \ $internalRuntimeDownloadArgs \ - $internalRestoreArgs \ $targetRidArgs \ - $runtimeOsArgs \ - $baseOsArgs \ + $baseRidArgs \ $portableBuildArgs \ /p:DotNetBuildSourceOnly=true \ /p:DotNetBuildRepo=true \ - /p:AssetManifestFileName=$assetManifestFileName displayName: Build -# Upload build logs for diagnosis. -- task: CopyFiles@2 - displayName: Prepare BuildLogs staging directory - inputs: - SourceFolder: '$(Build.SourcesDirectory)' - Contents: | - **/*.log - **/*.binlog - artifacts/sb/prebuilt-report/** - TargetFolder: '$(Build.StagingDirectory)/BuildLogs' - CleanTargetFolder: true - continueOnError: true - condition: succeededOrFailed() - - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml parameters: is1ESPipeline: ${{ parameters.is1ESPipeline }} args: displayName: Publish BuildLogs - targetPath: '$(Build.StagingDirectory)/BuildLogs' + targetPath: artifacts/log/${{ coalesce(variables._BuildConfig, 'Release') }} artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt) continueOnError: true condition: succeededOrFailed() diff --git a/src/cecil/eng/common/tools.sh b/src/cecil/eng/common/tools.sh index d51f300c772..cc007b1f15a 100755 --- a/src/cecil/eng/common/tools.sh +++ b/src/cecil/eng/common/tools.sh @@ -5,6 +5,9 @@ # CI mode - set to true on CI server for PR validation build or official build. ci=${ci:-false} +# Build mode +source_build=${source_build:-false} + # Set to true to use the pipelines logger which will enable Azure logging output. # https://github.com/Microsoft/azure-pipelines-tasks/blob/master/docs/authoring/commands.md # This flag is meant as a temporary opt-opt for the feature while validate it across @@ -58,7 +61,8 @@ use_installed_dotnet_cli=${use_installed_dotnet_cli:-true} dotnetInstallScriptVersion=${dotnetInstallScriptVersion:-'v1'} # True to use global NuGet cache instead of restoring packages to repository-local directory. -if [[ "$ci" == true ]]; then +# Keep in sync with NuGetPackageroot in Arcade SDK's RepositoryLayout.props. +if [[ "$ci" == true || "$source_build" == true ]]; then use_global_nuget_cache=${use_global_nuget_cache:-false} else use_global_nuget_cache=${use_global_nuget_cache:-true} diff --git a/src/cecil/global.json b/src/cecil/global.json index 779e69d7a18..18ddac93379 100644 --- a/src/cecil/global.json +++ b/src/cecil/global.json @@ -4,6 +4,6 @@ }, "msbuild-sdks": { "Microsoft.Build.NoTargets": "3.7.0", - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25251.105" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25260.104" } } diff --git a/src/source-manifest.json b/src/source-manifest.json index 0a3ac962cfc..06b7c27dfed 100644 --- a/src/source-manifest.json +++ b/src/source-manifest.json @@ -22,11 +22,11 @@ "commitSha": "1a7ca4a8236d2930b8af2489c0c3a14eb8627544" }, { - "packageVersion": "0.11.5-alpha.25252.1", - "barId": 266716, + "packageVersion": "0.11.5-alpha.25261.1", + "barId": 267824, "path": "cecil", "remoteUri": "https://github.com/dotnet/cecil", - "commitSha": "ace481b2c118341192e9ac0caceb17cede03ed47" + "commitSha": "091a4d494e2575c524c316013a482ec88bba28f2" }, { "packageVersion": "0.1.625601", From 208db93c1f5933bbdbfa84d25982f745e2b9a75d Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Tue, 13 May 2025 10:37:44 +0200 Subject: [PATCH 25/32] [main] Source code updates from dotnet/roslyn (#518) Co-authored-by: dotnet-maestro[bot] --- prereqs/git-info/roslyn.props | 6 +- src/roslyn/docs/analyzers/FixAllProvider.md | 2 +- src/roslyn/eng/Version.Details.xml | 2 +- src/roslyn/eng/build.ps1 | 11 +- src/roslyn/eng/build.sh | 19 +- .../CSharpDeclarationComputer.cs | 2 +- .../Test/CommandLine/CommandLineTests.cs | 14 +- .../Test/Emit3/Semantics/ExtensionTests.cs | 236 ++++++++++++++++++ .../DiagnosticStartAnalysisScope.cs | 11 +- .../InProcess/EditorInProcess.cs | 9 +- src/source-manifest.json | 6 +- 11 files changed, 284 insertions(+), 34 deletions(-) diff --git a/prereqs/git-info/roslyn.props b/prereqs/git-info/roslyn.props index 639f84f4896..ca6f43be563 100644 --- a/prereqs/git-info/roslyn.props +++ b/prereqs/git-info/roslyn.props @@ -1,8 +1,8 @@  - 7c625024a1984d9f04f317940d518402f5898758 - 20250510.2 - 5.0.0-1.25260.2 + 299955a9f762cc8e4b716a4801dc02ca6f41e3ef + 20250512.6 + 5.0.0-1.25262.6 \ No newline at end of file diff --git a/src/roslyn/docs/analyzers/FixAllProvider.md b/src/roslyn/docs/analyzers/FixAllProvider.md index 98548349e88..b7b0613ef85 100644 --- a/src/roslyn/docs/analyzers/FixAllProvider.md +++ b/src/roslyn/docs/analyzers/FixAllProvider.md @@ -69,7 +69,7 @@ It uses the below equivalence keys for its registered code actions to get the de - Qualified type name simplification: Formatted resource string "Simplify type name A.B", which explicitly includes the contents of the node being simplified. - Member access expressions: Formatted resource string "Simplify type name A.M", which explicitly includes the contents of the node being simplified. -Note that '`this` expression simplification' fix requires a different kind of an equivalence class from the other two simplifications. See method [GetCodeActionId](https://github.com/dotnet/roslyn/blob/main/src/Features/Core/Portable/ImplementAbstractClass/AbstractImplementAbstractClassCodeFixProvider.cs) for the actual implementation. +Note that '`this` expression simplification' fix requires a different kind of an equivalence class from the other two simplifications. See method [GetCodeActionId](https://github.com/dotnet/roslyn/blob/main/src/Analyzers/Core/CodeFixes/ImplementAbstractClass/AbstractImplementAbstractClassCodeFixProvider.cs) for the actual implementation. To summarize, use the equivalence key that best suits the category of fixes to be applied as part of a FixAll operation. diff --git a/src/roslyn/eng/Version.Details.xml b/src/roslyn/eng/Version.Details.xml index 80eda12a79b..711efd18b94 100644 --- a/src/roslyn/eng/Version.Details.xml +++ b/src/roslyn/eng/Version.Details.xml @@ -1,6 +1,6 @@ - + diff --git a/src/roslyn/eng/build.ps1 b/src/roslyn/eng/build.ps1 index fb1afbc1c24..87bbcb3ad75 100644 --- a/src/roslyn/eng/build.ps1 +++ b/src/roslyn/eng/build.ps1 @@ -43,7 +43,7 @@ param ( [switch]$prepareMachine, [switch]$useGlobalNuGetCache = $true, [switch]$warnAsError = $false, - [switch]$sourceBuild = $false, + [switch][Alias('pb')]$productBuild = $false, [switch]$oop64bit = $true, [switch]$lspEditor = $false, [string]$solution = "Roslyn.sln", @@ -112,7 +112,7 @@ function Print-Usage() { Write-Host " -prepareMachine Prepare machine for CI run, clean up processes after build" Write-Host " -useGlobalNuGetCache Use global NuGet cache." Write-Host " -warnAsError Treat all warnings as errors" - Write-Host " -sourceBuild Simulate building source-build" + Write-Host " -productBuild Build the repository in product-build mode" Write-Host " -solution Solution to build (default is Roslyn.sln)" Write-Host "" Write-Host "Official build settings:" @@ -210,7 +210,7 @@ function Process-Arguments() { $script:restore = $true } - if ($sourceBuild) { + if ($productBuild) { $script:msbuildEngine = "dotnet" } @@ -260,9 +260,6 @@ function BuildSolution() { # Workaround for some machines in the AzDO pool not allowing long paths $ibcDir = $RepoRoot - # Set DotNetBuildSourceOnly to 'true' if we're simulating building for source-build. - $buildFromSource = if ($sourceBuild) { "/p:DotNetBuildSourceOnly=true" } else { "" } - $generateDocumentationFile = if ($skipDocumentation) { "/p:GenerateDocumentationFile=false" } else { "" } $roslynUseHardLinks = if ($ci) { "/p:ROSLYNUSEHARDLINKS=true" } else { "" } @@ -287,9 +284,9 @@ function BuildSolution() { /p:IbcOptimizationDataDir=$ibcDir ` /p:VisualStudioIbcDrop=$ibcDropName ` /p:VisualStudioDropAccessToken=$officialVisualStudioDropAccessToken ` + /p:DotNetBuildRepo=$productBuild ` $suppressExtensionDeployment ` $msbuildWarnAsError ` - $buildFromSource ` $generateDocumentationFile ` $roslynUseHardLinks ` @properties diff --git a/src/roslyn/eng/build.sh b/src/roslyn/eng/build.sh index 87c1f7a03f1..87d91398271 100755 --- a/src/roslyn/eng/build.sh +++ b/src/roslyn/eng/build.sh @@ -37,7 +37,8 @@ usage() echo " --skipDocumentation Skip generation of XML documentation files" echo " --prepareMachine Prepare machine for CI run, clean up processes after build" echo " --warnAsError Treat all warnings as errors" - echo " --sourceBuild Simulate building for source-build" + echo " --sourceBuild Build the repository in source-only mode" + echo " --productBuild Build the repository in product-build mode." echo " --solution Solution to build (default is Compilers.slnf)" echo "" echo "Command line arguments starting with '/p:' are passed through to MSBuild." @@ -80,6 +81,7 @@ prepare_machine=false warn_as_error=false properties="" source_build=false +product_build=false solution_to_build="Compilers.slnf" args="" @@ -173,8 +175,12 @@ while [[ $# > 0 ]]; do --warnaserror) warn_as_error=true ;; - --sourcebuild|-sb) + --sourcebuild|--source-build|-sb) source_build=true + product_build=true + ;; + --productbuild|--product-build|-pb) + product_build=true ;; --solution) solution_to_build=$2 @@ -281,12 +287,6 @@ function BuildSolution { roslyn_use_hard_links="/p:ROSLYNUSEHARDLINKS=true" fi - local source_build_args="" - if [[ "$source_build" == true ]]; then - source_build_args="/p:DotNetBuildSourceOnly=true \ - /p:DotNetBuildRepo=true" - fi - # Setting /p:TreatWarningsAsErrors=true is a workaround for https://github.com/Microsoft/msbuild/issues/3062. # We don't pass /warnaserror to msbuild (warn_as_error is set to false by default above), but set # /p:TreatWarningsAsErrors=true so that compiler reported warnings, other than IDE0055 are treated as errors. @@ -308,7 +308,8 @@ function BuildSolution { /p:ContinuousIntegrationBuild=$ci \ /p:TreatWarningsAsErrors=true \ /p:TestRuntimeAdditionalArguments=$test_runtime_args \ - $source_build_args \ + /p:DotNetBuildSourceOnly=$source_build \ + /p:DotNetBuildRepo=$product_build \ $test_runtime \ $mono_tool \ $generate_documentation_file \ diff --git a/src/roslyn/src/Compilers/CSharp/CSharpAnalyzerDriver/CSharpDeclarationComputer.cs b/src/roslyn/src/Compilers/CSharp/CSharpAnalyzerDriver/CSharpDeclarationComputer.cs index b422629ed39..85c78efd1a2 100644 --- a/src/roslyn/src/Compilers/CSharp/CSharpAnalyzerDriver/CSharpDeclarationComputer.cs +++ b/src/roslyn/src/Compilers/CSharp/CSharpAnalyzerDriver/CSharpDeclarationComputer.cs @@ -102,7 +102,6 @@ private static void ComputeDeclarations( case SyntaxKind.StructDeclaration: case SyntaxKind.RecordDeclaration: case SyntaxKind.RecordStructDeclaration: - // Tracked by https://github.com/dotnet/roslyn/issues/76130 : likely needs work for analyzers { if (associatedSymbol is IMethodSymbol ctor) { @@ -123,6 +122,7 @@ private static void ComputeDeclarations( goto case SyntaxKind.InterfaceDeclaration; } case SyntaxKind.InterfaceDeclaration: + case SyntaxKind.ExtensionDeclaration: { var t = (TypeDeclarationSyntax)node; foreach (var decl in t.Members) diff --git a/src/roslyn/src/Compilers/CSharp/Test/CommandLine/CommandLineTests.cs b/src/roslyn/src/Compilers/CSharp/Test/CommandLine/CommandLineTests.cs index bd8a95b57f4..f67a433d908 100644 --- a/src/roslyn/src/Compilers/CSharp/Test/CommandLine/CommandLineTests.cs +++ b/src/roslyn/src/Compilers/CSharp/Test/CommandLine/CommandLineTests.cs @@ -1726,10 +1726,12 @@ public void LangVersion_LangVersions() public void LanguageVersionAdded_Canary() { // When a new version is added, this test will break. This list must be checked: - // - update the "UpgradeProject" codefixer - // - update all the tests that call this canary - // - update _MaxAvailableLangVersion (a relevant test should break when new version is introduced) - // - email release management to add to the release notes (see csharp-version in release.json in previous example: https://github.com/dotnet/core/pull/9493) + // 1. update the "UpgradeProject" codefixer + // 2. update all the tests that call this canary + // 3. update _MaxAvailableLangVersion (a relevant test should break when new version is introduced) + // 4. email release management to add to the release notes (see csharp-version in release.json in previous example: https://github.com/dotnet/core/pull/9493) + // 5. make csharplang updates documented at https://github.com/dotnet/csharplang/blob/main/Design-Process.md#steps-to-move-a-triaged-feature-to-an-implemented-feature + // 6. push the list of specs to Codex. See previous example: https://devdiv.visualstudio.com/OnlineServices/_git/CodexV2Data/pullrequest/618779 AssertEx.SetEqual(new[] { "default", "1", "2", "3", "4", "5", "6", "7.0", "7.1", "7.2", "7.3", "8.0", "9.0", "10.0", "11.0", "12.0", "13.0", "latest", "latestmajor", "preview" }, Enum.GetValues(typeof(LanguageVersion)).Cast().Select(v => v.ToDisplayString())); // For minor versions and new major versions, the format should be "x.y", such as "7.1" @@ -10039,7 +10041,7 @@ public class Program var outWriter = new StringWriter(CultureInfo.InvariantCulture); int exitCode = compiler.Run(outWriter); return (exitCode, outWriter.ToString()); - }; + } } // See also NullableContextTests.NullableAnalysisFlags_01(). @@ -10081,7 +10083,7 @@ string[] compileAndRun(string featureOpt) var outWriter = new StringWriter(CultureInfo.InvariantCulture); int exitCode = compiler.Run(outWriter); return outWriter.ToString().Split(new[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries); - }; + } } [Fact] diff --git a/src/roslyn/src/Compilers/CSharp/Test/Emit3/Semantics/ExtensionTests.cs b/src/roslyn/src/Compilers/CSharp/Test/Emit3/Semantics/ExtensionTests.cs index 4df892712c4..17f3ef8e322 100644 --- a/src/roslyn/src/Compilers/CSharp/Test/Emit3/Semantics/ExtensionTests.cs +++ b/src/roslyn/src/Compilers/CSharp/Test/Emit3/Semantics/ExtensionTests.cs @@ -5,12 +5,15 @@ using System; using System.Collections; +using System.Collections.Concurrent; using System.Collections.Generic; +using System.Collections.Immutable; using System.Linq; using Microsoft.CodeAnalysis.CSharp.Symbols; using Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE; using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.CodeAnalysis.CSharp.Test.Utilities; +using Microsoft.CodeAnalysis.Diagnostics; using Microsoft.CodeAnalysis.Emit; using Microsoft.CodeAnalysis.Test.Utilities; using Microsoft.CodeAnalysis.VisualBasic; @@ -37287,4 +37290,237 @@ static class E var model = comp.GetSemanticModel(tree); Assert.Equal(["(T, null)", "(T, T)"], PrintXmlNameSymbols(tree, model)); } + + [Fact] + public void AnalyzerActions_01() + { + var src = """ +static class E +{ + extension([Attr] T t) + { + [Attr2] + public void M() { } + + [Attr3] + public int P => 0; + } +} +"""; + + var analyzer = new AnalyzerActions_01_Analyzer(); + var comp = CreateCompilation(src); + comp.GetAnalyzerDiagnostics([analyzer], null).Verify(); + + AssertEx.SetEqual([ + "Attr2 -> void E.<>E__0.M()", + "M -> void E.<>E__0.M()", + "Attr3 -> System.Int32 E.<>E__0.P { get; }", + "P -> System.Int32 E.<>E__0.P { get; }", + "T -> E.<>E__0", + "Attr -> E.<>E__0", + "extension -> E.<>E__0"], + analyzer._results.ToArray()); + } + + private class AnalyzerActions_01_Analyzer : DiagnosticAnalyzer + { + public ConcurrentQueue _results = new ConcurrentQueue(); + + private static readonly DiagnosticDescriptor Descriptor = + new DiagnosticDescriptor("XY0000", "Test", "Test", "Test", DiagnosticSeverity.Warning, true, "Test", "Test"); + + public override ImmutableArray SupportedDiagnostics => [Descriptor]; + + public override void Initialize(AnalysisContext context) + { + context.RegisterSyntaxNodeAction(handle, SyntaxKind.ExtensionDeclaration); + context.RegisterSyntaxNodeAction(handle, SyntaxKind.IdentifierName); + context.RegisterSyntaxNodeAction(handle, SyntaxKind.MethodDeclaration); + context.RegisterSyntaxNodeAction(handle, SyntaxKind.PropertyDeclaration); + + void handle(SyntaxNodeAnalysisContext context) + { + _results.Enqueue(print(context)); + Assert.Same(context.Node.SyntaxTree, context.ContainingSymbol!.DeclaringSyntaxReferences.Single().SyntaxTree); + } + + static string print(SyntaxNodeAnalysisContext context) + { + var syntaxString = context.Node switch + { + ExtensionDeclarationSyntax => "extension", + MethodDeclarationSyntax method => method.Identifier.ValueText, + PropertyDeclarationSyntax property => property.Identifier.ValueText, + _ => context.Node.ToString() + }; + + return $"{syntaxString} -> {context.ContainingSymbol.ToTestDisplayString()}"; + } + } + } + + [Fact] + public void AnalyzerActions_02() + { + var src = """ +static class E +{ + extension(T t) + { + public void M(int i) { } + public int P => 0; + } + extension(__arglist) { } + extension(object o1, object o2) { } +} +"""; + + var analyzer = new AnalyzerActions_02_Analyzer(); + var comp = CreateCompilation(src); + comp.GetAnalyzerDiagnostics([analyzer], null).Verify(); + + AssertEx.SetEqual([ + "E", + "E.<>E__0", + "System.Int32 E.<>E__0.P { get; }", + "T t", + "E.<>E__1", + "E.<>E__2", + "System.Object o1", + "void E.<>E__0.M(System.Int32 i)", + "System.Int32 i", + "System.Int32 E.<>E__0.P.get"], + analyzer._results.ToArray()); + } + + private class AnalyzerActions_02_Analyzer : DiagnosticAnalyzer + { + public ConcurrentQueue _results = new ConcurrentQueue(); + + private static readonly DiagnosticDescriptor Descriptor = + new DiagnosticDescriptor("XY0000", "Test", "Test", "Test", DiagnosticSeverity.Warning, true, "Test", "Test"); + + public override ImmutableArray SupportedDiagnostics => [Descriptor]; + + public override void Initialize(AnalysisContext context) + { + context.RegisterSymbolAction(handle, SymbolKind.NamedType); + context.RegisterSymbolAction(handle, SymbolKind.Parameter); + context.RegisterSymbolAction(handle, SymbolKind.TypeParameter); + context.RegisterSymbolAction(handle, SymbolKind.Method); + context.RegisterSymbolAction(handle, SymbolKind.Property); + + void handle(SymbolAnalysisContext context) + { + _results.Enqueue(context.Symbol.ToTestDisplayString()); + } + } + } + + [Fact] + public void AnalyzerActions_03() + { + var src = """ +static class E +{ + extension(T t) + { + public void M() { } + public int P { get { return 0; } } + } +} +"""; + + var analyzer = new AnalyzerActions_03_Analyzer(); + var comp = CreateCompilation(src); + comp.GetAnalyzerDiagnostics([analyzer], null).Verify(); + + AssertEx.SetEqual([ + "public void M() { } -> void E.<>E__0.M()", + "get { return 0; } -> System.Int32 E.<>E__0.P.get"], + analyzer._results.ToArray()); + } + + private class AnalyzerActions_03_Analyzer : DiagnosticAnalyzer + { + public ConcurrentQueue _results = new ConcurrentQueue(); + + private static readonly DiagnosticDescriptor Descriptor = + new DiagnosticDescriptor("XY0000", "Test", "Test", "Test", DiagnosticSeverity.Warning, true, "Test", "Test"); + + public override ImmutableArray SupportedDiagnostics => [Descriptor]; + + public override void Initialize(AnalysisContext context) + { + context.RegisterOperationAction(handle, OperationKind.MethodBody); + + void handle(OperationAnalysisContext context) + { + _results.Enqueue($"{context.Operation.Syntax.ToString()} -> {context.ContainingSymbol.ToTestDisplayString()}"); + } + } + } + + [Fact] + public void AnalyzerActions_04() + { + var src = """ +static class E +{ + extension(T t) + { + public void M(int i) { } + public int P { get { return 0; } } + } +} +"""; + + var analyzer = new AnalyzerActions_04_Analyzer(); + var comp = CreateCompilation(src); + comp.GetAnalyzerDiagnostics([analyzer], null).Verify(); + + AssertEx.SetEqual([ + "Start: E", + "Start: E.<>E__0", + "Start: void E.<>E__0.M(System.Int32 i)", + "Start: System.Int32 E.<>E__0.P { get; }", + "Start: System.Int32 E.<>E__0.P.get", + "End: System.Int32 E.<>E__0.P { get; }", + "End: System.Int32 E.<>E__0.P.get", + "End: void E.<>E__0.M(System.Int32 i)", + "End: E.<>E__0", + "End: E"], + analyzer._results.ToArray()); + } + + private class AnalyzerActions_04_Analyzer : DiagnosticAnalyzer + { + public ConcurrentQueue _results = new ConcurrentQueue(); + + private static readonly DiagnosticDescriptor Descriptor = + new DiagnosticDescriptor("XY0000", "Test", "Test", "Test", DiagnosticSeverity.Warning, true, "Test", "Test"); + + public override ImmutableArray SupportedDiagnostics => [Descriptor]; + + public override void Initialize(AnalysisContext context) + { + context.RegisterSymbolStartAction(handleStart, SymbolKind.NamedType); + context.RegisterSymbolStartAction(handleStart, SymbolKind.Method); + context.RegisterSymbolStartAction(handleStart, SymbolKind.Property); + context.RegisterSymbolStartAction(handleStart, SymbolKind.Parameter); + context.RegisterSymbolStartAction(handleStart, SymbolKind.TypeParameter); + + void handleStart(SymbolStartAnalysisContext context) + { + _results.Enqueue($"Start: {context.Symbol.ToTestDisplayString()}"); + context.RegisterSymbolEndAction(handleEnd); + } + + void handleEnd(SymbolAnalysisContext context) + { + _results.Enqueue($"End: {context.Symbol.ToTestDisplayString()}"); + } + } + } } diff --git a/src/roslyn/src/Compilers/Core/Portable/DiagnosticAnalyzer/DiagnosticStartAnalysisScope.cs b/src/roslyn/src/Compilers/Core/Portable/DiagnosticAnalyzer/DiagnosticStartAnalysisScope.cs index ba5874c3d1d..db530e231f9 100644 --- a/src/roslyn/src/Compilers/Core/Portable/DiagnosticAnalyzer/DiagnosticStartAnalysisScope.cs +++ b/src/roslyn/src/Compilers/Core/Portable/DiagnosticAnalyzer/DiagnosticStartAnalysisScope.cs @@ -549,8 +549,15 @@ public void RegisterSymbolAction(Action action, Immutable break; case SymbolKind.NamedType: var namedType = (INamedTypeSymbol)context.Symbol; - var delegateInvokeMethod = namedType.DelegateInvokeMethod; - parameters = delegateInvokeMethod?.Parameters ?? ImmutableArray.Create(); + if (namedType.IsExtension) + { + parameters = namedType.ExtensionParameter is { } extensionParameter ? [extensionParameter] : []; + } + else + { + var delegateInvokeMethod = namedType.DelegateInvokeMethod; + parameters = delegateInvokeMethod?.Parameters ?? ImmutableArray.Create(); + } break; default: throw new ArgumentException($"{context.Symbol.Kind} is not supported.", nameof(context)); diff --git a/src/roslyn/src/VisualStudio/IntegrationTest/New.IntegrationTests/InProcess/EditorInProcess.cs b/src/roslyn/src/VisualStudio/IntegrationTest/New.IntegrationTests/InProcess/EditorInProcess.cs index 470a998f486..f41aae591ed 100644 --- a/src/roslyn/src/VisualStudio/IntegrationTest/New.IntegrationTests/InProcess/EditorInProcess.cs +++ b/src/roslyn/src/VisualStudio/IntegrationTest/New.IntegrationTests/InProcess/EditorInProcess.cs @@ -566,7 +566,14 @@ private async Task> GetNavigationBarComboBoxesAsync(IWpfTextView await JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken); var margin = await GetNavigationBarMarginAsync(textView, cancellationToken); - return margin.GetFieldValue>("_combos"); + try + { + return margin.GetFieldValue>("_combos"); + } + catch (FieldAccessException) + { + return margin.GetFieldValue>("Combos"); + } } private async Task GetNavigationBarMarginAsync(IWpfTextView textView, CancellationToken cancellationToken) diff --git a/src/source-manifest.json b/src/source-manifest.json index 06b7c27dfed..17b0e8ce7ef 100644 --- a/src/source-manifest.json +++ b/src/source-manifest.json @@ -92,11 +92,11 @@ "commitSha": "ddcd02f08f9ab3c57598550c15a7ce501341a5dd" }, { - "packageVersion": "5.0.0-1.25260.2", - "barId": 267779, + "packageVersion": "5.0.0-1.25262.6", + "barId": 267921, "path": "roslyn", "remoteUri": "https://github.com/dotnet/roslyn", - "commitSha": "7c625024a1984d9f04f317940d518402f5898758" + "commitSha": "299955a9f762cc8e4b716a4801dc02ca6f41e3ef" }, { "packageVersion": "10.0.0-preview.25260.1", From 33e4424c722bb29c1d6afbdf884ca2ac89827d13 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Tue, 13 May 2025 10:40:23 +0200 Subject: [PATCH 26/32] [main] Source code updates from dotnet/runtime (#529) Co-authored-by: dotnet-maestro[bot] --- prereqs/git-info/runtime.props | 6 +- src/runtime/.config/dotnet-tools.json | 2 +- src/runtime/eng/Version.Details.xml | 154 +++--- src/runtime/eng/Versions.props | 70 +-- .../libraries/helix-queues-setup.yml | 15 +- src/runtime/global.json | 8 +- .../src/System/Net/IPAddress.cs | 14 +- .../tests/FunctionalTests/IPAddressTest.cs | 4 + .../ClientAsyncAuthenticateTest.cs | 1 + .../System.Net.ServerSentEvents.Tests.csproj | 2 +- .../ref/System.Numerics.Vectors.cs | 74 ++- .../tests/Matrix3x2Tests.cs | 135 +++++ .../tests/Matrix4x4Tests.cs | 226 ++++++++ .../tests/Vector2Tests.cs | 47 ++ .../tests/Vector3Tests.cs | 37 ++ .../tests/Vector4Tests.cs | 28 + .../src/System/Numerics/Matrix3x2.Impl.cs | 77 --- .../src/System/Numerics/Matrix3x2.cs | 383 ++++++++++++-- .../src/System/Numerics/Matrix4x4.Impl.cs | 102 +--- .../src/System/Numerics/Matrix4x4.cs | 498 ++++++++++++++++-- .../src/System/Numerics/Plane.cs | 36 +- .../src/System/Numerics/Quaternion.cs | 16 +- .../src/System/Numerics/Vector.cs | 4 +- .../src/System/Numerics/Vector2.Extensions.cs | 10 + .../src/System/Numerics/Vector2.cs | 18 +- .../src/System/Numerics/Vector3.Extensions.cs | 5 + .../src/System/Numerics/Vector3.cs | 11 +- .../src/System/Numerics/Vector4.cs | 20 +- .../Runtime/Intrinsics/Vector128.Numerics.cs | 8 +- .../PortableThreadPool.WorkerThread.cs | 11 +- .../XslCompiledTransform.cs | 3 +- .../ref/System.Runtime.Intrinsics.cs | 4 + src/source-manifest.json | 6 +- 33 files changed, 1547 insertions(+), 488 deletions(-) diff --git a/prereqs/git-info/runtime.props b/prereqs/git-info/runtime.props index 75eef7e4751..52633a09c70 100644 --- a/prereqs/git-info/runtime.props +++ b/prereqs/git-info/runtime.props @@ -1,8 +1,8 @@  - 8b80947425177e7b500e13ec66d1b9936a67e5a5 - 20250511.2 - 10.0.0-preview.5.25261.2 + d2c561859bd6474b8ec38bf4ee7296e4e717ce1c + 20250512.10 + 10.0.0-preview.5.25262.10 \ No newline at end of file diff --git a/src/runtime/.config/dotnet-tools.json b/src/runtime/.config/dotnet-tools.json index 2f37ec69966..d5e70ab3de1 100644 --- a/src/runtime/.config/dotnet-tools.json +++ b/src/runtime/.config/dotnet-tools.json @@ -15,7 +15,7 @@ ] }, "microsoft.dotnet.xharness.cli": { - "version": "10.0.0-prerelease.25225.1", + "version": "10.0.0-prerelease.25255.1", "commands": [ "xharness" ] diff --git a/src/runtime/eng/Version.Details.xml b/src/runtime/eng/Version.Details.xml index 96d6ec2de38..71901af9210 100644 --- a/src/runtime/eng/Version.Details.xml +++ b/src/runtime/eng/Version.Details.xml @@ -1,5 +1,5 @@ - + https://github.com/dotnet/icu @@ -41,91 +41,91 @@ https://github.com/dotnet/llvm-project da5dd054a531e6fea65643b7e754285b73eab433 - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb https://github.com/dotnet/runtime-assets @@ -263,49 +263,49 @@ https://github.com/dotnet/llvm-project da5dd054a531e6fea65643b7e754285b73eab433 - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/xharness - 6702e80281066daa33390d759263823298486439 + e85bb14e85357ab678c2bcb0b6f2bac634fdd49b - + https://github.com/dotnet/xharness - 6702e80281066daa33390d759263823298486439 + e85bb14e85357ab678c2bcb0b6f2bac634fdd49b - + https://github.com/dotnet/xharness - 6702e80281066daa33390d759263823298486439 + e85bb14e85357ab678c2bcb0b6f2bac634fdd49b - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb https://dev.azure.com/dnceng/internal/_git/dotnet-optimization @@ -331,29 +331,29 @@ https://github.com/dotnet/runtime-assets 0f29fbf11b27f878e41f12a17bd0b94ef6410d42 - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 954d6157c9c22c8d8b4faddef70b2b703c65e77e + 85778473549347b3e4bad3ea009e9438df7b11bb https://dev.azure.com/dnceng/internal/_git/dotnet-optimization diff --git a/src/runtime/eng/Versions.props b/src/runtime/eng/Versions.props index 8919f98d959..056ada60e63 100644 --- a/src/runtime/eng/Versions.props +++ b/src/runtime/eng/Versions.props @@ -36,17 +36,17 @@ - 10.0.0-preview.25257.112 + 10.0.0-preview.25260.104 - 3.12.0-beta1.25257.112 + 5.0.0-1.25260.104 - 5.0.0-1.25257.112 - 5.0.0-1.25257.112 - 5.0.0-1.25257.112 + 5.0.0-1.25260.104 + 5.0.0-1.25260.104 + 5.0.0-1.25260.104 - 10.0.100-preview.5.25257.112 + 10.0.100-preview.5.25260.104 - 10.0.0-beta.25257.112 - 10.0.0-beta.25257.112 - 10.0.0-beta.25257.112 - 10.0.0-beta.25257.112 - 2.9.2-beta.25257.112 - 10.0.0-beta.25257.112 - 2.9.2-beta.25257.112 - 10.0.0-beta.25257.112 - 10.0.0-beta.25257.112 - 10.0.0-beta.25257.112 - 10.0.0-beta.25257.112 - 10.0.0-beta.25257.112 - 10.0.0-beta.25257.112 - 10.0.0-beta.25257.112 - 10.0.0-beta.25257.112 - 10.0.0-beta.25257.112 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 + 2.9.2-beta.25260.104 + 10.0.0-beta.25260.104 + 2.9.2-beta.25260.104 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 1.4.0 6.0.0-preview.1.102 - 10.0.0-preview.5.25257.112 + 10.0.0-preview.5.25260.104 6.0.0 - 10.0.0-preview.5.25257.112 - 10.0.0-preview.5.25257.112 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 6.0.0 4.6.1 @@ -128,16 +128,16 @@ 8.0.0 8.0.1 5.0.0 - 10.0.0-preview.5.25257.112 - 10.0.0-preview.5.25257.112 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 6.0.0 5.0.0 5.0.0 5.0.0 7.0.0 - 10.0.0-preview.5.25257.112 + 10.0.0-preview.5.25260.104 7.0.0 - 10.0.0-preview.5.25257.112 + 10.0.0-preview.5.25260.104 8.0.0 4.5.1 @@ -165,9 +165,9 @@ 10.0.0-beta.25255.1 10.0.0-beta.25255.1 - 10.0.0-prerelease.25225.1 - 10.0.0-prerelease.25225.1 - 10.0.0-prerelease.25225.1 + 10.0.0-prerelease.25255.1 + 10.0.0-prerelease.25255.1 + 10.0.0-prerelease.25255.1 10.0.0-alpha.0.25222.1 @@ -180,7 +180,7 @@ 2.0.0 17.10.0-beta1.24272.1 - 2.0.0-beta5.25257.112 + 2.0.0-beta5.25260.104 3.1.16 2.1.0 2.0.3 @@ -226,7 +226,7 @@ 9.0.0-preview-20241010.1 - 0.11.5-alpha.25257.112 + 0.11.5-alpha.25260.104 10.0.0-preview.5.25255.1 @@ -258,7 +258,7 @@ Note: when the name is updated, make sure to update dependency name in eng/pipelines/common/xplat-setup.yml like - DarcDependenciesChanged.Microsoft_NET_Workload_Emscripten_Current_Manifest-10_0_100_Transport --> - 10.0.100-preview.5.25257.112 + 10.0.100-preview.5.25260.104 $(MicrosoftNETWorkloadEmscriptenCurrentManifest100100TransportVersion) 1.1.87-gba258badda diff --git a/src/runtime/eng/pipelines/libraries/helix-queues-setup.yml b/src/runtime/eng/pipelines/libraries/helix-queues-setup.yml index 250f77708d0..1a3494b4186 100644 --- a/src/runtime/eng/pipelines/libraries/helix-queues-setup.yml +++ b/src/runtime/eng/pipelines/libraries/helix-queues-setup.yml @@ -49,23 +49,18 @@ jobs: - ${{ if eq(parameters.platform, 'linux_x64') }}: - ${{ if and(eq(parameters.jobParameters.interpreter, ''), ne(parameters.jobParameters.isSingleFile, true)) }}: - ${{ if and(eq(parameters.jobParameters.testScope, 'outerloop'), eq(parameters.jobParameters.runtimeFlavor, 'mono')) }}: - - SLES.15.Amd64.Open - - (Centos.10.Amd64.Open)Ubuntu.2204.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream-10-helix-amd64 - - (Fedora.42.Amd64.Open)Ubuntu.2204.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-42-helix-amd64 - - (Ubuntu.2504.Amd64.Open)Ubuntu.2204.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-25.04-helix-amd64 + - (AzureLinux.3.0.Amd64.Open)Ubuntu.2204.Amd64.open@mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-helix-amd64 - (Debian.13.Amd64.Open)Ubuntu.2204.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-13-helix-amd64 + - (Ubuntu.2504.Amd64.Open)Ubuntu.2204.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-25.04-helix-amd64 - ${{ if or(ne(parameters.jobParameters.testScope, 'outerloop'), ne(parameters.jobParameters.runtimeFlavor, 'mono')) }}: - ${{ if or(eq(parameters.jobParameters.isExtraPlatformsBuild, true), eq(parameters.jobParameters.includeAllPlatforms, true)) }}: - - SLES.15.Amd64.Open - (Fedora.42.Amd64.Open)ubuntu.2204.amd64.open@mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-42-helix-amd64 - - Ubuntu.2204.Amd64.Open - - (Debian.13.Amd64.Open)Ubuntu.2204.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-13-helix-amd64 - - (AzureLinux.3.0.Amd64.Open)Ubuntu.2204.Amd64.open@mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-helix-amd64 - (openSUSE.15.6.Amd64.Open)Ubuntu.2204.Amd64.open@mcr.microsoft.com/dotnet-buildtools/prereqs:opensuse-15.6-helix-amd64 - ${{ if or(ne(parameters.jobParameters.isExtraPlatformsBuild, true), eq(parameters.jobParameters.includeAllPlatforms, true)) }}: - - (Centos.10.Amd64.Open)Ubuntu.2204.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream-10-helix-amd64 - - (Debian.13.Amd64.Open)Ubuntu.2204.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-13-helix-amd64 + # inner loop default - Ubuntu.2204.Amd64.Open + - (AzureLinux.3.0.Amd64.Open)Ubuntu.2204.Amd64.open@mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-helix-amd64 + - (Centos.10.Amd64.Open)Ubuntu.2204.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream-10-helix-amd64 - ${{ if or(eq(parameters.jobParameters.interpreter, 'true'), eq(parameters.jobParameters.isSingleFile, true)) }}: # Limiting interp runs as we don't need as much coverage. - (Debian.13.Amd64.Open)Ubuntu.2204.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-13-helix-amd64 diff --git a/src/runtime/global.json b/src/runtime/global.json index 19fbdf1f9de..8616c8a6541 100644 --- a/src/runtime/global.json +++ b/src/runtime/global.json @@ -8,11 +8,11 @@ "dotnet": "10.0.100-preview.3.25201.16" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25257.112", - "Microsoft.DotNet.Helix.Sdk": "10.0.0-beta.25257.112", - "Microsoft.DotNet.SharedFramework.Sdk": "10.0.0-beta.25257.112", + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25260.104", + "Microsoft.DotNet.Helix.Sdk": "10.0.0-beta.25260.104", + "Microsoft.DotNet.SharedFramework.Sdk": "10.0.0-beta.25260.104", "Microsoft.Build.NoTargets": "3.7.0", "Microsoft.Build.Traversal": "3.4.0", - "Microsoft.NET.Sdk.IL": "10.0.0-preview.5.25257.112" + "Microsoft.NET.Sdk.IL": "10.0.0-preview.5.25260.104" } } diff --git a/src/runtime/src/libraries/System.Net.Primitives/src/System/Net/IPAddress.cs b/src/runtime/src/libraries/System.Net.Primitives/src/System/Net/IPAddress.cs index 541e96219c1..8df7c79d445 100644 --- a/src/runtime/src/libraries/System.Net.Primitives/src/System/Net/IPAddress.cs +++ b/src/runtime/src/libraries/System.Net.Primitives/src/System/Net/IPAddress.cs @@ -28,11 +28,11 @@ public class IPAddress : ISpanFormattable, ISpanParsable, IUtf8SpanFo internal const uint LoopbackMaskHostOrder = 0xFF000000; - public static readonly IPAddress IPv6Any = new IPAddress((ReadOnlySpan)[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 0); - public static readonly IPAddress IPv6Loopback = new IPAddress((ReadOnlySpan)[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], 0); + public static readonly IPAddress IPv6Any = new ReadOnlyIPAddress([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 0); + public static readonly IPAddress IPv6Loopback = new ReadOnlyIPAddress([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1], 0); public static readonly IPAddress IPv6None = IPv6Any; - private static readonly IPAddress s_loopbackMappedToIPv6 = new IPAddress((ReadOnlySpan)[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 127, 0, 0, 1], 0); + private static readonly IPAddress s_loopbackMappedToIPv6 = new ReadOnlyIPAddress([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 127, 0, 0, 1], 0); /// /// For IPv4 addresses, this field stores the Address. @@ -438,6 +438,11 @@ public long ScopeId ThrowSocketOperationNotSupported(); } + if (this is ReadOnlyIPAddress) + { + ThrowSocketOperationNotSupported(); + } + // Consider: Since scope is only valid for link-local and site-local // addresses we could implement some more robust checking here ArgumentOutOfRangeException.ThrowIfNegative(value); @@ -772,6 +777,9 @@ private sealed class ReadOnlyIPAddress : IPAddress { public ReadOnlyIPAddress(ReadOnlySpan newAddress) : base(newAddress) { } + + public ReadOnlyIPAddress(ReadOnlySpan address, long scopeid) : base(address, scopeid) + { } } } } diff --git a/src/runtime/src/libraries/System.Net.Primitives/tests/FunctionalTests/IPAddressTest.cs b/src/runtime/src/libraries/System.Net.Primitives/tests/FunctionalTests/IPAddressTest.cs index 6175d764159..0f02032c28e 100644 --- a/src/runtime/src/libraries/System.Net.Primitives/tests/FunctionalTests/IPAddressTest.cs +++ b/src/runtime/src/libraries/System.Net.Primitives/tests/FunctionalTests/IPAddressTest.cs @@ -346,6 +346,10 @@ public static void Address_ReadOnlyStatics_Set_Failure() Assert.Throws(() => IPAddress.Broadcast.Address = MaxAddress - 1); Assert.Throws(() => IPAddress.Loopback.Address = MaxAddress - 1); Assert.Throws(() => IPAddress.None.Address = MaxAddress - 1); + + Assert.Throws(() => IPAddress.IPv6Any.ScopeId = 1); + Assert.Throws(() => IPAddress.IPv6Loopback.ScopeId = 1); + Assert.Throws(() => IPAddress.IPv6None.ScopeId = 1); } #pragma warning restore 618 } diff --git a/src/runtime/src/libraries/System.Net.Security/tests/FunctionalTests/ClientAsyncAuthenticateTest.cs b/src/runtime/src/libraries/System.Net.Security/tests/FunctionalTests/ClientAsyncAuthenticateTest.cs index acdf3cf160e..addde8483c8 100644 --- a/src/runtime/src/libraries/System.Net.Security/tests/FunctionalTests/ClientAsyncAuthenticateTest.cs +++ b/src/runtime/src/libraries/System.Net.Security/tests/FunctionalTests/ClientAsyncAuthenticateTest.cs @@ -28,6 +28,7 @@ public async Task ClientAsyncAuthenticate_ServerRequireEncryption_ConnectWithEnc } [Fact] + [ActiveIssue("https://github.com/dotnet/runtime/issues/115467", TestPlatforms.Android)] public async Task ClientAsyncAuthenticate_ConnectionInfoInCallback_DoesNotThrow() { await ClientAsyncSslHelper(EncryptionPolicy.RequireEncryption, SslProtocols.Tls12, SslProtocolSupport.DefaultSslProtocols, AllowAnyServerCertificateAndVerifyConnectionInfo); diff --git a/src/runtime/src/libraries/System.Net.ServerSentEvents/tests/System.Net.ServerSentEvents.Tests.csproj b/src/runtime/src/libraries/System.Net.ServerSentEvents/tests/System.Net.ServerSentEvents.Tests.csproj index 1f66a4d28e6..adcbe23a6d1 100644 --- a/src/runtime/src/libraries/System.Net.ServerSentEvents/tests/System.Net.ServerSentEvents.Tests.csproj +++ b/src/runtime/src/libraries/System.Net.ServerSentEvents/tests/System.Net.ServerSentEvents.Tests.csproj @@ -15,11 +15,11 @@ - + diff --git a/src/runtime/src/libraries/System.Numerics.Vectors/ref/System.Numerics.Vectors.cs b/src/runtime/src/libraries/System.Numerics.Vectors/ref/System.Numerics.Vectors.cs index 33d5c9c4843..5cf9aa45bd0 100644 --- a/src/runtime/src/libraries/System.Numerics.Vectors/ref/System.Numerics.Vectors.cs +++ b/src/runtime/src/libraries/System.Numerics.Vectors/ref/System.Numerics.Vectors.cs @@ -16,10 +16,18 @@ public partial struct Matrix3x2 : System.IEquatable public float M32; public Matrix3x2(float m11, float m12, float m21, float m22, float m31, float m32) { throw null; } public static System.Numerics.Matrix3x2 Identity { get { throw null; } } - public float this[int row, int column] { readonly get { throw null; } set { throw null; } } public readonly bool IsIdentity { get { throw null; } } - public System.Numerics.Vector2 Translation { readonly get { throw null; } set { } } + public System.Numerics.Vector2 Translation { readonly get { throw null; } set { throw null; } } + public System.Numerics.Vector2 X { readonly get { throw null; } set { throw null; } } + public System.Numerics.Vector2 Y { readonly get { throw null; } set { throw null; } } + public System.Numerics.Vector2 Z { readonly get { throw null; } set { throw null; } } + public System.Numerics.Vector2 this[int row] { readonly get { throw null; } set { throw null; } } + public float this[int row, int column] { readonly get { throw null; } set { throw null; } } public static System.Numerics.Matrix3x2 Add(System.Numerics.Matrix3x2 value1, System.Numerics.Matrix3x2 value2) { throw null; } + public static Matrix3x2 Create(float value) { throw null; } + public static Matrix3x2 Create(System.Numerics.Vector2 value) { throw null; } + public static Matrix3x2 Create(System.Numerics.Vector2 x, System.Numerics.Vector2 y, System.Numerics.Vector2 z) { throw null; } + public static Matrix3x2 Create(float m11, float m12, float m21, float m22, float m31, float m32) { throw null; } public static System.Numerics.Matrix3x2 CreateRotation(float radians) { throw null; } public static System.Numerics.Matrix3x2 CreateRotation(float radians, System.Numerics.Vector2 centerPoint) { throw null; } public static System.Numerics.Matrix3x2 CreateScale(System.Numerics.Vector2 scales) { throw null; } @@ -35,6 +43,8 @@ public partial struct Matrix3x2 : System.IEquatable public readonly bool Equals(System.Numerics.Matrix3x2 other) { throw null; } public override readonly bool Equals([System.Diagnostics.CodeAnalysis.NotNullWhenAttribute(true)] object? obj) { throw null; } public readonly float GetDeterminant() { throw null; } + public readonly float GetElement(int row, int column) { throw null; } + public readonly System.Numerics.Vector2 GetRow(int index) { throw null; } public override readonly int GetHashCode() { throw null; } public static bool Invert(System.Numerics.Matrix3x2 matrix, out System.Numerics.Matrix3x2 result) { throw null; } public static System.Numerics.Matrix3x2 Lerp(System.Numerics.Matrix3x2 matrix1, System.Numerics.Matrix3x2 matrix2, float amount) { throw null; } @@ -50,6 +60,8 @@ public partial struct Matrix3x2 : System.IEquatable public static System.Numerics.Matrix3x2 operator -(System.Numerics.Matrix3x2 value) { throw null; } public static System.Numerics.Matrix3x2 Subtract(System.Numerics.Matrix3x2 value1, System.Numerics.Matrix3x2 value2) { throw null; } public override readonly string ToString() { throw null; } + public readonly System.Numerics.Matrix3x2 WithElement(int row, int column, float value) { throw null; } + public readonly System.Numerics.Matrix3x2 WithRow(int index, System.Numerics.Vector2 value) { throw null; } } public partial struct Matrix4x4 : System.IEquatable { @@ -72,10 +84,20 @@ public partial struct Matrix4x4 : System.IEquatable public Matrix4x4(System.Numerics.Matrix3x2 value) { throw null; } public Matrix4x4(float m11, float m12, float m13, float m14, float m21, float m22, float m23, float m24, float m31, float m32, float m33, float m34, float m41, float m42, float m43, float m44) { throw null; } public static System.Numerics.Matrix4x4 Identity { get { throw null; } } - public float this[int row, int column] { readonly get { throw null; } set { throw null; } } public readonly bool IsIdentity { get { throw null; } } - public System.Numerics.Vector3 Translation { readonly get { throw null; } set { } } + public System.Numerics.Vector3 Translation { readonly get { throw null; } set { throw null; } } + public System.Numerics.Vector4 X { readonly get { throw null; } set { throw null; } } + public System.Numerics.Vector4 Y { readonly get { throw null; } set { throw null; } } + public System.Numerics.Vector4 Z { readonly get { throw null; } set { throw null; } } + public System.Numerics.Vector4 W { readonly get { throw null; } set { throw null; } } + public System.Numerics.Vector4 this[int row] { readonly get { throw null; } set { throw null; } } + public float this[int row, int column] { readonly get { throw null; } set { throw null; } } public static System.Numerics.Matrix4x4 Add(System.Numerics.Matrix4x4 value1, System.Numerics.Matrix4x4 value2) { throw null; } + public static Matrix4x4 Create(float value) { throw null; } + public static Matrix4x4 Create(System.Numerics.Matrix3x2 value) { throw null; } + public static Matrix4x4 Create(System.Numerics.Vector4 value) { throw null; } + public static Matrix4x4 Create(System.Numerics.Vector4 x, System.Numerics.Vector4 y, System.Numerics.Vector4 z, System.Numerics.Vector4 w) { throw null; } + public static Matrix4x4 Create(float m11, float m12, float m13, float m14, float m21, float m22, float m23, float m24, float m31, float m32, float m33, float m34, float m41, float m42, float m43, float m44) { throw null; } public static System.Numerics.Matrix4x4 CreateBillboard(System.Numerics.Vector3 objectPosition, System.Numerics.Vector3 cameraPosition, System.Numerics.Vector3 cameraUpVector, System.Numerics.Vector3 cameraForwardVector) { throw null; } public static System.Numerics.Matrix4x4 CreateBillboardLeftHanded(System.Numerics.Vector3 objectPosition, System.Numerics.Vector3 cameraPosition, System.Numerics.Vector3 cameraUpVector, System.Numerics.Vector3 cameraForwardVector) { throw null; } public static System.Numerics.Matrix4x4 CreateConstrainedBillboard(System.Numerics.Vector3 objectPosition, System.Numerics.Vector3 cameraPosition, System.Numerics.Vector3 rotateAxis, System.Numerics.Vector3 cameraForwardVector, System.Numerics.Vector3 objectForwardVector) { throw null; } @@ -120,6 +142,8 @@ public partial struct Matrix4x4 : System.IEquatable public readonly bool Equals(System.Numerics.Matrix4x4 other) { throw null; } public override readonly bool Equals([System.Diagnostics.CodeAnalysis.NotNullWhenAttribute(true)] object? obj) { throw null; } public readonly float GetDeterminant() { throw null; } + public readonly float GetElement(int row, int column) { throw null; } + public readonly System.Numerics.Vector4 GetRow(int index) { throw null; } public override readonly int GetHashCode() { throw null; } public static bool Invert(System.Numerics.Matrix4x4 matrix, out System.Numerics.Matrix4x4 result) { throw null; } public static System.Numerics.Matrix4x4 Lerp(System.Numerics.Matrix4x4 matrix1, System.Numerics.Matrix4x4 matrix2, float amount) { throw null; } @@ -137,14 +161,19 @@ public partial struct Matrix4x4 : System.IEquatable public override readonly string ToString() { throw null; } public static System.Numerics.Matrix4x4 Transform(System.Numerics.Matrix4x4 value, System.Numerics.Quaternion rotation) { throw null; } public static System.Numerics.Matrix4x4 Transpose(System.Numerics.Matrix4x4 matrix) { throw null; } + public readonly System.Numerics.Matrix4x4 WithElement(int row, int column, float value) { throw null; } + public readonly System.Numerics.Matrix4x4 WithRow(int index, System.Numerics.Vector4 value) { throw null; } } public partial struct Plane : System.IEquatable { public System.Numerics.Vector3 Normal; public float D; - public Plane(System.Numerics.Vector3 normal, float d) { throw null; } public Plane(System.Numerics.Vector4 value) { throw null; } + public Plane(System.Numerics.Vector3 normal, float d) { throw null; } public Plane(float x, float y, float z, float d) { throw null; } + public static Plane Create(System.Numerics.Vector4 value) { throw null; } + public static Plane Create(System.Numerics.Vector3 normal, float d) { throw null; } + public static Plane Create(float x, float y, float z, float d) { throw null; } public static System.Numerics.Plane CreateFromVertices(System.Numerics.Vector3 point1, System.Numerics.Vector3 point2, System.Numerics.Vector3 point3) { throw null; } public static float Dot(System.Numerics.Plane plane, System.Numerics.Vector4 value) { throw null; } public static float DotCoordinate(System.Numerics.Plane plane, System.Numerics.Vector3 value) { throw null; } @@ -174,6 +203,8 @@ public partial struct Quaternion : System.IEquatable public static System.Numerics.Quaternion Add(System.Numerics.Quaternion value1, System.Numerics.Quaternion value2) { throw null; } public static System.Numerics.Quaternion Concatenate(System.Numerics.Quaternion value1, System.Numerics.Quaternion value2) { throw null; } public static System.Numerics.Quaternion Conjugate(System.Numerics.Quaternion value) { throw null; } + public static System.Numerics.Quaternion Create(System.Numerics.Vector3 vectorPart, float scalarPart) { throw null; } + public static System.Numerics.Quaternion Create(float x, float y, float z, float w) { throw null; } public static System.Numerics.Quaternion CreateFromAxisAngle(System.Numerics.Vector3 axis, float angle) { throw null; } public static System.Numerics.Quaternion CreateFromRotationMatrix(System.Numerics.Matrix4x4 matrix) { throw null; } public static System.Numerics.Quaternion CreateFromYawPitchRoll(float yaw, float pitch, float roll) { throw null; } @@ -215,8 +246,11 @@ public static partial class Vector public static System.Numerics.Vector As(this System.Numerics.Vector vector) { throw null; } public static System.Numerics.Plane AsPlane(this System.Numerics.Vector4 value) { throw null; } public static System.Numerics.Quaternion AsQuaternion(this System.Numerics.Vector4 value) { throw null; } + public static System.Numerics.Vector2 AsVector2(this System.Numerics.Vector3 value) { throw null; } public static System.Numerics.Vector2 AsVector2(this System.Numerics.Vector4 value) { throw null; } + public static System.Numerics.Vector3 AsVector3(this System.Numerics.Vector2 value) { throw null; } public static System.Numerics.Vector3 AsVector3(this System.Numerics.Vector4 value) { throw null; } + public static System.Numerics.Vector3 AsVector3Unsafe(this System.Numerics.Vector2 value) { throw null; } public static System.Numerics.Vector4 AsVector4(this System.Numerics.Plane value) { throw null; } public static System.Numerics.Vector4 AsVector4(this System.Numerics.Quaternion value) { throw null; } public static System.Numerics.Vector4 AsVector4(this System.Numerics.Vector2 value) { throw null; } @@ -274,6 +308,8 @@ public static partial class Vector public static int CountWhereAllBitsSet(System.Numerics.Vector vector) { throw null; } public static System.Numerics.Vector Create(T value) { throw null; } public static System.Numerics.Vector Create(System.ReadOnlySpan values) { throw null; } + public static System.Numerics.Vector CreateScalar(T value) { throw null; } + public static System.Numerics.Vector CreateScalarUnsafe(T value) { throw null; } public static System.Numerics.Vector CreateSequence(T start, T step) { throw null; } public static System.Numerics.Vector DegreesToRadians(System.Numerics.Vector degrees) { throw null; } public static System.Numerics.Vector DegreesToRadians(System.Numerics.Vector degrees) { throw null; } @@ -561,13 +597,15 @@ public partial struct Vector2 : System.IEquatable, Syst public static System.Numerics.Vector2 CopySign(System.Numerics.Vector2 value, System.Numerics.Vector2 sign) { throw null; } public static int Count(System.Numerics.Vector2 vector, float value) { throw null; } public static int CountWhereAllBitsSet(System.Numerics.Vector2 vector) { throw null; } - public static System.Numerics.Vector2 Create(float value) { throw null; } - public static System.Numerics.Vector2 Create(float x, float y) { throw null; } - public static System.Numerics.Vector2 Create(System.ReadOnlySpan values) { throw null; } public readonly void CopyTo(float[] array) { } public readonly void CopyTo(float[] array, int index) { } public readonly void CopyTo(System.Span destination) { } public static System.Numerics.Vector2 Cos(System.Numerics.Vector2 vector) { throw null; } + public static System.Numerics.Vector2 Create(float value) { throw null; } + public static System.Numerics.Vector2 Create(float x, float y) { throw null; } + public static System.Numerics.Vector2 Create(System.ReadOnlySpan values) { throw null; } + public static System.Numerics.Vector2 CreateScalar(float x) { throw null; } + public static System.Numerics.Vector2 CreateScalarUnsafe(float x) { throw null; } public readonly bool TryCopyTo(System.Span destination) { throw null; } public static System.Numerics.Vector2 DegreesToRadians(System.Numerics.Vector2 degrees) { throw null; } public static float Distance(System.Numerics.Vector2 value1, System.Numerics.Vector2 value2) { throw null; } @@ -726,14 +764,16 @@ public partial struct Vector3 : System.IEquatable, Syst public static System.Numerics.Vector3 CopySign(System.Numerics.Vector3 value, System.Numerics.Vector3 sign) { throw null; } public static int Count(System.Numerics.Vector3 vector, float value) { throw null; } public static int CountWhereAllBitsSet(System.Numerics.Vector3 vector) { throw null; } - public static System.Numerics.Vector3 Create(float value) { throw null; } - public static System.Numerics.Vector3 Create(System.Numerics.Vector2 vector, float z) { throw null; } - public static System.Numerics.Vector3 Create(float x, float y, float z) { throw null; } - public static System.Numerics.Vector3 Create(System.ReadOnlySpan values) { throw null; } public readonly void CopyTo(float[] array) { } public readonly void CopyTo(float[] array, int index) { } public readonly void CopyTo(System.Span destination) { } public static System.Numerics.Vector3 Cos(System.Numerics.Vector3 vector) { throw null; } + public static System.Numerics.Vector3 Create(float value) { throw null; } + public static System.Numerics.Vector3 Create(System.Numerics.Vector2 vector, float z) { throw null; } + public static System.Numerics.Vector3 Create(float x, float y, float z) { throw null; } + public static System.Numerics.Vector3 Create(System.ReadOnlySpan values) { throw null; } + public static System.Numerics.Vector3 CreateScalar(float x) { throw null; } + public static System.Numerics.Vector3 CreateScalarUnsafe(float x) { throw null; } public readonly bool TryCopyTo(System.Span destination) { throw null; } public static System.Numerics.Vector3 Cross(System.Numerics.Vector3 vector1, System.Numerics.Vector3 vector2) { throw null; } public static System.Numerics.Vector3 DegreesToRadians(System.Numerics.Vector3 degrees) { throw null; } @@ -893,15 +933,17 @@ public partial struct Vector4 : System.IEquatable, Syst public static System.Numerics.Vector4 CopySign(System.Numerics.Vector4 value, System.Numerics.Vector4 sign) { throw null; } public static int Count(System.Numerics.Vector4 vector, float value) { throw null; } public static int CountWhereAllBitsSet(System.Numerics.Vector4 vector) { throw null; } + public readonly void CopyTo(float[] array) { } + public readonly void CopyTo(float[] array, int index) { } + public readonly void CopyTo(System.Span destination) { } + public static System.Numerics.Vector4 Cos(System.Numerics.Vector4 vector) { throw null; } public static System.Numerics.Vector4 Create(float value) { throw null; } public static System.Numerics.Vector4 Create(System.Numerics.Vector2 vector, float z, float w) { throw null; } public static System.Numerics.Vector4 Create(System.Numerics.Vector3 vector, float w) { throw null; } public static System.Numerics.Vector4 Create(float x, float y, float z, float w) { throw null; } public static System.Numerics.Vector4 Create(System.ReadOnlySpan values) { throw null; } - public readonly void CopyTo(float[] array) { } - public readonly void CopyTo(float[] array, int index) { } - public readonly void CopyTo(System.Span destination) { } - public static System.Numerics.Vector4 Cos(System.Numerics.Vector4 vector) { throw null; } + public static System.Numerics.Vector4 CreateScalar(float x) { throw null; } + public static System.Numerics.Vector4 CreateScalarUnsafe(float x) { throw null; } public readonly bool TryCopyTo(System.Span destination) { throw null; } public static System.Numerics.Vector4 DegreesToRadians(System.Numerics.Vector4 degrees) { throw null; } public static float Distance(System.Numerics.Vector4 value1, System.Numerics.Vector4 value2) { throw null; } diff --git a/src/runtime/src/libraries/System.Numerics.Vectors/tests/Matrix3x2Tests.cs b/src/runtime/src/libraries/System.Numerics.Vectors/tests/Matrix3x2Tests.cs index 4374cb75b2f..f06cc4e73dc 100644 --- a/src/runtime/src/libraries/System.Numerics.Vectors/tests/Matrix3x2Tests.cs +++ b/src/runtime/src/libraries/System.Numerics.Vectors/tests/Matrix3x2Tests.cs @@ -208,6 +208,8 @@ public void Matrix3x2InvertAffineTest() Assert.True(MathHelper.Equal(i, Matrix3x2.Identity)); } + + // A test for CreateRotation (float) [Fact] public void Matrix3x2CreateRotationTest() @@ -1081,5 +1083,138 @@ public unsafe void Matrix3x2FieldOffsetTest() Assert.Equal(new IntPtr(basePtr + 4), new IntPtr(&mat.M31)); Assert.Equal(new IntPtr(basePtr + 5), new IntPtr(&mat.M32)); } + + [Fact] + public void Matrix3x2CreateBroadcastScalarTest() + { + Matrix3x2 a = Matrix3x2.Create(float.Pi); + + Assert.Equal(Vector2.Create(float.Pi), a.X); + Assert.Equal(Vector2.Create(float.Pi), a.Y); + Assert.Equal(Vector2.Create(float.Pi), a.Z); + } + + [Fact] + public void Matrix3x2CreateBroadcastVectorTest() + { + Matrix3x2 a = Matrix3x2.Create(Vector2.Create(float.Pi, float.E)); + + Assert.Equal(Vector2.Create(float.Pi, float.E), a.X); + Assert.Equal(Vector2.Create(float.Pi, float.E), a.Y); + Assert.Equal(Vector2.Create(float.Pi, float.E), a.Z); + } + + [Fact] + public void Matrix3x2CreateVectorsTest() + { + Matrix3x2 a = Matrix3x2.Create( + Vector2.Create(11.0f, 12.0f), + Vector2.Create(21.0f, 22.0f), + Vector2.Create(31.0f, 32.0f) + ); + + Assert.Equal(Vector2.Create(11.0f, 12.0f), a.X); + Assert.Equal(Vector2.Create(21.0f, 22.0f), a.Y); + Assert.Equal(Vector2.Create(31.0f, 32.0f), a.Z); + } + + [Fact] + public void Matrix3x2GetElementTest() + { + Matrix3x2 a = GenerateTestMatrix(); + + Assert.Equal(a.M11, a.X.X); + Assert.Equal(a.M11, a[0, 0]); + Assert.Equal(a.M11, a.GetElement(0, 0)); + + Assert.Equal(a.M12, a.X.Y); + Assert.Equal(a.M12, a[0, 1]); + Assert.Equal(a.M12, a.GetElement(0, 1)); + + Assert.Equal(a.M21, a.Y.X); + Assert.Equal(a.M21, a[1, 0]); + Assert.Equal(a.M21, a.GetElement(1, 0)); + + Assert.Equal(a.M22, a.Y.Y); + Assert.Equal(a.M22, a[1, 1]); + Assert.Equal(a.M22, a.GetElement(1, 1)); + + Assert.Equal(a.M31, a.Z.X); + Assert.Equal(a.M31, a[2, 0]); + Assert.Equal(a.M31, a.GetElement(2, 0)); + + Assert.Equal(a.M32, a.Z.Y); + Assert.Equal(a.M32, a[2, 1]); + Assert.Equal(a.M32, a.GetElement(2, 1)); + } + + [Fact] + public void Matrix3x2GetRowTest() + { + Matrix3x2 a = GenerateTestMatrix(); + + Vector2 vx = new Vector2(a.M11, a.M12); + Assert.Equal(vx, a.X); + Assert.Equal(vx, a[0]); + Assert.Equal(vx, a.GetRow(0)); + + Vector2 vy = new Vector2(a.M21, a.M22); + Assert.Equal(vy, a.Y); + Assert.Equal(vy, a[1]); + Assert.Equal(vy, a.GetRow(1)); + + Vector2 vz = new Vector2(a.M31, a.M32); + Assert.Equal(vz, a.Z); + Assert.Equal(vz, a[2]); + Assert.Equal(vz, a.GetRow(2)); + } + + [Fact] + public void Matrix3x2WithElementTest() + { + Matrix3x2 a = Matrix3x2.Identity; + + a[0, 0] = 11.0f; + Assert.Equal(11.5f, a.WithElement(0, 0, 11.5f).M11); + Assert.Equal(11.0f, a.M11); + + a[0, 1] = 12.0f; + Assert.Equal(12.5f, a.WithElement(0, 1, 12.5f).M12); + Assert.Equal(12.0f, a.M12); + + a[1, 0] = 21.0f; + Assert.Equal(21.5f, a.WithElement(1, 0, 21.5f).M21); + Assert.Equal(21.0f, a.M21); + + a[1, 1] = 22.0f; + Assert.Equal(22.5f, a.WithElement(1, 1, 22.5f).M22); + Assert.Equal(22.0f, a.M22); + + a[2, 0] = 31.0f; + Assert.Equal(31.5f, a.WithElement(2, 0, 31.5f).M31); + Assert.Equal(31.0f, a.M31); + + a[2, 1] = 32.0f; + Assert.Equal(32.5f, a.WithElement(2, 1, 32.5f).M32); + Assert.Equal(32.0f, a.M32); + } + + [Fact] + public void Matrix3x2WithRowTest() + { + Matrix3x2 a = Matrix3x2.Identity; + + a[0] = Vector2.Create(11.0f, 12.0f); + Assert.Equal(Vector2.Create(11.5f, 12.5f), a.WithRow(0, Vector2.Create(11.5f, 12.5f)).X); + Assert.Equal(Vector2.Create(11.0f, 12.0f), a.X); + + a[1] = Vector2.Create(21.0f, 22.0f); + Assert.Equal(Vector2.Create(21.5f, 22.5f), a.WithRow(1, Vector2.Create(21.5f, 22.5f)).Y); + Assert.Equal(Vector2.Create(21.0f, 22.0f), a.Y); + + a[2] = Vector2.Create(31.0f, 32.0f); + Assert.Equal(Vector2.Create(31.5f, 32.5f), a.WithRow(2, Vector2.Create(31.5f, 32.5f)).Z); + Assert.Equal(Vector2.Create(31.0f, 32.0f), a.Z); + } } } diff --git a/src/runtime/src/libraries/System.Numerics.Vectors/tests/Matrix4x4Tests.cs b/src/runtime/src/libraries/System.Numerics.Vectors/tests/Matrix4x4Tests.cs index fa52f037b22..87e035215ed 100644 --- a/src/runtime/src/libraries/System.Numerics.Vectors/tests/Matrix4x4Tests.cs +++ b/src/runtime/src/libraries/System.Numerics.Vectors/tests/Matrix4x4Tests.cs @@ -3168,5 +3168,231 @@ public void PerspectiveOffCenterFarPlaneAtInfinityTest() Assert.Equal(-1.0f, m.M33); Assert.Equal(-nearPlaneDistance, m.M43); } + + [Fact] + public void Matrix4x4CreateBroadcastScalarTest() + { + Matrix4x4 a = Matrix4x4.Create(float.Pi); + + Assert.Equal(Vector4.Create(float.Pi), a.X); + Assert.Equal(Vector4.Create(float.Pi), a.Y); + Assert.Equal(Vector4.Create(float.Pi), a.Z); + Assert.Equal(Vector4.Create(float.Pi), a.W); + } + + [Fact] + public void Matrix4x4CreateBroadcastVectorTest() + { + Matrix4x4 a = Matrix4x4.Create(Vector4.Create(float.Pi, float.E, float.PositiveInfinity, float.NegativeInfinity)); + + Assert.Equal(Vector4.Create(float.Pi, float.E, float.PositiveInfinity, float.NegativeInfinity), a.X); + Assert.Equal(Vector4.Create(float.Pi, float.E, float.PositiveInfinity, float.NegativeInfinity), a.Y); + Assert.Equal(Vector4.Create(float.Pi, float.E, float.PositiveInfinity, float.NegativeInfinity), a.Z); + Assert.Equal(Vector4.Create(float.Pi, float.E, float.PositiveInfinity, float.NegativeInfinity), a.W); + } + + [Fact] + public void Matrix4x4CreateVectorsTest() + { + Matrix4x4 a = Matrix4x4.Create( + Vector4.Create(11.0f, 12.0f, 13.0f, 14.0f), + Vector4.Create(21.0f, 22.0f, 23.0f, 24.0f), + Vector4.Create(31.0f, 32.0f, 33.0f, 34.0f), + Vector4.Create(41.0f, 42.0f, 43.0f, 44.0f) + ); + + Assert.Equal(Vector4.Create(11.0f, 12.0f, 13.0f, 14.0f), a.X); + Assert.Equal(Vector4.Create(21.0f, 22.0f, 23.0f, 24.0f), a.Y); + Assert.Equal(Vector4.Create(31.0f, 32.0f, 33.0f, 34.0f), a.Z); + Assert.Equal(Vector4.Create(41.0f, 42.0f, 43.0f, 44.0f), a.W); + } + + [Fact] + public void Matrix4x4GetElementTest() + { + Matrix4x4 a = GenerateTestMatrix(); + + Assert.Equal(a.M11, a.X.X); + Assert.Equal(a.M11, a[0, 0]); + Assert.Equal(a.M11, a.GetElement(0, 0)); + + Assert.Equal(a.M12, a.X.Y); + Assert.Equal(a.M12, a[0, 1]); + Assert.Equal(a.M12, a.GetElement(0, 1)); + + Assert.Equal(a.M13, a.X.Z); + Assert.Equal(a.M13, a[0, 2]); + Assert.Equal(a.M13, a.GetElement(0, 2)); + + Assert.Equal(a.M14, a.X.W); + Assert.Equal(a.M14, a[0, 3]); + Assert.Equal(a.M14, a.GetElement(0, 3)); + + Assert.Equal(a.M21, a.Y.X); + Assert.Equal(a.M21, a[1, 0]); + Assert.Equal(a.M21, a.GetElement(1, 0)); + + Assert.Equal(a.M22, a.Y.Y); + Assert.Equal(a.M22, a[1, 1]); + Assert.Equal(a.M22, a.GetElement(1, 1)); + + Assert.Equal(a.M23, a.Y.Z); + Assert.Equal(a.M23, a[1, 2]); + Assert.Equal(a.M23, a.GetElement(1, 2)); + + Assert.Equal(a.M24, a.Y.W); + Assert.Equal(a.M24, a[1, 3]); + Assert.Equal(a.M24, a.GetElement(1, 3)); + + Assert.Equal(a.M31, a.Z.X); + Assert.Equal(a.M31, a[2, 0]); + Assert.Equal(a.M31, a.GetElement(2, 0)); + + Assert.Equal(a.M32, a.Z.Y); + Assert.Equal(a.M32, a[2, 1]); + Assert.Equal(a.M32, a.GetElement(2, 1)); + + Assert.Equal(a.M33, a.Z.Z); + Assert.Equal(a.M33, a[2, 2]); + Assert.Equal(a.M33, a.GetElement(2, 2)); + + Assert.Equal(a.M34, a.Z.W); + Assert.Equal(a.M34, a[2, 3]); + Assert.Equal(a.M34, a.GetElement(2, 3)); + + Assert.Equal(a.M41, a.W.X); + Assert.Equal(a.M41, a[3, 0]); + Assert.Equal(a.M41, a.GetElement(3, 0)); + + Assert.Equal(a.M42, a.W.Y); + Assert.Equal(a.M42, a[3, 1]); + Assert.Equal(a.M42, a.GetElement(3, 1)); + + Assert.Equal(a.M43, a.W.Z); + Assert.Equal(a.M43, a[3, 2]); + Assert.Equal(a.M43, a.GetElement(3, 2)); + + Assert.Equal(a.M44, a.W.W); + Assert.Equal(a.M44, a[3, 3]); + Assert.Equal(a.M44, a.GetElement(3, 3)); + } + + [Fact] + public void Matrix4x4GetRowTest() + { + Matrix4x4 a = GenerateTestMatrix(); + + Vector4 vx = new Vector4(a.M11, a.M12, a.M13, a.M14); + Assert.Equal(vx, a.X); + Assert.Equal(vx, a[0]); + Assert.Equal(vx, a.GetRow(0)); + + Vector4 vy = new Vector4(a.M21, a.M22, a.M23, a.M24); + Assert.Equal(vy, a.Y); + Assert.Equal(vy, a[1]); + Assert.Equal(vy, a.GetRow(1)); + + Vector4 vz = new Vector4(a.M31, a.M32, a.M33, a.M34); + Assert.Equal(vz, a.Z); + Assert.Equal(vz, a[2]); + Assert.Equal(vz, a.GetRow(2)); + + Vector4 vw = new Vector4(a.M41, a.M42, a.M43, a.M44); + Assert.Equal(vw, a.W); + Assert.Equal(vw, a[3]); + Assert.Equal(vw, a.GetRow(3)); + } + + [Fact] + public void Matrix4x4WithElementTest() + { + Matrix4x4 a = Matrix4x4.Identity; + + a[0, 0] = 11.0f; + Assert.Equal(11.5f, a.WithElement(0, 0, 11.5f).M11); + Assert.Equal(11.0f, a.M11); + + a[0, 1] = 12.0f; + Assert.Equal(12.5f, a.WithElement(0, 1, 12.5f).M12); + Assert.Equal(12.0f, a.M12); + + a[0, 2] = 13.0f; + Assert.Equal(13.5f, a.WithElement(0, 2, 13.5f).M13); + Assert.Equal(13.0f, a.M13); + + a[0, 3] = 14.0f; + Assert.Equal(14.5f, a.WithElement(0, 3, 14.5f).M14); + Assert.Equal(14.0f, a.M14); + + a[1, 0] = 21.0f; + Assert.Equal(21.5f, a.WithElement(1, 0, 21.5f).M21); + Assert.Equal(21.0f, a.M21); + + a[1, 1] = 22.0f; + Assert.Equal(22.5f, a.WithElement(1, 1, 22.5f).M22); + Assert.Equal(22.0f, a.M22); + + a[1, 2] = 23.0f; + Assert.Equal(23.5f, a.WithElement(1, 2, 23.5f).M23); + Assert.Equal(23.0f, a.M23); + + a[1, 3] = 24.0f; + Assert.Equal(24.5f, a.WithElement(1, 3, 24.5f).M24); + Assert.Equal(24.0f, a.M24); + + a[2, 0] = 31.0f; + Assert.Equal(31.5f, a.WithElement(2, 0, 31.5f).M31); + Assert.Equal(31.0f, a.M31); + + a[2, 1] = 32.0f; + Assert.Equal(32.5f, a.WithElement(2, 1, 32.5f).M32); + Assert.Equal(32.0f, a.M32); + + a[2, 2] = 33.0f; + Assert.Equal(33.5f, a.WithElement(2, 2, 33.5f).M33); + Assert.Equal(33.0f, a.M33); + + a[2, 3] = 34.0f; + Assert.Equal(34.5f, a.WithElement(2, 3, 34.5f).M34); + Assert.Equal(34.0f, a.M34); + + a[3, 0] = 41.0f; + Assert.Equal(41.5f, a.WithElement(3, 0, 41.5f).M41); + Assert.Equal(41.0f, a.M41); + + a[3, 1] = 42.0f; + Assert.Equal(42.5f, a.WithElement(3, 1, 42.5f).M42); + Assert.Equal(42.0f, a.M42); + + a[3, 2] = 43.0f; + Assert.Equal(43.5f, a.WithElement(3, 2, 43.5f).M43); + Assert.Equal(43.0f, a.M43); + + a[3, 3] = 44.0f; + Assert.Equal(44.5f, a.WithElement(3, 3, 44.5f).M44); + Assert.Equal(44.0f, a.M44); + } + + [Fact] + public void Matrix4x4WithRowTest() + { + Matrix4x4 a = Matrix4x4.Identity; + + a[0] = Vector4.Create(11.0f, 12.0f, 13.0f, 14.0f); + Assert.Equal(Vector4.Create(11.5f, 12.5f, 13.5f, 14.5f), a.WithRow(0, Vector4.Create(11.5f, 12.5f, 13.5f, 14.5f)).X); + Assert.Equal(Vector4.Create(11.0f, 12.0f, 13.0f, 14.0f), a.X); + + a[1] = Vector4.Create(21.0f, 22.0f, 23.0f, 24.0f); + Assert.Equal(Vector4.Create(21.5f, 22.5f, 23.5f, 24.5f), a.WithRow(1, Vector4.Create(21.5f, 22.5f, 23.5f, 24.5f)).Y); + Assert.Equal(Vector4.Create(21.0f, 22.0f, 23.0f, 24.0f), a.Y); + + a[2] = Vector4.Create(31.0f, 32.0f, 33.0f, 34.0f); + Assert.Equal(Vector4.Create(31.5f, 32.5f, 33.5f, 34.5f), a.WithRow(2, Vector4.Create(31.5f, 32.5f, 33.5f, 34.5f)).Z); + Assert.Equal(Vector4.Create(31.0f, 32.0f, 33.0f, 34.0f), a.Z); + + a[3] = Vector4.Create(41.0f, 42.0f, 43.0f, 44.0f); + Assert.Equal(Vector4.Create(41.5f, 42.5f, 43.5f, 44.5f), a.WithRow(3, Vector4.Create(41.5f, 42.5f, 43.5f, 44.5f)).W); + Assert.Equal(Vector4.Create(41.0f, 42.0f, 43.0f, 44.0f), a.W); + } } } diff --git a/src/runtime/src/libraries/System.Numerics.Vectors/tests/Vector2Tests.cs b/src/runtime/src/libraries/System.Numerics.Vectors/tests/Vector2Tests.cs index 53a0ed94db0..d605f6dbd14 100644 --- a/src/runtime/src/libraries/System.Numerics.Vectors/tests/Vector2Tests.cs +++ b/src/runtime/src/libraries/System.Numerics.Vectors/tests/Vector2Tests.cs @@ -1849,5 +1849,52 @@ public void WithElementTest(float x, float y) Assert.Equal(x, vector.X); Assert.Equal(y, vector.Y); } + + [Theory] + [InlineData(1.0f, 2.0f)] + [InlineData(5.0f, 6.0f)] + public void AsVector3Test(float x, float y) + { + var vector = Vector2.Create(x, y).AsVector3(); + + Assert.Equal(x, vector.X); + Assert.Equal(y, vector.Y); + Assert.Equal(0, vector.Z); + } + + [Theory] + [InlineData(1.0f, 2.0f)] + [InlineData(5.0f, 6.0f)] + public void AsVector3UnsafeTest(float x, float y) + { + var vector = Vector2.Create(x, y).AsVector3Unsafe(); + + Assert.Equal(x, vector.X); + Assert.Equal(y, vector.Y); + } + + [Fact] + public void CreateScalarTest() + { + var vector = Vector2.CreateScalar(float.Pi); + + Assert.Equal(float.Pi, vector.X); + Assert.Equal(0, vector.Y); + + vector = Vector2.CreateScalar(float.E); + + Assert.Equal(float.E, vector.X); + Assert.Equal(0, vector.Y); + } + + [Fact] + public void CreateScalarUnsafeTest() + { + var vector = Vector2.CreateScalarUnsafe(float.Pi); + Assert.Equal(float.Pi, vector.X); + + vector = Vector2.CreateScalarUnsafe(float.E); + Assert.Equal(float.E, vector.X); + } } } diff --git a/src/runtime/src/libraries/System.Numerics.Vectors/tests/Vector3Tests.cs b/src/runtime/src/libraries/System.Numerics.Vectors/tests/Vector3Tests.cs index 880cf4be75e..bcc025d34f8 100644 --- a/src/runtime/src/libraries/System.Numerics.Vectors/tests/Vector3Tests.cs +++ b/src/runtime/src/libraries/System.Numerics.Vectors/tests/Vector3Tests.cs @@ -1876,5 +1876,42 @@ public void WithElementTest(float x, float y, float z) Assert.Equal(y, vector.Y); Assert.Equal(z, vector.Z); } + + [Theory] + [InlineData(1.0f, 2.0f, 3.0f)] + [InlineData(5.0f, 6.0f, 7.0f)] + public void AsVector2Test(float x, float y, float z) + { + var vector = Vector3.Create(x, y, z).AsVector2(); + + Assert.Equal(x, vector.X); + Assert.Equal(y, vector.Y); + } + + [Fact] + public void CreateScalarTest() + { + var vector = Vector3.CreateScalar(float.Pi); + + Assert.Equal(float.Pi, vector.X); + Assert.Equal(0, vector.Y); + Assert.Equal(0, vector.Z); + + vector = Vector3.CreateScalar(float.E); + + Assert.Equal(float.E, vector.X); + Assert.Equal(0, vector.Y); + Assert.Equal(0, vector.Z); + } + + [Fact] + public void CreateScalarUnsafeTest() + { + var vector = Vector3.CreateScalarUnsafe(float.Pi); + Assert.Equal(float.Pi, vector.X); + + vector = Vector3.CreateScalarUnsafe(float.E); + Assert.Equal(float.E, vector.X); + } } } diff --git a/src/runtime/src/libraries/System.Numerics.Vectors/tests/Vector4Tests.cs b/src/runtime/src/libraries/System.Numerics.Vectors/tests/Vector4Tests.cs index b89616e47a2..fd983119d2a 100644 --- a/src/runtime/src/libraries/System.Numerics.Vectors/tests/Vector4Tests.cs +++ b/src/runtime/src/libraries/System.Numerics.Vectors/tests/Vector4Tests.cs @@ -2295,5 +2295,33 @@ public void WithElementTest(float x, float y, float z, float w) Assert.Equal(z, vector.Z); Assert.Equal(w, vector.W); } + + [Fact] + public void CreateScalarTest() + { + var vector = Vector4.CreateScalar(float.Pi); + + Assert.Equal(float.Pi, vector.X); + Assert.Equal(0, vector.Y); + Assert.Equal(0, vector.Z); + Assert.Equal(0, vector.W); + + vector = Vector4.CreateScalar(float.E); + + Assert.Equal(float.E, vector.X); + Assert.Equal(0, vector.Y); + Assert.Equal(0, vector.Z); + Assert.Equal(0, vector.W); + } + + [Fact] + public void CreateScalarUnsafeTest() + { + var vector = Vector4.CreateScalarUnsafe(float.Pi); + Assert.Equal(float.Pi, vector.X); + + vector = Vector4.CreateScalarUnsafe(float.E); + Assert.Equal(float.E, vector.X); + } } } diff --git a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix3x2.Impl.cs b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix3x2.Impl.cs index fd98190e212..09815c5089a 100644 --- a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix3x2.Impl.cs +++ b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix3x2.Impl.cs @@ -15,9 +15,6 @@ public partial struct Matrix3x2 // syntax. We do this because it saves roughly 8-bytes of IL per method which // in turn helps improve inlining chances. - internal const uint RowCount = 3; - internal const uint ColumnCount = 2; - [UnscopedRef] [MethodImpl(MethodImplOptions.AggressiveInlining)] internal ref Impl AsImpl() => ref Unsafe.As(ref this); @@ -38,80 +35,6 @@ internal struct Impl : IEquatable public Vector2 Y; public Vector2 Z; - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Init(float m11, float m12, - float m21, float m22, - float m31, float m32) - { - X = Vector2.Create(m11, m12); - Y = Vector2.Create(m21, m22); - Z = Vector2.Create(m31, m32); - } - - public static Impl Identity - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - get - { - Impl result; - - result.X = Vector2.UnitX; - result.Y = Vector2.UnitY; - result.Z = Vector2.Zero; - - return result; - } - } - - public float this[int row, int column] - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - readonly get - { - if ((uint)row >= RowCount) - { - ThrowHelper.ThrowArgumentOutOfRangeException(); - } - return Unsafe.Add(ref Unsafe.AsRef(in X), row)[column]; - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - set - { - if ((uint)row >= RowCount) - { - ThrowHelper.ThrowArgumentOutOfRangeException(); - } - Unsafe.Add(ref X, row)[column] = value; - } - } - - public readonly bool IsIdentity - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - get - { - return (X == Vector2.UnitX) - && (Y == Vector2.UnitY) - && (Z == Vector2.Zero); - } - } - - public Vector2 Translation - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - readonly get - { - return Z; - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - set - { - Z = value; - } - } - [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Impl operator +(in Impl left, in Impl right) { diff --git a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix3x2.cs b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix3x2.cs index 0c84691bce6..c1db9962a56 100644 --- a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix3x2.cs +++ b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix3x2.cs @@ -13,6 +13,9 @@ namespace System.Numerics [Intrinsic] public partial struct Matrix3x2 : IEquatable { + private const int RowCount = 3; + private const int ColumnCount = 2; + // In an ideal world, we'd have 3x Vector2 fields. However, Matrix3x2 was shipped with // 6x public float fields and as such we cannot change the "backing" fields without it being // a breaking change. Likewise, we cannot switch to using something like ExplicitLayout @@ -24,37 +27,41 @@ public partial struct Matrix3x2 : IEquatable // at the relevant points. /// The first element of the first row. + /// This element exists at index: [0, 0] and is part of row . public float M11; /// The second element of the first row. + /// This element exists at index: [0, 1] and is part of row . public float M12; /// The first element of the second row. + /// This element exists at index: [1, 0] and is part of row . public float M21; /// The second element of the second row. + /// This element exists at index: [1, 1] and is part of row . public float M22; /// The first element of the third row. + /// This element exists at index: [2, 0] and is part of row . public float M31; /// The second element of the third row. + /// This element exists at index: [2, 1] and is part of row . public float M32; - /// Creates a 3x2 matrix from the specified components. - /// The value to assign to the first element in the first row. - /// The value to assign to the second element in the first row. - /// The value to assign to the first element in the second row. - /// The value to assign to the second element in the second row. - /// The value to assign to the first element in the third row. - /// The value to assign to the second element in the third row. + /// Initializes a using the specified elements. + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . public Matrix3x2(float m11, float m12, float m21, float m22, float m31, float m32) { - Unsafe.SkipInit(out this); - - AsImpl().Init( + this = Create( m11, m12, m21, m22, m31, m32 @@ -62,48 +69,260 @@ public Matrix3x2(float m11, float m12, } /// Gets the multiplicative identity matrix. - /// The multiplicative identify matrix. + /// The multiplicative identity matrix. public static Matrix3x2 Identity { [MethodImpl(MethodImplOptions.AggressiveInlining)] - get => Impl.Identity.AsM3x2(); + get => Create(Vector2.UnitX, Vector2.UnitY, Vector2.Zero); } - /// Gets or sets the element at the specified indices. - /// The index of the row containing the element to get or set. - /// The index of the column containing the element to get or set. - /// The element at [][]. - /// - /// was less than zero or greater than the number of rows. - /// -or- - /// was less than zero or greater than the number of columns. - /// - public float this[int row, int column] + /// Gets a value that indicates whether the current matrix is an identity matrix. + /// if the current matrix is an identity matrix; otherwise, . + public readonly bool IsIdentity { [MethodImpl(MethodImplOptions.AggressiveInlining)] - readonly get => AsROImpl()[row, column]; + get => (X == Vector2.UnitX) + && (Y == Vector2.UnitY) + && (Z == Vector2.Zero); + } + + /// Gets or sets the translation component of this matrix. + /// The translation component is stored as . + public Vector2 Translation + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + readonly get => Z; [MethodImpl(MethodImplOptions.AggressiveInlining)] - set => AsImpl()[row, column] = value; + set => Z = value; } - /// Gets a value that indicates whether the current matrix is the identity matrix. - /// if the current matrix is the identity matrix; otherwise, . - public readonly bool IsIdentity + /// Gets or sets the first row of the matrix. + /// This row comprises and ; it exists at index: [0]. + public Vector2 X { [MethodImpl(MethodImplOptions.AggressiveInlining)] - get => AsROImpl().IsIdentity; + readonly get => AsROImpl().X; + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set => AsImpl().X = value; } - /// Gets or sets the translation component of this matrix. - /// The translation component of the current instance. - public Vector2 Translation + /// Gets or sets the second row of the matrix. + /// This row comprises and ; it exists at index: [1]. + public Vector2 Y + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + readonly get => AsROImpl().Y; + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set => AsImpl().Y = value; + } + + /// Gets or sets the third row of the matrix. + /// This row comprises and ; it exists at index: [2]. + public Vector2 Z + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + readonly get => AsROImpl().Z; + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set => AsImpl().Z = value; + } + + /// Gets or sets the row at the specified index. + /// The index of the row to get or set. + /// The row at index: []. + /// was less than zero or greater than or equal to the number of rows (3). + public Vector2 this[int row] + { + // When row is a known constant, we can use a switch to get + // optimal codegen as we are likely coming from register. + // + // However, if either is non constant we're going to end up having + // to touch memory so just directly compute the relevant index. + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + readonly get + { + if (RuntimeHelpers.IsKnownConstant(row)) + { + switch (row) + { + case 0: + { + return X; + } + + case 1: + { + return Y; + } + + case 2: + { + return Z; + } + + default: + { + ThrowHelper.ThrowArgumentOutOfRangeException(); + return default; + } + } + } + else + { + if ((uint)row >= RowCount) + { + ThrowHelper.ThrowArgumentOutOfRangeException(); + } + return Unsafe.Add(ref Unsafe.AsRef(in AsROImpl()).X, row); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set + { + if (RuntimeHelpers.IsKnownConstant(row)) + { + switch (row) + { + case 0: + { + X = value; + break; + } + + case 1: + { + Y = value; + break; + } + + case 2: + { + Z = value; + break; + } + + default: + { + ThrowHelper.ThrowArgumentOutOfRangeException(); + break; + } + } + } + else + { + if ((uint)row >= RowCount) + { + ThrowHelper.ThrowArgumentOutOfRangeException(); + } + Unsafe.Add(ref AsImpl().X, row) = value; + } + } + } + + /// Gets or sets the element at the specified row and column. + /// The index of the row containing the element to get or set. + /// The index of the column containing the element to get or set. + /// The element at index: [, ]. + /// + /// was less than zero or greater than or equal to the number of rows (3). + /// -or- + /// was less than zero or greater than or equal to the number of columns (2). + /// + public float this[int row, int column] { + // When both row and column are known constants, we can use a switch to + // get optimal codegen as we are likely coming from register. + // + // However, if either is non constant we're going to end up having to + // touch memory so just directly compute the relevant index. + // + // The JIT will elide any dead code paths if only one of the inputs is constant. + [MethodImpl(MethodImplOptions.AggressiveInlining)] - readonly get => AsROImpl().Translation; + readonly get + { + if (RuntimeHelpers.IsKnownConstant(row) && RuntimeHelpers.IsKnownConstant(column)) + { + switch (row) + { + case 0: + { + return X.GetElement(column); + } + + case 1: + { + return Y.GetElement(column); + } + + case 2: + { + return Z.GetElement(column); + } + + default: + { + ThrowHelper.ThrowArgumentOutOfRangeException(); + return default; + } + } + } + else + { + if (((uint)row >= RowCount) || ((uint)column >= ColumnCount)) + { + ThrowHelper.ThrowArgumentOutOfRangeException(); + } + return Unsafe.Add(ref Unsafe.AsRef(in M11), (row * ColumnCount) + column); + } + } [MethodImpl(MethodImplOptions.AggressiveInlining)] - set => AsImpl().Translation = value; + set + { + if (RuntimeHelpers.IsKnownConstant(row) && RuntimeHelpers.IsKnownConstant(column)) + { + switch (row) + { + case 0: + { + X = X.WithElement(column, value); + break; + } + + case 1: + { + Y = Y.WithElement(column, value); + break; + } + + case 2: + { + Z = Z.WithElement(column, value); + break; + } + + default: + { + ThrowHelper.ThrowArgumentOutOfRangeException(); + break; + } + } + } + else + { + if (((uint)row >= RowCount) || ((uint)column >= ColumnCount)) + { + ThrowHelper.ThrowArgumentOutOfRangeException(); + } + Unsafe.Add(ref M11, (row * ColumnCount) + column) = value; + } + } } /// Adds each element in one matrix with its corresponding element in a second matrix. @@ -174,6 +393,52 @@ public Vector2 Translation public static Matrix3x2 Add(Matrix3x2 value1, Matrix3x2 value2) => (value1.AsImpl() + value2.AsImpl()).AsM3x2(); + /// Creates a whose 6 elements are set to the specified value. + /// The value to assign to all 6 elements. + /// A whose 6 elements are set to . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Matrix3x2 Create(float value) => Create(Vector2.Create(value)); + + /// Creates a whose 3 rows are set to the specified value. + /// The value to assign to all 3 rows. + /// A whose 3 rows are set to . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Matrix3x2 Create(Vector2 value) => Create(value, value, value); + + /// Creates a from the specified rows. + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// A whose rows are set to the specified values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Matrix3x2 Create(Vector2 x, Vector2 y, Vector2 z) + { + Unsafe.SkipInit(out Matrix3x2 result); + + result.X = x; + result.Y = y; + result.Z = z; + + return result; + } + + /// Creates a from the specified elements. + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// A whose elements are set to the specified values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Matrix3x2 Create(float m11, float m12, + float m21, float m22, + float m31, float m32) => Create( + Vector2.Create(m11, m12), + Vector2.Create(m21, m22), + Vector2.Create(m31, m32) + ); + /// Creates a rotation matrix using the given rotation in radians. /// The amount of rotation, in radians. /// The rotation matrix. @@ -314,7 +579,7 @@ public static Matrix3x2 Subtract(Matrix3x2 value1, Matrix3x2 value2) public override readonly bool Equals([NotNullWhen(true)] object? obj) => AsROImpl().Equals(obj); - /// Returns a value that indicates whether this instance and another 3x2 matrix are equal. + /// Returns a value that indicates whether this instance and another are equal. /// The other matrix. /// if the two matrices are equal; otherwise, . /// Two matrices are equal if all their corresponding elements are equal. @@ -329,6 +594,25 @@ public readonly bool Equals(Matrix3x2 other) public readonly float GetDeterminant() => AsROImpl().GetDeterminant(); + /// Gets the element at the specified row and column. + /// The index of the row containing the element to get. + /// The index of the column containing the element to get. + /// The element at index: [, ]. + /// + /// was less than zero or greater than or equal to the number of rows (3). + /// -or- + /// was less than zero or greater than or equal to the number of columns (2). + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public readonly float GetElement(int row, int column) => this[row, column]; + + /// Gets or sets the row at the specified index. + /// The index of the row to get. + /// The row at index: []. + /// was less than zero or greater than or equal to the number of rows (3). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public readonly Vector2 GetRow(int index) => this[index]; + /// Returns the hash code for this instance. /// The hash code. [MethodImpl(MethodImplOptions.AggressiveInlining)] @@ -340,5 +624,36 @@ public override readonly int GetHashCode() /// The numeric values in the returned string are formatted by using the conventions of the current culture. For example, for the en-US culture, the returned string might appear as { {M11:1.1 M12:1.2} {M21:2.1 M22:2.2} {M31:3.1 M32:3.2} }. public override readonly string ToString() => $"{{ {{M11:{M11} M12:{M12}}} {{M21:{M21} M22:{M22}}} {{M31:{M31} M32:{M32}}} }}"; + + /// Creates a new with the element at the specified row and column set to the given value and the remaining elements set to the same value as that in the current matrix. + /// The index of the row containing the element to replace. + /// The index of the column containing the element to replace. + /// The value to assign to the element at index: [, ]. + /// A with the value of the element at index: [, ] set to and the remaining elements set to the same value as that in the current matrix. + /// + /// was less than zero or greater than or equal to the number of rows (3). + /// -or- + /// was less than zero or greater than or equal to the number of columns (2). + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public readonly Matrix3x2 WithElement(int row, int column, float value) + { + Matrix3x2 result = this; + result[row, column] = value; + return result; + } + + /// Creates a new with the row at the specified index set to the given value and the remaining rows set to the same value as that in the current matrix. + /// The index of the row to replace. + /// The value to assign to the row at index: []. + /// A with the value of the row at index: [] set to and the remaining rows set to the same value as that in the current matrix. + /// was less than zero or greater than or equal to the number of rows (3). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public readonly Matrix3x2 WithRow(int index, Vector2 value) + { + Matrix3x2 result = this; + result[index] = value; + return result; + } } } diff --git a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix4x4.Impl.cs b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix4x4.Impl.cs index 5ca3cfeb40c..708d1e03b1b 100644 --- a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix4x4.Impl.cs +++ b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix4x4.Impl.cs @@ -18,9 +18,6 @@ public partial struct Matrix4x4 // syntax. We do this because it saves roughly 8-bytes of IL per method which // in turn helps improve inlining chances. - internal const uint RowCount = 4; - internal const uint ColumnCount = 4; - [UnscopedRef] [MethodImpl(MethodImplOptions.AggressiveInlining)] internal ref Impl AsImpl() => ref Unsafe.As(ref this); @@ -44,90 +41,6 @@ internal struct Impl : IEquatable public Vector4 Z; public Vector4 W; - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Init(float m11, float m12, float m13, float m14, - float m21, float m22, float m23, float m24, - float m31, float m32, float m33, float m34, - float m41, float m42, float m43, float m44) - { - X = Vector4.Create(m11, m12, m13, m14); - Y = Vector4.Create(m21, m22, m23, m24); - Z = Vector4.Create(m31, m32, m33, m34); - W = Vector4.Create(m41, m42, m43, m44); - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void Init(in Matrix3x2.Impl value) - { - X = Vector4.Create(value.X, 0, 0); - Y = Vector4.Create(value.Y, 0, 0); - Z = Vector4.UnitZ; - W = Vector4.Create(value.Z, 0, 1); - } - - public static Impl Identity - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - get - { - Impl result; - - result.X = Vector4.UnitX; - result.Y = Vector4.UnitY; - result.Z = Vector4.UnitZ; - result.W = Vector4.UnitW; - - return result; - } - } - - public float this[int row, int column] - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - readonly get - { - if ((uint)row >= RowCount) - { - ThrowHelper.ThrowArgumentOutOfRangeException(); - } - return Unsafe.Add(ref Unsafe.AsRef(in X), row)[column]; - } - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - set - { - if ((uint)row >= RowCount) - { - ThrowHelper.ThrowArgumentOutOfRangeException(); - } - Unsafe.Add(ref X, row)[column] = value; - } - } - - public readonly bool IsIdentity - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - get - { - return (X == Vector4.UnitX) - && (Y == Vector4.UnitY) - && (Z == Vector4.UnitZ) - && (W == Vector4.UnitW); - } - } - - public Vector3 Translation - { - [MethodImpl(MethodImplOptions.AggressiveInlining)] - readonly get => W.AsVector3(); - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - set - { - W = Vector4.Create(value, W.W); - } - } - [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Impl operator +(in Impl left, in Impl right) { @@ -159,19 +72,6 @@ public Vector3 Translation || (left.W != right.W); } - [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Impl operator *(in Impl left, in Impl right) - { - Impl result; - - result.X = Vector4.Transform(left.X, in right); - result.Y = Vector4.Transform(left.Y, in right); - result.Z = Vector4.Transform(left.Z, in right); - result.W = Vector4.Transform(left.W, in right); - - return result; - } - [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Impl operator *(in Impl left, float right) { @@ -1049,7 +949,7 @@ public static Impl CreateWorld(in Vector3 position, in Vector3 forward, in Vecto [MethodImpl(MethodImplOptions.AggressiveInlining)] public static unsafe bool Decompose(in Impl matrix, out Vector3 scale, out Quaternion rotation, out Vector3 translation) { - Impl matTemp = Identity; + Impl matTemp = Matrix4x4.Identity.AsImpl(); Vector3* canonicalBasis = stackalloc Vector3[3] { Vector3.UnitX, diff --git a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix4x4.cs b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix4x4.cs index 7e92e304ef9..2e0c6f4c411 100644 --- a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix4x4.cs +++ b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix4x4.cs @@ -13,6 +13,9 @@ namespace System.Numerics [Intrinsic] public partial struct Matrix4x4 : IEquatable { + internal const int RowCount = 4; + internal const int ColumnCount = 4; + // In an ideal world, we'd have 4x Vector4 fields. However, Matrix4x4 was shipped with // 16x public float fields and as such we cannot change the "backing" fields without it being // a breaking change. Likewise, we cannot switch to using something like ExplicitLayout @@ -24,78 +27,92 @@ public partial struct Matrix4x4 : IEquatable // at the relevant points. /// The first element of the first row. + /// This element exists at index: [0, 0] and is part of row . public float M11; /// The second element of the first row. + /// This element exists at index: [0, 1] and is part of row . public float M12; /// The third element of the first row. + /// This element exists at index: [0, 2] and is part of row . public float M13; /// The fourth element of the first row. + /// This element exists at index: [0, 3] and is part of row . public float M14; /// The first element of the second row. + /// This element exists at index: [1, 0] and is part of row . public float M21; /// The second element of the second row. + /// This element exists at index: [1, 1] and is part of row . public float M22; /// The third element of the second row. + /// This element exists at index: [1, 2] and is part of row . public float M23; /// The fourth element of the second row. + /// This element exists at index: [1, 3] and is part of row . public float M24; /// The first element of the third row. + /// This element exists at index: [2, 0] and is part of row . public float M31; /// The second element of the third row. + /// This element exists at index: [2, 1] and is part of row . public float M32; /// The third element of the third row. + /// This element exists at index: [2, 2] and is part of row . public float M33; /// The fourth element of the third row. + /// This element exists at index: [2, 3] and is part of row . public float M34; /// The first element of the fourth row. + /// This element exists at index: [3, 0] and is part of row . public float M41; /// The second element of the fourth row. + /// This element exists at index: [3, 1] and is part of row . public float M42; /// The third element of the fourth row. + /// This element exists at index: [3, 2] and is part of row . public float M43; /// The fourth element of the fourth row. + /// This element exists at index: [3, 3] and is part of row . public float M44; - /// Creates a 4x4 matrix from the specified components. - /// The value to assign to the first element in the first row. - /// The value to assign to the second element in the first row. - /// The value to assign to the third element in the first row. - /// The value to assign to the fourth element in the first row. - /// The value to assign to the first element in the second row. - /// The value to assign to the second element in the second row. - /// The value to assign to the third element in the second row. - /// The value to assign to the third element in the second row. - /// The value to assign to the first element in the third row. - /// The value to assign to the second element in the third row. - /// The value to assign to the third element in the third row. - /// The value to assign to the fourth element in the third row. - /// The value to assign to the first element in the fourth row. - /// The value to assign to the second element in the fourth row. - /// The value to assign to the third element in the fourth row. - /// The value to assign to the fourth element in the fourth row. + /// Initializes a using the specified elements. + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . public Matrix4x4(float m11, float m12, float m13, float m14, float m21, float m22, float m23, float m24, float m31, float m32, float m33, float m34, float m41, float m42, float m43, float m44) { - Unsafe.SkipInit(out this); - - AsImpl().Init( + this = Create( m11, m12, m13, m14, m21, m22, m23, m24, m31, m32, m33, m34, @@ -103,13 +120,12 @@ public Matrix4x4(float m11, float m12, float m13, float m14, ); } - /// Creates a object from a specified object. - /// A 3x2 matrix. - /// This constructor creates a 4x4 matrix whose , , , , , , , and components are zero, and whose and components are one. + /// Initializes a using the specified . + /// The to assign to the first two elements of , , and . + /// The last two elements of , , and are initialized to zero; while is initialized to . public Matrix4x4(Matrix3x2 value) { - Unsafe.SkipInit(out this); - AsImpl().Init(in value.AsImpl()); + this = Create(value); } /// Gets the multiplicative identity matrix. @@ -117,44 +133,298 @@ public Matrix4x4(Matrix3x2 value) public static Matrix4x4 Identity { [MethodImpl(MethodImplOptions.AggressiveInlining)] - get => Impl.Identity.AsM4x4(); + get => Create(Vector4.UnitX, Vector4.UnitY, Vector4.UnitZ, Vector4.UnitW); } - /// Gets or sets the element at the specified indices. - /// The index of the row containing the element to get or set. - /// The index of the column containing the element to get or set. - /// The element at [][]. - /// - /// was less than zero or greater than the number of rows. - /// -or- - /// was less than zero or greater than the number of columns. - /// - public float this[int row, int column] + /// Indicates whether the current matrix is the identity matrix. + /// if the current matrix is the identity matrix; otherwise, . + public readonly bool IsIdentity { [MethodImpl(MethodImplOptions.AggressiveInlining)] - readonly get => AsROImpl()[row, column]; + get => (X == Vector4.UnitX) + && (Y == Vector4.UnitY) + && (Z == Vector4.UnitZ) + && (W == Vector4.UnitW); + } + + /// Gets or sets the translation component of this matrix. + /// The translation component is stored as first 3 columns of . + public Vector3 Translation + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + readonly get => W.AsVector3(); [MethodImpl(MethodImplOptions.AggressiveInlining)] - set => AsImpl()[row, column] = value; + set => W = Vector4.Create(value, W.W); } - /// Indicates whether the current matrix is the identity matrix. - /// if the current matrix is the identity matrix; otherwise, . - public readonly bool IsIdentity + /// Gets or sets the first row of the matrix. + /// This row comprises , , , and ; it exists at index: [0]. + public Vector4 X + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + readonly get => AsROImpl().X; + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set => AsImpl().X = value; + } + + /// Gets or sets the second row of the matrix. + /// This row comprises , , , and ; it exists at index: [1]. + public Vector4 Y { [MethodImpl(MethodImplOptions.AggressiveInlining)] - get => AsROImpl().IsIdentity; + readonly get => AsROImpl().Y; + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set => AsImpl().Y = value; } - /// Gets or sets the translation component of this matrix. - /// The translation component of the current instance. - public Vector3 Translation + /// Gets or sets the third row of the matrix. + /// This row comprises , , , and ; it exists at index: [2]. + public Vector4 Z + { + [MethodImpl(MethodImplOptions.AggressiveInlining)] + readonly get => AsROImpl().Z; + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set => AsImpl().Z = value; + } + + /// Gets or sets the fourth row of the matrix. + /// This row comprises , , , and ; it exists at index: [3]. + public Vector4 W { [MethodImpl(MethodImplOptions.AggressiveInlining)] - readonly get => AsROImpl().Translation; + readonly get => AsROImpl().W; [MethodImpl(MethodImplOptions.AggressiveInlining)] - set => AsImpl().Translation = value; + set => AsImpl().W = value; + } + + /// Gets or sets the row at the specified index. + /// The index of the row to get or set. + /// The row that at index: []. + /// was less than zero or greater than or equal to the number of rows (4). + public Vector4 this[int row] + { + // When row is a known constant, we can use a switch to get + // optimal codegen as we are likely coming from register. + // + // However, if either is non constant we're going to end up having + // to touch memory so just directly compute the relevant index. + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + readonly get + { + ref readonly Impl impl = ref AsROImpl(); + + if (RuntimeHelpers.IsKnownConstant(row)) + { + switch (row) + { + case 0: + { + return impl.X; + } + + case 1: + { + return impl.Y; + } + + case 2: + { + return impl.Z; + } + + case 3: + { + return impl.W; + } + + default: + { + ThrowHelper.ThrowArgumentOutOfRangeException(); + return default; + } + } + } + else + { + if ((uint)row >= RowCount) + { + ThrowHelper.ThrowArgumentOutOfRangeException(); + } + return Unsafe.Add(ref Unsafe.AsRef(in impl.X), row); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set + { + ref Impl impl = ref AsImpl(); + + if (RuntimeHelpers.IsKnownConstant(row)) + { + switch (row) + { + case 0: + { + impl.X = value; + break; + } + + case 1: + { + impl.Y = value; + break; + } + + case 2: + { + impl.Z = value; + break; + } + + case 3: + { + impl.W = value; + break; + } + + default: + { + ThrowHelper.ThrowArgumentOutOfRangeException(); + break; + } + } + } + else + { + if ((uint)row >= RowCount) + { + ThrowHelper.ThrowArgumentOutOfRangeException(); + } + Unsafe.Add(ref Unsafe.AsRef(in impl.X), row) = value; + } + } + } + + /// Gets or sets the element at the specified row and column. + /// The index of the row containing the element to get or set. + /// The index of the column containing the element to get or set. + /// The element at index: [, ]. + /// + /// was less than zero or greater than or equal to the number of rows (4). + /// -or- + /// was less than zero or greater than or equal to the number of columns (4). + /// + public float this[int row, int column] + { + // When both row and column are known constants, we can use a switch to + // get optimal codegen as we are likely coming from register. + // + // However, if either is non constant we're going to end up having to + // touch memory so just directly compute the relevant index. + // + // The JIT will elide any dead code paths if only one of the inputs is constant. + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + readonly get + { + if (RuntimeHelpers.IsKnownConstant(row) && RuntimeHelpers.IsKnownConstant(column)) + { + ref readonly Impl impl = ref AsROImpl(); + + switch (row) + { + case 0: + { + return impl.X.GetElement(column); + } + + case 1: + { + return impl.Y.GetElement(column); + } + + case 2: + { + return impl.Z.GetElement(column); + } + + case 3: + { + return impl.W.GetElement(column); + } + + default: + { + ThrowHelper.ThrowArgumentOutOfRangeException(); + return default; + } + } + } + else + { + if (((uint)row >= RowCount) || ((uint)column >= ColumnCount)) + { + ThrowHelper.ThrowArgumentOutOfRangeException(); + } + return Unsafe.Add(ref Unsafe.AsRef(in M11), (row * ColumnCount) + column); + } + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + set + { + if (RuntimeHelpers.IsKnownConstant(row) && RuntimeHelpers.IsKnownConstant(column)) + { + ref Impl impl = ref AsImpl(); + + switch (row) + { + case 0: + { + impl.X = impl.X.WithElement(column, value); + break; + } + + case 1: + { + impl.Y = impl.Y.WithElement(column, value); + break; + } + + case 2: + { + impl.Z = impl.Z.WithElement(column, value); + break; + } + + case 3: + { + impl.W = impl.W.WithElement(column, value); + break; + } + + default: + { + ThrowHelper.ThrowArgumentOutOfRangeException(); + break; + } + } + } + else + { + if (((uint)row >= RowCount) || ((uint)column >= ColumnCount)) + { + ThrowHelper.ThrowArgumentOutOfRangeException(); + } + Unsafe.Add(ref Unsafe.AsRef(in M11), (row * ColumnCount) + column) = value; + } + } } /// Adds each element in one matrix with its corresponding element in a second matrix. @@ -188,8 +458,13 @@ public Vector3 Translation /// The second matrix. /// The product matrix. /// The method defines the operation of the multiplication operator for objects. - public static Matrix4x4 operator *(Matrix4x4 value1, Matrix4x4 value2) - => (value1.AsImpl() * value2.AsImpl()).AsM4x4(); + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Matrix4x4 operator *(Matrix4x4 value1, Matrix4x4 value2) => Create( + Vector4.Transform(value1.X, value2), + Vector4.Transform(value1.Y, value2), + Vector4.Transform(value1.Z, value2), + Vector4.Transform(value1.W, value2) + ); /// Multiplies a matrix by a float to compute the product. /// The matrix to scale. @@ -224,6 +499,78 @@ public Vector3 Translation public static Matrix4x4 Add(Matrix4x4 value1, Matrix4x4 value2) => (value1.AsImpl() + value2.AsImpl()).AsM4x4(); + /// Creates a whose 16 elements are set to the specified value. + /// The value to assign to all 16 elements. + /// A whose 16 elements are set to . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Matrix4x4 Create(float value) => Create(Vector4.Create(value)); + + /// Creates a from the specified . + /// The to assign to the first two elements of , , and . + /// A that was initialized using the elements from . + /// The last two elements of , , and are initialized to zero; while is initialized to . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Matrix4x4 Create(Matrix3x2 value) => Create( + value.X.AsVector4(), + value.Y.AsVector4(), + Vector4.UnitZ, + Vector4.Create(value.Z, 0, 1) + ); + + /// Creates a whose 4 rows are set to the specified value. + /// The value to assign to all 4 rows. + /// A whose 4 rows are set to . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Matrix4x4 Create(Vector4 value) => Create(value, value, value, value); + + /// Creates a from the specified rows. + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// A whose rows are set to the specified values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Matrix4x4 Create(Vector4 x, Vector4 y, Vector4 z, Vector4 w) + { + Unsafe.SkipInit(out Matrix4x4 result); + + result.X = x; + result.Y = y; + result.Z = z; + result.W = w; + + return result; + } + + /// Creates a from the specified elements. + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// The value to assign to . + /// A whose elements are set to the specified values. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Matrix4x4 Create(float m11, float m12, float m13, float m14, + float m21, float m22, float m23, float m24, + float m31, float m32, float m33, float m34, + float m41, float m42, float m43, float m44) => Create( + Vector4.Create(m11, m12, m13, m14), + Vector4.Create(m21, m22, m23, m24), + Vector4.Create(m31, m32, m33, m34), + Vector4.Create(m41, m42, m43, m44) + ); + /// Creates a right-handed spherical billboard matrix that rotates around a specified object position. /// The position of the object that the billboard will rotate around. /// The position of the camera. @@ -643,8 +990,7 @@ public static Matrix4x4 Lerp(Matrix4x4 matrix1, Matrix4x4 matrix2, float amount) /// The first matrix. /// The second matrix. /// The product matrix. - public static Matrix4x4 Multiply(Matrix4x4 value1, Matrix4x4 value2) - => (value1.AsImpl() * value2.AsImpl()).AsM4x4(); + public static Matrix4x4 Multiply(Matrix4x4 value1, Matrix4x4 value2) => value1 * value2; /// Multiplies a matrix by a float to compute the product. /// The matrix to scale. @@ -702,6 +1048,25 @@ public readonly bool Equals(Matrix4x4 other) public readonly float GetDeterminant() => AsROImpl().GetDeterminant(); + /// Gets the element at the specified row and column. + /// The index of the row containing the element to get. + /// The index of the column containing the element to get. + /// The element at index: [, ]. + /// + /// was less than zero or greater than or equal to the number of rows (4). + /// -or- + /// was less than zero or greater than or equal to the number of columns (4). + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public readonly float GetElement(int row, int column) => this[row, column]; + + /// Gets or sets the row at the specified index. + /// The index of the row to get. + /// The row at index: []. + /// was less than zero or greater than or equal to the number of rows (4). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public readonly Vector4 GetRow(int index) => this[index]; + /// Returns the hash code for this instance. /// The hash code. [MethodImpl(MethodImplOptions.AggressiveInlining)] @@ -713,5 +1078,36 @@ public override readonly int GetHashCode() /// The numeric values in the returned string are formatted by using the conventions of the current culture. For example, for the en-US culture, the returned string might appear as { {M11:1.1 M12:1.2 M13:1.3 M14:1.4} {M21:2.1 M22:2.2 M23:2.3 M24:2.4} {M31:3.1 M32:3.2 M33:3.3 M34:3.4} {M41:4.1 M42:4.2 M43:4.3 M44:4.4} }. public override readonly string ToString() => $"{{ {{M11:{M11} M12:{M12} M13:{M13} M14:{M14}}} {{M21:{M21} M22:{M22} M23:{M23} M24:{M24}}} {{M31:{M31} M32:{M32} M33:{M33} M34:{M34}}} {{M41:{M41} M42:{M42} M43:{M43} M44:{M44}}} }}"; + + /// Creates a new with the element at the specified row and column set to the given value and the remaining elements set to the same value as that in the current matrix. + /// The index of the row containing the element to replace. + /// The index of the column containing the element to replace. + /// The value to assign to the element at index: [, ]. + /// A with the value of the element at index: [, ] set to and the remaining elements set to the same value as that in the current matrix. + /// + /// was less than zero or greater than or equal to the number of rows (4). + /// -or- + /// was less than zero or greater than or equal to the number of columns (4). + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public readonly Matrix4x4 WithElement(int row, int column, float value) + { + Matrix4x4 result = this; + result[row, column] = value; + return result; + } + + /// Creates a new with the row at the specified index set to the given value and the remaining rows set to the same value as that in the current matrix. + /// The index of the row to replace. + /// The value to assign to the row at index: []. + /// A with the value of the row at index: [] set to and the remaining rows set to the same value as that in the current matrix. + /// was less than zero or greater than or equal to the number of rows (4). + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public readonly Matrix4x4 WithRow(int index, Vector4 value) + { + Matrix4x4 result = this; + result[index] = value; + return result; + } } } diff --git a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Plane.cs b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Plane.cs index 67df1c546b0..5e756f452c9 100644 --- a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Plane.cs +++ b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Plane.cs @@ -20,7 +20,7 @@ public struct Plane : IEquatable /// The distance of the plane along its normal from the origin. public float D; - /// Creates a object from the X, Y, and Z components of its normal, and its distance from the origin on that normal. + /// Initializes a from the X, Y, and Z components of its normal, and its distance from the origin on that normal. /// The X component of the normal. /// The Y component of the normal. /// The Z component of the normal. @@ -31,7 +31,7 @@ public Plane(float x, float y, float z, float d) this = Create(x, y, z, d); } - /// Creates a object from a specified normal and the distance along the normal from the origin. + /// Initializes a from a specified normal and the distance along the normal from the origin. /// The plane's normal vector. /// The plane's distance from the origin along its normal vector. [Intrinsic] @@ -40,7 +40,7 @@ public Plane(Vector3 normal, float d) this = Create(normal, d); } - /// Creates a object from a specified four-dimensional vector. + /// Initializes a from a specified four-dimensional vector. /// A vector whose first three elements describe the normal vector, and whose defines the distance along that normal from the origin. [Intrinsic] public Plane(Vector4 value) @@ -48,21 +48,27 @@ public Plane(Vector4 value) this = value.AsPlane(); } - /// Creates a object from the X, Y, and Z components of its normal, and its distance from the origin on that normal. - /// The X component of the normal. - /// The Y component of the normal. - /// The Z component of the normal. - /// The distance of the plane along its normal from the origin. - /// A new object from the X, Y, and Z components of its normal, and its distance from the origin on that normal. + /// Creates a from a specified four-dimensional vector. + /// A vector whose first three elements describe the normal vector, and whose defines the distance along that normal from the origin. + /// A created using . [Intrinsic] - internal static Plane Create(float x, float y, float z, float d) => Vector128.Create(x, y, z, d).AsPlane(); + public static Plane Create(Vector4 value) => value.AsPlane(); - /// Creates a object from a specified normal and the distance along the normal from the origin. + /// Creates a from a specified normal and the distance along the normal from the origin. /// The plane's normal vector. /// The plane's distance from the origin along its normal vector.\ - /// A new object from a specified normal and the distance along the normal from the origin. + /// A created from a specified normal and the distance along the normal from the origin. + [Intrinsic] + public static Plane Create(Vector3 normal, float d) => Vector4.Create(normal, d).AsPlane(); + + /// Creates a from the X, Y, and Z components of its normal, and its distance from the origin on that normal. + /// The X component of the normal. + /// The Y component of the normal. + /// The Z component of the normal. + /// The distance of the plane along its normal from the origin. + /// A created from the X, Y, and Z components of its normal, and its distance from the origin on that normal. [Intrinsic] - internal static Plane Create(Vector3 normal, float d) => Vector4.Create(normal, d).AsPlane(); + public static Plane Create(float x, float y, float z, float d) => Vector128.Create(x, y, z, d).AsPlane(); /// Creates a object that contains three specified points. /// The first point defining the plane. @@ -139,8 +145,8 @@ public static Plane Normalize(Plane value) [MethodImpl(MethodImplOptions.AggressiveInlining)] public static Plane Transform(Plane plane, Matrix4x4 matrix) { - Matrix4x4.Impl.Invert(matrix.AsImpl(), out Matrix4x4.Impl inverseMatrix); - return Vector4.Transform(plane.AsVector4(), Matrix4x4.Impl.Transpose(inverseMatrix)).AsPlane(); + Matrix4x4.Invert(matrix, out Matrix4x4 inverseMatrix); + return Vector4.Transform(plane.AsVector4(), Matrix4x4.Transpose(inverseMatrix)).AsPlane(); } /// Transforms a normalized plane by a Quaternion rotation. diff --git a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Quaternion.cs b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Quaternion.cs index 5c5389993c8..264f0050c59 100644 --- a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Quaternion.cs +++ b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Quaternion.cs @@ -27,7 +27,7 @@ public struct Quaternion : IEquatable internal const int Count = 4; - /// Constructs a quaternion from the specified components. + /// Initializes a from the specified components. /// The value to assign to the X component of the quaternion. /// The value to assign to the Y component of the quaternion. /// The value to assign to the Z component of the quaternion. @@ -38,7 +38,7 @@ public Quaternion(float x, float y, float z, float w) this = Create(x, y, z, w); } - /// Creates a quaternion from the specified vector and rotation parts. + /// Initializes a from the specified vector and rotation parts. /// The vector part of the quaternion. /// The rotation part of the quaternion. [Intrinsic] @@ -191,21 +191,21 @@ public static Quaternion Conjugate(Quaternion value) return (value.AsVector128() * Vector128.Create(-1.0f, -1.0f, -1.0f, 1.0f)).AsQuaternion(); } - /// Creates a quaternion from the specified components. + /// Creates a from the specified components. /// The value to assign to the X component of the quaternion. /// The value to assign to the Y component of the quaternion. /// The value to assign to the Z component of the quaternion. /// The value to assign to the W component of the quaternion. - /// A new quaternion created from the specified components.> + /// A created from the specified components.> [Intrinsic] - internal static Quaternion Create(float x, float y, float z, float w) => Vector128.Create(x, y, z, w).AsQuaternion(); + public static Quaternion Create(float x, float y, float z, float w) => Vector128.Create(x, y, z, w).AsQuaternion(); - /// Creates a quaternion from the specified vector and rotation parts. + /// Creates a from the specified vector and rotation parts. /// The vector part of the quaternion. /// The rotation part of the quaternion. - /// A new quaternion created from the specified vector and rotation parts. + /// A created from the specified vector and rotation parts. [Intrinsic] - internal static Quaternion Create(Vector3 vectorPart, float scalarPart) => Vector4.Create(vectorPart, scalarPart).AsQuaternion(); + public static Quaternion Create(Vector3 vectorPart, float scalarPart) => Vector4.Create(vectorPart, scalarPart).AsQuaternion(); /// Creates a quaternion from a unit vector and an angle to rotate around the vector. /// The unit vector to rotate around. diff --git a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector.cs b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector.cs index 744efd825ee..790f07d068f 100644 --- a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector.cs +++ b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector.cs @@ -751,7 +751,7 @@ public static Vector Create(ReadOnlySpan values) /// A new instance with the first element initialized to and the remaining elements initialized to zero. /// The type of () is not supported. [Intrinsic] - internal static Vector CreateScalar(T value) + public static Vector CreateScalar(T value) { Vector result = Vector.Zero; result.SetElementUnsafe(0, value); @@ -765,7 +765,7 @@ internal static Vector CreateScalar(T value) /// The type of () is not supported. [Intrinsic] [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static Vector CreateScalarUnsafe(T value) + public static Vector CreateScalarUnsafe(T value) { // This relies on us stripping the "init" flag from the ".locals" // declaration to let the upper bits be uninitialized. diff --git a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector2.Extensions.cs b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector2.Extensions.cs index 3c38c3852bd..94134a583c4 100644 --- a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector2.Extensions.cs +++ b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector2.Extensions.cs @@ -9,6 +9,16 @@ namespace System.Numerics { public static unsafe partial class Vector { + /// Reinterprets a to a new with the new elements zeroed. + /// The vector to reinterpret. + /// reinterpreted to a new with the new elements zeroed. + public static Vector3 AsVector3(this Vector2 value) => value.AsVector128().AsVector3(); + + /// Reinterprets a to a new with the new elements undefined. + /// The vector to reinterpret. + /// reinterpreted to a new with the new elements undefined. + public static Vector3 AsVector3Unsafe(this Vector2 value) => value.AsVector128Unsafe().AsVector3(); + /// Reinterprets a to a new with the new elements zeroed. /// The vector to reinterpret. /// reinterpreted to a new with the new elements zeroed. diff --git a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector2.cs b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector2.cs index b4f18603d7e..b4c2b88a428 100644 --- a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector2.cs +++ b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector2.cs @@ -415,13 +415,13 @@ public static Vector2 Create(ReadOnlySpan values) /// The value to assign to the field. /// A new with initialized and the remaining elements initialized to zero. [Intrinsic] - internal static Vector2 CreateScalar(float x) => Vector128.CreateScalar(x).AsVector2(); + public static Vector2 CreateScalar(float x) => Vector128.CreateScalar(x).AsVector2(); /// Creates a vector with initialized to the specified value and the remaining elements left uninitialized. /// The value to assign to the field. /// A new with initialized and the remaining elements left uninitialized. [Intrinsic] - internal static Vector2 CreateScalarUnsafe(float x) => Vector128.CreateScalarUnsafe(x).AsVector2(); + public static Vector2 CreateScalarUnsafe(float x) => Vector128.CreateScalarUnsafe(x).AsVector2(); /// /// Returns the z-value of the cross product of two vectors. @@ -901,10 +901,8 @@ public static (Vector2 Sin, Vector2 Cos) SinCos(Vector2 vector) /// The vector to transform. /// The transformation matrix. /// The transformed vector. - public static Vector2 Transform(Vector2 position, Matrix3x2 matrix) => Transform(position, in matrix.AsImpl()); - [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static Vector2 Transform(Vector2 position, in Matrix3x2.Impl matrix) + public static Vector2 Transform(Vector2 position, Matrix3x2 matrix) { Vector2 result = matrix.X * position.X; result = MultiplyAddEstimate(matrix.Y, Create(position.Y), result); @@ -916,7 +914,7 @@ internal static Vector2 Transform(Vector2 position, in Matrix3x2.Impl matrix) /// The transformation matrix. /// The transformed vector. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector2 Transform(Vector2 position, Matrix4x4 matrix) => Vector4.Transform(position, in matrix.AsImpl()).AsVector128().AsVector2(); + public static Vector2 Transform(Vector2 position, Matrix4x4 matrix) => Vector4.Transform(position, matrix).AsVector2(); /// Transforms a vector by the specified Quaternion rotation value. /// The vector to rotate. @@ -929,10 +927,8 @@ internal static Vector2 Transform(Vector2 position, in Matrix3x2.Impl matrix) /// The source vector. /// The matrix. /// The transformed vector. - public static Vector2 TransformNormal(Vector2 normal, Matrix3x2 matrix) => TransformNormal(normal, in matrix.AsImpl()); - [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static Vector2 TransformNormal(Vector2 normal, in Matrix3x2.Impl matrix) + public static Vector2 TransformNormal(Vector2 normal, Matrix3x2 matrix) { Vector2 result = matrix.X * normal.X; result = MultiplyAddEstimate(matrix.Y, Create(normal.Y), result); @@ -943,10 +939,8 @@ internal static Vector2 TransformNormal(Vector2 normal, in Matrix3x2.Impl matrix /// The source vector. /// The matrix. /// The transformed vector. - public static Vector2 TransformNormal(Vector2 normal, Matrix4x4 matrix) => TransformNormal(normal, in matrix.AsImpl()); - [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static Vector2 TransformNormal(Vector2 normal, in Matrix4x4.Impl matrix) + public static Vector2 TransformNormal(Vector2 normal, Matrix4x4 matrix) { Vector4 result = matrix.X * normal.X; result = Vector4.MultiplyAddEstimate(matrix.Y, Vector4.Create(normal.Y), result); diff --git a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector3.Extensions.cs b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector3.Extensions.cs index b818143530b..dfaf6dca808 100644 --- a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector3.Extensions.cs +++ b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector3.Extensions.cs @@ -9,6 +9,11 @@ namespace System.Numerics { public static unsafe partial class Vector { + /// Reinterprets a as a new . + /// The vector to reinterpret. + /// reinterpreted as a new . + public static Vector2 AsVector2(this Vector3 value) => value.AsVector128().AsVector2(); + /// Converts a to a new with the new elements zeroed. /// The vector to convert. /// converted to a new with the new elements zeroed. diff --git a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector3.cs b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector3.cs index 57ceef2be01..dd92866c930 100644 --- a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector3.cs +++ b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector3.cs @@ -450,13 +450,13 @@ public static Vector3 Create(ReadOnlySpan values) /// The value to assign to the field. /// A new with initialized and the remaining elements initialized to zero. [Intrinsic] - internal static Vector3 CreateScalar(float x) => Vector128.CreateScalar(x).AsVector3(); + public static Vector3 CreateScalar(float x) => Vector128.CreateScalar(x).AsVector3(); /// Creates a vector with initialized to the specified value and the remaining elements left uninitialized. /// The value to assign to the field. /// A new with initialized and the remaining elements left uninitialized. [Intrinsic] - internal static Vector3 CreateScalarUnsafe(float x) => Vector128.CreateScalarUnsafe(x).AsVector3(); + public static Vector3 CreateScalarUnsafe(float x) => Vector128.CreateScalarUnsafe(x).AsVector3(); /// Computes the cross product of two vectors. /// The first vector. @@ -936,7 +936,7 @@ public static (Vector3 Sin, Vector3 Cos) SinCos(Vector3 vector) /// The transformation matrix. /// The transformed vector. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector3 Transform(Vector3 position, Matrix4x4 matrix) => Vector4.Transform(position, in matrix.AsImpl()).AsVector128().AsVector3(); + public static Vector3 Transform(Vector3 position, Matrix4x4 matrix) => Vector4.Transform(position, matrix).AsVector3(); /// Transforms a vector by the specified Quaternion rotation value. /// The vector to rotate. @@ -950,10 +950,7 @@ public static (Vector3 Sin, Vector3 Cos) SinCos(Vector3 vector) /// The matrix. /// The transformed vector. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector3 TransformNormal(Vector3 normal, Matrix4x4 matrix) => TransformNormal(normal, in matrix.AsImpl()); - - [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static Vector3 TransformNormal(Vector3 normal, in Matrix4x4.Impl matrix) + public static Vector3 TransformNormal(Vector3 normal, Matrix4x4 matrix) { Vector4 result = matrix.X * normal.X; diff --git a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector4.cs b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector4.cs index 194c1334150..4608e9a7d48 100644 --- a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector4.cs +++ b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Numerics/Vector4.cs @@ -488,15 +488,15 @@ public static Vector4 Create(Vector3 vector, float w) /// Creates a vector with initialized to the specified value and the remaining elements initialized to zero. /// The value to assign to the field. - /// A new with initialized and the remaining elements initialized to zero. + /// A with initialized and the remaining elements initialized to zero. [Intrinsic] - internal static Vector4 CreateScalar(float x) => Vector128.CreateScalar(x).AsVector4(); + public static Vector4 CreateScalar(float x) => Vector128.CreateScalar(x).AsVector4(); /// Creates a vector with initialized to the specified value and the remaining elements left uninitialized. /// The value to assign to the field. - /// A new with initialized and the remaining elements left uninitialized. + /// A with initialized and the remaining elements left uninitialized. [Intrinsic] - internal static Vector4 CreateScalarUnsafe(float x) => Vector128.CreateScalarUnsafe(x).AsVector4(); + public static Vector4 CreateScalarUnsafe(float x) => Vector128.CreateScalarUnsafe(x).AsVector4(); /// /// Computes the cross product of two vectors. For homogeneous coordinates, @@ -966,10 +966,8 @@ public static (Vector4 Sin, Vector4 Cos) SinCos(Vector4 vector) /// The vector to transform. /// The transformation matrix. /// The transformed vector. - public static Vector4 Transform(Vector2 position, Matrix4x4 matrix) => Transform(position, in matrix.AsImpl()); - [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static Vector4 Transform(Vector2 position, in Matrix4x4.Impl matrix) + public static Vector4 Transform(Vector2 position, Matrix4x4 matrix) { // This implementation is based on the DirectX Math Library XMVector2Transform method // https://github.com/microsoft/DirectXMath/blob/master/Inc/DirectXMathVector.inl @@ -990,10 +988,8 @@ internal static Vector4 Transform(Vector2 position, in Matrix4x4.Impl matrix) /// The vector to transform. /// The transformation matrix. /// The transformed vector. - public static Vector4 Transform(Vector3 position, Matrix4x4 matrix) => Transform(position, in matrix.AsImpl()); - [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static Vector4 Transform(Vector3 position, in Matrix4x4.Impl matrix) + public static Vector4 Transform(Vector3 position, Matrix4x4 matrix) { // This implementation is based on the DirectX Math Library XMVector3Transform method // https://github.com/microsoft/DirectXMath/blob/master/Inc/DirectXMathVector.inl @@ -1015,10 +1011,8 @@ internal static Vector4 Transform(Vector3 position, in Matrix4x4.Impl matrix) /// The vector to transform. /// The transformation matrix. /// The transformed vector. - public static Vector4 Transform(Vector4 vector, Matrix4x4 matrix) => Transform(vector, in matrix.AsImpl()); - [MethodImpl(MethodImplOptions.AggressiveInlining)] - internal static Vector4 Transform(Vector4 vector, in Matrix4x4.Impl matrix) + public static Vector4 Transform(Vector4 vector, Matrix4x4 matrix) { // This implementation is based on the DirectX Math Library XMVector4Transform method // https://github.com/microsoft/DirectXMath/blob/master/Inc/DirectXMathVector.inl diff --git a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs index 699c8c5f673..1cfbc41de7c 100644 --- a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs +++ b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Runtime/Intrinsics/Vector128.Numerics.cs @@ -53,7 +53,7 @@ public static partial class Vector128 /// The vector to reinterpret. /// reinterpreted as a new . [Intrinsic] - internal static Plane AsPlane(this Vector128 value) + public static Plane AsPlane(this Vector128 value) { #if MONO return Unsafe.As, Plane>(ref value); @@ -66,7 +66,7 @@ internal static Plane AsPlane(this Vector128 value) /// The vector to reinterpret. /// reinterpreted as a new . [Intrinsic] - internal static Quaternion AsQuaternion(this Vector128 value) + public static Quaternion AsQuaternion(this Vector128 value) { #if MONO return Unsafe.As, Quaternion>(ref value); @@ -79,7 +79,7 @@ internal static Quaternion AsQuaternion(this Vector128 value) /// The plane to reinterpret. /// reinterpreted as a new . [Intrinsic] - internal static Vector128 AsVector128(this Plane value) + public static Vector128 AsVector128(this Plane value) { #if MONO return Unsafe.As>(ref value); @@ -92,7 +92,7 @@ internal static Vector128 AsVector128(this Plane value) /// The quaternion to reinterpret. /// reinterpreted as a new . [Intrinsic] - internal static Vector128 AsVector128(this Quaternion value) + public static Vector128 AsVector128(this Quaternion value) { #if MONO return Unsafe.As>(ref value); diff --git a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Threading/PortableThreadPool.WorkerThread.cs b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Threading/PortableThreadPool.WorkerThread.cs index d7265b345cd..a34e0f8ff98 100644 --- a/src/runtime/src/libraries/System.Private.CoreLib/src/System/Threading/PortableThreadPool.WorkerThread.cs +++ b/src/runtime/src/libraries/System.Private.CoreLib/src/System/Threading/PortableThreadPool.WorkerThread.cs @@ -15,16 +15,7 @@ private static partial class WorkerThread { private static readonly short ThreadsToKeepAlive = DetermineThreadsToKeepAlive(); - private const int SemaphoreSpinCountDefaultBaseline = 70; -#if !TARGET_ARM64 && !TARGET_ARM && !TARGET_LOONGARCH64 - private const int SemaphoreSpinCountDefault = SemaphoreSpinCountDefaultBaseline; -#else - // On systems with ARM processors, more spin-waiting seems to be necessary to avoid perf regressions from incurring - // the full wait when work becomes available soon enough. This is more noticeable after reducing the number of - // thread requests made to the thread pool because otherwise the extra thread requests cause threads to do more - // busy-waiting instead and adding to contention in trying to look for work items, which is less preferable. - private const int SemaphoreSpinCountDefault = SemaphoreSpinCountDefaultBaseline * 4; -#endif + private const int SemaphoreSpinCountDefault = 70; // This value represents an assumption of how much uncommitted stack space a worker thread may use in the future. // Used in calculations to estimate when to throttle the rate of thread injection to reduce the possibility of diff --git a/src/runtime/src/libraries/System.Private.Xml/tests/Xslt/XslCompiledTransformApi/XslCompiledTransform.cs b/src/runtime/src/libraries/System.Private.Xml/tests/Xslt/XslCompiledTransformApi/XslCompiledTransform.cs index cb8d10766f9..00511a00ec6 100644 --- a/src/runtime/src/libraries/System.Private.Xml/tests/Xslt/XslCompiledTransformApi/XslCompiledTransform.cs +++ b/src/runtime/src/libraries/System.Private.Xml/tests/Xslt/XslCompiledTransformApi/XslCompiledTransform.cs @@ -3165,7 +3165,8 @@ public void ValidCases_ExternalURI(object param0, object param1, object param2, //[Variation("No Import/Include, NullResolver", Pri = 0, Params = new object[] { "Bug382198.xsl", "fruits.xml", "bug382198.txt", "NullResolver", true })] [InlineData("Bug382198.xsl", "fruits.xml", "bug382198.txt", "NullResolver", true, "IXPathNavigable")] [InlineData("Bug382198.xsl", "fruits.xml", "bug382198.txt", "NullResolver", true, "XmlReader")] - [InlineData("bug93189.xsl", "bug93189.xml", "bug93189.xml", "NullResolver", true, "XmlReader")] + // [ActiveIssue(https://github.com/dotnet/runtime/issues/115455)] + // [InlineData("bug93189.xsl", "bug93189.xml", "bug93189.xml", "NullResolver", true, "XmlReader")] [Theory] public void ValidCases(object param0, object param1, object param2, object param3, object param4, object param5) { diff --git a/src/runtime/src/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.cs b/src/runtime/src/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.cs index 02984d153ab..00014999428 100644 --- a/src/runtime/src/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.cs +++ b/src/runtime/src/libraries/System.Runtime.Intrinsics/ref/System.Runtime.Intrinsics.cs @@ -26,6 +26,8 @@ public static partial class Vector128 public static System.Runtime.Intrinsics.Vector128 AsNInt(this System.Runtime.Intrinsics.Vector128 vector) { throw null; } [System.CLSCompliantAttribute(false)] public static System.Runtime.Intrinsics.Vector128 AsNUInt(this System.Runtime.Intrinsics.Vector128 vector) { throw null; } + public static System.Numerics.Plane AsPlane(this System.Runtime.Intrinsics.Vector128 value) { throw null; } + public static System.Numerics.Quaternion AsQuaternion(this System.Runtime.Intrinsics.Vector128 value) { throw null; } [System.CLSCompliantAttribute(false)] public static System.Runtime.Intrinsics.Vector128 AsSByte(this System.Runtime.Intrinsics.Vector128 vector) { throw null; } public static System.Runtime.Intrinsics.Vector128 AsSingle(this System.Runtime.Intrinsics.Vector128 vector) { throw null; } @@ -35,6 +37,8 @@ public static partial class Vector128 public static System.Runtime.Intrinsics.Vector128 AsUInt32(this System.Runtime.Intrinsics.Vector128 vector) { throw null; } [System.CLSCompliantAttribute(false)] public static System.Runtime.Intrinsics.Vector128 AsUInt64(this System.Runtime.Intrinsics.Vector128 vector) { throw null; } + public static System.Runtime.Intrinsics.Vector128 AsVector128(this System.Numerics.Plane value) { throw null; } + public static System.Runtime.Intrinsics.Vector128 AsVector128(this System.Numerics.Quaternion value) { throw null; } public static System.Runtime.Intrinsics.Vector128 AsVector128(this System.Numerics.Vector2 value) { throw null; } public static System.Runtime.Intrinsics.Vector128 AsVector128(this System.Numerics.Vector3 value) { throw null; } public static System.Runtime.Intrinsics.Vector128 AsVector128(this System.Numerics.Vector4 value) { throw null; } diff --git a/src/source-manifest.json b/src/source-manifest.json index 17b0e8ce7ef..c88795451dd 100644 --- a/src/source-manifest.json +++ b/src/source-manifest.json @@ -106,11 +106,11 @@ "commitSha": "4829e8048a7b398fc72304823bd6a4361fd31582" }, { - "packageVersion": "10.0.0-preview.5.25261.2", - "barId": 267807, + "packageVersion": "10.0.0-preview.5.25262.10", + "barId": 267901, "path": "runtime", "remoteUri": "https://github.com/dotnet/runtime", - "commitSha": "8b80947425177e7b500e13ec66d1b9936a67e5a5" + "commitSha": "d2c561859bd6474b8ec38bf4ee7296e4e717ce1c" }, { "packageVersion": "10.0.0-preview.25221.1", From 7ff02922f9f5a83cbfe8ca1847694dbe5d012d6f Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Tue, 13 May 2025 10:43:40 +0200 Subject: [PATCH 27/32] [main] Source code updates from dotnet/xdt (#528) Co-authored-by: dotnet-maestro[bot] --- prereqs/git-info/xdt.props | 6 +++--- src/source-manifest.json | 6 +++--- src/xdt/eng/Version.Details.xml | 6 +++--- .../common/core-templates/steps/source-build.yml | 14 ++++---------- src/xdt/eng/common/tools.sh | 6 +++++- src/xdt/global.json | 2 +- 6 files changed, 19 insertions(+), 21 deletions(-) diff --git a/prereqs/git-info/xdt.props b/prereqs/git-info/xdt.props index 08159435ef5..c80aef1187b 100644 --- a/prereqs/git-info/xdt.props +++ b/prereqs/git-info/xdt.props @@ -1,8 +1,8 @@  - 0819f8fa746a99202a4d1c0e3be921e18a9f049f - 20250508.1 - 10.0.0-preview.25258.1 + 9c96c93edcbcd43de208ae76ae782b98786da623 + 20250512.1 + 10.0.0-preview.25262.1 \ No newline at end of file diff --git a/src/source-manifest.json b/src/source-manifest.json index c88795451dd..0a6b4d62a2a 100644 --- a/src/source-manifest.json +++ b/src/source-manifest.json @@ -190,11 +190,11 @@ "commitSha": "ac5efa2727c7980fa9623e8b41411866d25e7332" }, { - "packageVersion": "10.0.0-preview.25258.1", - "barId": 267424, + "packageVersion": "10.0.0-preview.25262.1", + "barId": 267833, "path": "xdt", "remoteUri": "https://github.com/dotnet/xdt", - "commitSha": "0819f8fa746a99202a4d1c0e3be921e18a9f049f" + "commitSha": "9c96c93edcbcd43de208ae76ae782b98786da623" } ], "submodules": [ diff --git a/src/xdt/eng/Version.Details.xml b/src/xdt/eng/Version.Details.xml index e319ff4abdd..eefa8666817 100644 --- a/src/xdt/eng/Version.Details.xml +++ b/src/xdt/eng/Version.Details.xml @@ -1,10 +1,10 @@ - + - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb diff --git a/src/xdt/eng/common/core-templates/steps/source-build.yml b/src/xdt/eng/common/core-templates/steps/source-build.yml index c7c062e88ee..f2a0f347fdd 100644 --- a/src/xdt/eng/common/core-templates/steps/source-build.yml +++ b/src/xdt/eng/common/core-templates/steps/source-build.yml @@ -38,14 +38,9 @@ steps: targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}' fi - runtimeOsArgs= - if [ '${{ parameters.platform.runtimeOS }}' != '' ]; then - runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}' - fi - - baseOsArgs= - if [ '${{ parameters.platform.baseOS }}' != '' ]; then - baseOsArgs='/p:BaseOS=${{ parameters.platform.baseOS }}' + baseRidArgs= + if [ '${{ parameters.platform.baseRID }}' != '' ]; then + baseRidArgs='/p:BaseRid=${{ parameters.platform.baseRID }}' fi portableBuildArgs= @@ -59,8 +54,7 @@ steps: ${{ parameters.platform.buildArguments }} \ $internalRuntimeDownloadArgs \ $targetRidArgs \ - $runtimeOsArgs \ - $baseOsArgs \ + $baseRidArgs \ $portableBuildArgs \ /p:DotNetBuildSourceOnly=true \ /p:DotNetBuildRepo=true \ diff --git a/src/xdt/eng/common/tools.sh b/src/xdt/eng/common/tools.sh index d51f300c772..cc007b1f15a 100755 --- a/src/xdt/eng/common/tools.sh +++ b/src/xdt/eng/common/tools.sh @@ -5,6 +5,9 @@ # CI mode - set to true on CI server for PR validation build or official build. ci=${ci:-false} +# Build mode +source_build=${source_build:-false} + # Set to true to use the pipelines logger which will enable Azure logging output. # https://github.com/Microsoft/azure-pipelines-tasks/blob/master/docs/authoring/commands.md # This flag is meant as a temporary opt-opt for the feature while validate it across @@ -58,7 +61,8 @@ use_installed_dotnet_cli=${use_installed_dotnet_cli:-true} dotnetInstallScriptVersion=${dotnetInstallScriptVersion:-'v1'} # True to use global NuGet cache instead of restoring packages to repository-local directory. -if [[ "$ci" == true ]]; then +# Keep in sync with NuGetPackageroot in Arcade SDK's RepositoryLayout.props. +if [[ "$ci" == true || "$source_build" == true ]]; then use_global_nuget_cache=${use_global_nuget_cache:-false} else use_global_nuget_cache=${use_global_nuget_cache:-true} diff --git a/src/xdt/global.json b/src/xdt/global.json index 70c3928b5f9..133584970e9 100644 --- a/src/xdt/global.json +++ b/src/xdt/global.json @@ -7,6 +7,6 @@ "allowPrerelease": true }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25257.101" + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25260.104" } } From 19cf1fbd665cc57127aea29d94ec72f0c11a26a1 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Tue, 13 May 2025 10:43:55 +0200 Subject: [PATCH 28/32] [main] Source code updates from dotnet/winforms (#523) Co-authored-by: dotnet-maestro[bot] --- prereqs/git-info/winforms.props | 6 +++--- src/source-manifest.json | 6 +++--- src/winforms/Directory.Build.targets | 3 +-- src/winforms/eng/Version.Details.xml | 8 -------- src/winforms/eng/Versions.props | 2 -- src/winforms/global.json | 4 ++-- 6 files changed, 9 insertions(+), 20 deletions(-) diff --git a/prereqs/git-info/winforms.props b/prereqs/git-info/winforms.props index 84a238fd656..8b1610ff0d8 100644 --- a/prereqs/git-info/winforms.props +++ b/prereqs/git-info/winforms.props @@ -1,8 +1,8 @@  - 5821493f0b62aac1f34ed28e386868d5bbc710ce - 20250510.1 - 10.0.0-preview.5.25260.1 + 10c8369f4fa2a945b7477b9f91e04ddea968c23c + 20250512.1 + 10.0.0-preview.5.25262.1 \ No newline at end of file diff --git a/src/source-manifest.json b/src/source-manifest.json index 0a6b4d62a2a..b6a22e0f186 100644 --- a/src/source-manifest.json +++ b/src/source-manifest.json @@ -176,11 +176,11 @@ "commitSha": "2736c90fe4a9e7397341e9288ca5a0b9caa0533f" }, { - "packageVersion": "10.0.0-preview.5.25260.1", - "barId": 267790, + "packageVersion": "10.0.0-preview.5.25262.1", + "barId": 267887, "path": "winforms", "remoteUri": "https://github.com/dotnet/winforms", - "commitSha": "5821493f0b62aac1f34ed28e386868d5bbc710ce" + "commitSha": "10c8369f4fa2a945b7477b9f91e04ddea968c23c" }, { "packageVersion": "10.0.0-preview.5.25262.2", diff --git a/src/winforms/Directory.Build.targets b/src/winforms/Directory.Build.targets index a72569f7af7..3cacf181ef4 100644 --- a/src/winforms/Directory.Build.targets +++ b/src/winforms/Directory.Build.targets @@ -80,8 +80,7 @@ - - $(MicrosoftNETCoreAppRuntimewinx64PackageVersion) + $(MicrosoftNETCoreAppRefPackageVersion) diff --git a/src/winforms/eng/Version.Details.xml b/src/winforms/eng/Version.Details.xml index 8a494c4d64d..d5fd360a2c8 100644 --- a/src/winforms/eng/Version.Details.xml +++ b/src/winforms/eng/Version.Details.xml @@ -8,10 +8,6 @@ Note: if the Uri is a new place, you will need to add a subscription from that p - - https://github.com/dotnet/dotnet - 85778473549347b3e4bad3ea009e9438df7b11bb - https://github.com/dotnet/dotnet 85778473549347b3e4bad3ea009e9438df7b11bb @@ -60,10 +56,6 @@ Note: if the Uri is a new place, you will need to add a subscription from that p https://github.com/dotnet/dotnet 85778473549347b3e4bad3ea009e9438df7b11bb - - https://github.com/dotnet/dotnet - 85778473549347b3e4bad3ea009e9438df7b11bb - https://github.com/dotnet/dotnet 85778473549347b3e4bad3ea009e9438df7b11bb diff --git a/src/winforms/eng/Versions.props b/src/winforms/eng/Versions.props index d2ee97caa08..5e3a378daf5 100644 --- a/src/winforms/eng/Versions.props +++ b/src/winforms/eng/Versions.props @@ -15,7 +15,6 @@ - 10.0.0-preview.5.25260.104 10.0.0-preview.5.25260.104 10.0.0-preview.5.25260.104 5.0.0-preview.7.20320.5 @@ -24,7 +23,6 @@ 10.0.0-preview.5.25260.104 10.0.0-preview.5.25260.104 10.0.0-preview.5.25260.104 - 10.0.0-preview.5.25260.104 10.0.0-preview.5.25260.104 10.0.0-preview.5.25260.104 10.0.0-preview.5.25260.104 diff --git a/src/winforms/global.json b/src/winforms/global.json index 4c178dbb508..5e3b0c13f4b 100644 --- a/src/winforms/global.json +++ b/src/winforms/global.json @@ -3,10 +3,10 @@ "dotnet": "10.0.100-preview.3.25201.16", "runtimes": { "dotnet/x64": [ - "$(VSRedistCommonNetCoreSharedFrameworkx64100PackageVersion)" + "$(MicrosoftNETCorePlatformsPackageVersion)" ], "dotnet/x86": [ - "$(VSRedistCommonNetCoreSharedFrameworkx64100PackageVersion)" + "$(MicrosoftNETCorePlatformsPackageVersion)" ] } }, From e99e6072cbbef2becb57d7f7d82bdc1ba6a37274 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20K=C3=B6plinger?= Date: Tue, 13 May 2025 11:30:00 +0200 Subject: [PATCH 29/32] Pass repository last flow sha to the repo build (#513) Adds RepoOriginalSourceRevisionId to the repo build parameters which is the commit sha from the source-manifest.json, i.e. the last merged forward flow commit of the repository. Fixes https://github.com/dotnet/source-build/issues/5155 --- eng/Publishing.props | 5 -- .../ReadRepoInfoFromSourceManifest.cs | 58 +++++++++++++++++++ repo-projects/Directory.Build.targets | 17 +++++- 3 files changed, 74 insertions(+), 6 deletions(-) create mode 100644 eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/ReadRepoInfoFromSourceManifest.cs diff --git a/eng/Publishing.props b/eng/Publishing.props index a254f81a148..221a9f5c334 100644 --- a/eng/Publishing.props +++ b/eng/Publishing.props @@ -39,11 +39,6 @@ - - - $([MSBuild]::NormalizePath('$(ArtifactsBinDir)', 'Microsoft.DotNet.UnifiedBuild.Tasks', '$(Configuration)', 'Microsoft.DotNet.UnifiedBuild.Tasks.dll')) - - diff --git a/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/ReadRepoInfoFromSourceManifest.cs b/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/ReadRepoInfoFromSourceManifest.cs new file mode 100644 index 00000000000..9b4371eb9e2 --- /dev/null +++ b/eng/tools/tasks/Microsoft.DotNet.UnifiedBuild.Tasks/ReadRepoInfoFromSourceManifest.cs @@ -0,0 +1,58 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text.Json; +using System.Text.Json.Nodes; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; + +namespace Microsoft.DotNet.UnifiedBuild.Tasks +{ + // Takes a path to a source-manifest.json file and + // reads the information for a specific repo from it. + public class ReadRepoInfoFromSourceManifest : Task + { + [Required] + public string SourceManifest { get; set; } = ""; + + [Required] + public string RepositoryName { get; set; } = ""; + + /// + /// Returns metadata about the repository from source-manifest.json. + /// + [Output] + public ITaskItem? RepoInfo { get; set; } + + public override bool Execute() + { + if (!File.Exists(SourceManifest)) + { + Log.LogError($"Source manifest file not found: {SourceManifest}"); + return false; + } + + JsonArray? repositories = JsonNode.Parse(File.OpenRead(SourceManifest))?["repositories"]?.AsArray(); + + JsonObject? repo = repositories + ?.Where(p => p?["path"]?.ToString() == RepositoryName) + .FirstOrDefault() + ?.AsObject(); + + if (repo == null) + { + Log.LogError($"Repository {RepositoryName} not found in source manifest."); + return false; + } + + RepoInfo = new TaskItem(RepositoryName, repo.ToDictionary(p => p.Key, p => p.Value?.ToString())); + + return true; + } + } +} diff --git a/repo-projects/Directory.Build.targets b/repo-projects/Directory.Build.targets index 1bd7df2d255..d71028404ef 100644 --- a/repo-projects/Directory.Build.targets +++ b/repo-projects/Directory.Build.targets @@ -447,8 +447,23 @@ + + + + + + + + + + $(CommonArgs) /p:RepoOriginalSourceRevisionId=%(RepoInfo.CommitSha) + + + + DependsOnTargets="GetTransitiveRepositoryReferences;SetRepoOriginalSourceRevisionId"> preview.1 - false + false - $([MSBuild]::Add(11, $(MajorNuGetVersion))) - main - int.$(VsTargetBranch) - int.$(VsTargetBranch) + $([MSBuild]::Add(11, $(MajorNuGetVersion))) + main + int.$(VsTargetBranch) + int.$(VsTargetBranch) - $(VsTargetMajorVersion).$(MinorNuGetVersion).$(PatchNuGetVersion) + $([MSBuild]::Add(11, $(MajorNuGetVersion))).$(MinorNuGetVersion).$(PatchNuGetVersion) - rel/d$(VsTargetMajorVersion).$(MinorNuGetVersion) - int.d$(VsTargetMajorVersion).$(MinorNuGetVersion) + rel/d$(VsTargetMajorVersion).$(MinorNuGetVersion) + int.d$(VsTargetMajorVersion).$(MinorNuGetVersion) - $(VsTargetChannel) + $(VsTargetChannel) diff --git a/src/nuget-client/build/runsettings.proj b/src/nuget-client/build/runsettings.proj index aa506b38130..46f4d2bb0c5 100644 --- a/src/nuget-client/build/runsettings.proj +++ b/src/nuget-client/build/runsettings.proj @@ -12,7 +12,7 @@ TestCaseFilter=TestCategory=OptProf; OptProfCollector=enabled; IncludeProfilingInputs=true; - VsConfigPath=tests.optprof.dev$(VsTargetMajorVersion).vsconfig;" /> + VsConfigPath=tests.optprof.vsconfig;" /> enabled enabled enabled - tests.dev$(VsTargetMajorVersion).vsconfig + tests.vsconfig diff --git a/src/nuget-client/build/tests.optprof.dev17.vsconfig b/src/nuget-client/build/tests.optprof.vsconfig similarity index 100% rename from src/nuget-client/build/tests.optprof.dev17.vsconfig rename to src/nuget-client/build/tests.optprof.vsconfig diff --git a/src/nuget-client/build/tests.dev17.vsconfig b/src/nuget-client/build/tests.vsconfig similarity index 100% rename from src/nuget-client/build/tests.dev17.vsconfig rename to src/nuget-client/build/tests.vsconfig diff --git a/src/nuget-client/eng/pipelines/templates/Initialize_Build.yml b/src/nuget-client/eng/pipelines/templates/Initialize_Build.yml index c0d4be381f4..ce7b878bf66 100644 --- a/src/nuget-client/eng/pipelines/templates/Initialize_Build.yml +++ b/src/nuget-client/eng/pipelines/templates/Initialize_Build.yml @@ -17,7 +17,12 @@ steps: } else { $targetChannelForTests = ((& dotnet msbuild $env:BUILD_REPOSITORY_LOCALPATH\build\config.props /restore:false "/ConsoleLoggerParameters:Verbosity=Minimal;NoSummary;ForceNoAlign" /nologo /target:GetVsTargetChannelForTests) | Out-String).Trim() } - $targetMajorVersion = ((& dotnet msbuild $env:BUILD_REPOSITORY_LOCALPATH\build\config.props /restore:false "/ConsoleLoggerParameters:Verbosity=Minimal;NoSummary;ForceNoAlign" /nologo /target:GetVsTargetMajorVersion) | Out-String).Trim() + if ([System.String]::IsNullOrEmpty($env:VsTargetMajorVersion) -eq $false) { + $targetMajorVersion = $env:VsTargetMajorVersion + } else { + $targetMajorVersion = ((& dotnet msbuild $env:BUILD_REPOSITORY_LOCALPATH\build\config.props /restore:false "/ConsoleLoggerParameters:Verbosity=Minimal;NoSummary;ForceNoAlign" /nologo /target:GetVsTargetMajorVersion) | Out-String).Trim() + } + Write-Host "##vso[task.setvariable variable=VsTargetChannel;isOutput=true]$targetChannel" Write-Host "##vso[task.setvariable variable=VsTargetChannelForTests;isOutput=true]$targetChannelForTests" Write-Host "##vso[task.setvariable variable=VsTargetMajorVersion;isOutput=true]$targetMajorVersion" diff --git a/src/nuget-client/scripts/e2etests/README.md b/src/nuget-client/scripts/e2etests/README.md index fb170efb3e6..18e8d56c49a 100644 --- a/src/nuget-client/scripts/e2etests/README.md +++ b/src/nuget-client/scripts/e2etests/README.md @@ -8,7 +8,7 @@ The [CreateEndToEndTestPackage.ps1](./../cibuild/CreateEndToEndTestPackage.ps1) This zip file can also be generated by the [build.ps1](./../../build.ps1) script. Note that the scripts assume certain relative paths that are correct within the zip, but may not work if you attempt to use the scripts from the repo location. -***NOTE:*** To ensure that all tests are runnable, you may need to update Visual Studio with [tests vs config](build\tests.dev17.vsconfig). +***NOTE:*** To ensure that all tests are runnable, you may need to update Visual Studio with [tests vs config](build\tests.vsconfig). ## Running the tests diff --git a/src/nuget-client/src/NuGet.Core/NuGet.Commands/RestoreCommand/DependencyGraphResolver.DependencyGraphItem.cs b/src/nuget-client/src/NuGet.Core/NuGet.Commands/RestoreCommand/DependencyGraphResolver.DependencyGraphItem.cs index c17cf1b150f..757d7ca21e3 100644 --- a/src/nuget-client/src/NuGet.Core/NuGet.Commands/RestoreCommand/DependencyGraphResolver.DependencyGraphItem.cs +++ b/src/nuget-client/src/NuGet.Core/NuGet.Commands/RestoreCommand/DependencyGraphResolver.DependencyGraphItem.cs @@ -86,6 +86,7 @@ public async Task> GetGraphItemAsync( IReadOnlyDictionary? packagesToPrune, bool enablePruningWarnings, bool isRootProject, + string targetGraphName, ILogger logger) { // Call the task to get the library, this may returned a cached result @@ -106,7 +107,7 @@ public async Task> GetGraphItemAsync( LibraryDependency dependency = item.Data.Dependencies[i]; // Skip any packages that should be pruned or will be replaced with a runtime dependency - if (ShouldPrunePackage(projectRestoreMetadata, packagesToPrune, enablePruningWarnings, dependency, item.Key, isRootProject, logger) + if (ShouldPrunePackage(projectRestoreMetadata, packagesToPrune, enablePruningWarnings, dependency, item.Key, isRootProject, targetGraphName, logger) || RuntimeDependencies?.Contains(dependency) == true) { continue; @@ -120,7 +121,7 @@ public async Task> GetGraphItemAsync( // Add any runtime dependencies unless they should be pruned foreach (LibraryDependency runtimeDependency in RuntimeDependencies) { - if (ShouldPrunePackage(projectRestoreMetadata, packagesToPrune, enablePruningWarnings, runtimeDependency, item.Key, isRootProject, logger) == true) + if (ShouldPrunePackage(projectRestoreMetadata, packagesToPrune, enablePruningWarnings, runtimeDependency, item.Key, isRootProject, targetGraphName, logger) == true) { continue; } @@ -160,6 +161,7 @@ private static bool ShouldPrunePackage( LibraryDependency dependency, LibraryIdentity parentLibrary, bool isRootProject, + string targetGraphName, ILogger logger) { if (packagesToPrune?.TryGetValue(dependency.Name, out PrunePackageReference? packageToPrune) != true @@ -178,7 +180,8 @@ private static bool ShouldPrunePackage( projectRestoreMetadata.UsingMicrosoftNETSdk, SdkAnalysisLevelMinimums.PruningWarnings)) { - logger.Log(RestoreLogMessage.CreateWarning(NuGetLogCode.NU1511, string.Format(CultureInfo.CurrentCulture, Strings.Error_RestorePruningProjectReference, dependency.Name))); + logger.Log(RestoreLogMessage.CreateWarning(NuGetLogCode.NU1511, string.Format(CultureInfo.CurrentCulture, Strings.Error_RestorePruningProjectReference, dependency.Name), dependency.Name, + targetGraphName)); } return false; @@ -191,7 +194,9 @@ private static bool ShouldPrunePackage( projectRestoreMetadata.UsingMicrosoftNETSdk, SdkAnalysisLevelMinimums.PruningWarnings)) { - logger.Log(RestoreLogMessage.CreateWarning(NuGetLogCode.NU1510, string.Format(CultureInfo.CurrentCulture, Strings.Error_RestorePruningDirectPackageReference, dependency.Name))); + logger.Log(RestoreLogMessage.CreateWarning(NuGetLogCode.NU1510, string.Format(CultureInfo.CurrentCulture, Strings.Error_RestorePruningDirectPackageReference, dependency.Name), + dependency.Name, + targetGraphName)); } return false; diff --git a/src/nuget-client/src/NuGet.Core/NuGet.Commands/RestoreCommand/DependencyGraphResolver.cs b/src/nuget-client/src/NuGet.Core/NuGet.Commands/RestoreCommand/DependencyGraphResolver.cs index 985d12f20b3..90afa5309a9 100644 --- a/src/nuget-client/src/NuGet.Core/NuGet.Commands/RestoreCommand/DependencyGraphResolver.cs +++ b/src/nuget-client/src/NuGet.Core/NuGet.Commands/RestoreCommand/DependencyGraphResolver.cs @@ -935,6 +935,9 @@ private async Task currentGraphItem = await currentDependencyGraphItem.GetGraphItemAsync(_request.Project.RestoreMetadata, projectTargetFramework.PackagesToPrune, IsNewerThanNET10(projectTargetFramework.FrameworkName), isRootProject, _logger); + GraphItem currentGraphItem = await currentDependencyGraphItem.GetGraphItemAsync(_request.Project.RestoreMetadata, projectTargetFramework.PackagesToPrune, IsNewerThanNET10(projectTargetFramework.FrameworkName), isRootProject, targetGraphName, _logger); LibraryDependencyTarget typeConstraint = currentDependencyGraphItem.LibraryDependency.LibraryRange.TypeConstraint; if (evictions.TryGetValue(currentDependencyGraphItem.LibraryRangeIndex, out (LibraryRangeIndex[], LibraryDependencyIndex, LibraryDependencyTarget) eviction)) diff --git a/src/nuget-client/src/NuGet.Core/NuGet.Commands/RestoreCommand/Diagnostics/UnexpectedDependencyMessages.cs b/src/nuget-client/src/NuGet.Core/NuGet.Commands/RestoreCommand/Diagnostics/UnexpectedDependencyMessages.cs index c4012371375..b3159622010 100644 --- a/src/nuget-client/src/NuGet.Core/NuGet.Commands/RestoreCommand/Diagnostics/UnexpectedDependencyMessages.cs +++ b/src/nuget-client/src/NuGet.Core/NuGet.Commands/RestoreCommand/Diagnostics/UnexpectedDependencyMessages.cs @@ -328,7 +328,7 @@ private static string[] GetDependencyTargetGraphs(PackageSpec spec, LibraryDepen } // Convert framework to target graph name. - return infos.Select(e => e.FrameworkName.DotNetFrameworkName).ToArray(); + return infos.Select(e => e.FrameworkName.ToString()).ToArray(); } } diff --git a/src/nuget-client/src/NuGet.Core/NuGet.Commands/RestoreCommand/SourceRepositoryDependencyProvider.cs b/src/nuget-client/src/NuGet.Core/NuGet.Commands/RestoreCommand/SourceRepositoryDependencyProvider.cs index c1e0a23c1ac..7660df08fbd 100644 --- a/src/nuget-client/src/NuGet.Core/NuGet.Commands/RestoreCommand/SourceRepositoryDependencyProvider.cs +++ b/src/nuget-client/src/NuGet.Core/NuGet.Commands/RestoreCommand/SourceRepositoryDependencyProvider.cs @@ -664,7 +664,7 @@ private async Task LogWarningAsync(ILogger logger, string id, FatalProtocolExcep { if (!_ignoreWarning) { - await logger.LogAsync(RestoreLogMessage.CreateWarning(NuGetLogCode.NU1801, e.Message, id)); + await logger.LogAsync(RestoreLogMessage.CreateWarning(NuGetLogCode.NU1801, e.Message)); } } @@ -681,7 +681,7 @@ private async Task LogErrorAsync(ILogger logger, string id, FatalProtocolExcepti } else { - await logger.LogAsync(RestoreLogMessage.CreateError(NuGetLogCode.NU1301, ExceptionUtilities.DisplayMessage(e), id)); + await logger.LogAsync(RestoreLogMessage.CreateError(NuGetLogCode.NU1301, ExceptionUtilities.DisplayMessage(e))); } } diff --git a/src/nuget-client/src/NuGet.Core/NuGet.Common/Errors/RestoreLogMessage.cs b/src/nuget-client/src/NuGet.Core/NuGet.Common/Errors/RestoreLogMessage.cs index b4ef4dc29ac..b02612c9fbb 100644 --- a/src/nuget-client/src/NuGet.Core/NuGet.Common/Errors/RestoreLogMessage.cs +++ b/src/nuget-client/src/NuGet.Core/NuGet.Common/Errors/RestoreLogMessage.cs @@ -79,6 +79,34 @@ public static RestoreLogMessage CreateWarning( }; } +#if DEBUG + [Obsolete("An argument for 'targetGraphs' must be provided. " + + "If the argument is not provided, the solution explorer will not add the surface the warning on the package node.", error: true)] + +#pragma warning disable RS0016 // Add public types and members to the declared API + public static RestoreLogMessage CreateWarning( +#pragma warning restore RS0016 // Add public types and members to the declared API + NuGetLogCode code, + string message, + string? libraryId) + { + throw new NotImplementedException(); + } + + [Obsolete("An argument for 'targetGraphs' must be provided. " + + "If the argument is not provided, the solution explorer will not add the surface the warning on the package node.", error: true)] + +#pragma warning disable RS0016 // Add public types and members to the declared API + public static RestoreLogMessage CreateError( +#pragma warning restore RS0016 // Add public types and members to the declared API + NuGetLogCode code, + string message, + string? libraryId) + { + throw new NotImplementedException(); + } +#endif + /// /// Create a warning log message. /// diff --git a/src/nuget-client/src/NuGet.Core/NuGet.PackageManagement/Utility/PackagesConfigLockFileUtility.cs b/src/nuget-client/src/NuGet.Core/NuGet.PackageManagement/Utility/PackagesConfigLockFileUtility.cs index c86c7bc59c6..ad93d4dcdf9 100644 --- a/src/nuget-client/src/NuGet.Core/NuGet.PackageManagement/Utility/PackagesConfigLockFileUtility.cs +++ b/src/nuget-client/src/NuGet.Core/NuGet.PackageManagement/Utility/PackagesConfigLockFileUtility.cs @@ -99,7 +99,7 @@ public static IReadOnlyList ValidatePackagesConfigLockFiles( { var message = string.Format(CultureInfo.CurrentCulture, Strings.Error_InvalidLockFileInput, lockFilePath); var errors = new List(); - var log = RestoreLogMessage.CreateError(NuGetLogCode.NU1005, message, packagesConfigFile); + var log = RestoreLogMessage.CreateError(NuGetLogCode.NU1005, message); log.ProjectPath = projectFile ?? packagesConfigFile; errors.Add(log); return errors; @@ -135,7 +135,7 @@ public static IReadOnlyList ValidatePackagesConfigLockFiles( foreach (var difference in comparisonResult.MatchedDependencies.Where(kvp => kvp.Key.ContentHash != kvp.Value.ContentHash)) { var message = string.Format(CultureInfo.CurrentCulture, Strings.Error_PackageValidationFailed, difference.Key.Id + "." + difference.Key.ResolvedVersion); - var log = RestoreLogMessage.CreateError(NuGetLogCode.NU1403, message, packagesConfigFile); + var log = RestoreLogMessage.CreateError(NuGetLogCode.NU1403, message); log.ProjectPath = projectFile ?? packagesConfigFile; errors.Add(log); } @@ -147,7 +147,7 @@ public static IReadOnlyList ValidatePackagesConfigLockFiles( if (restoreLockedMode) { var errors = new List(); - var log = RestoreLogMessage.CreateError(NuGetLogCode.NU1004, Strings.Error_RestoreInLockedModePackagesConfig, packagesConfigFile); + var log = RestoreLogMessage.CreateError(NuGetLogCode.NU1004, Strings.Error_RestoreInLockedModePackagesConfig); log.ProjectPath = projectFile ?? packagesConfigFile; errors.Add(log); return errors; diff --git a/src/nuget-client/test/NuGet.Core.FuncTests/NuGet.Commands.FuncTest/RestoreCommandTests.cs b/src/nuget-client/test/NuGet.Core.FuncTests/NuGet.Commands.FuncTest/RestoreCommandTests.cs index e3442377df3..7246d250ffe 100644 --- a/src/nuget-client/test/NuGet.Core.FuncTests/NuGet.Commands.FuncTest/RestoreCommandTests.cs +++ b/src/nuget-client/test/NuGet.Core.FuncTests/NuGet.Commands.FuncTest/RestoreCommandTests.cs @@ -3895,7 +3895,8 @@ public async Task Restore_WhenSourceDoesNotExist_ReportsNU1301InAssetsFile() result.Success.Should().BeFalse(because: logger.ShowMessages()); result.LockFile.Libraries.Should().HaveCount(0); result.LockFile.LogMessages.Should().HaveCount(1); - result.LockFile.LogMessages.Select(e => e.Code).Should().AllBeEquivalentTo(NuGetLogCode.NU1301); + result.LockFile.LogMessages[0].Code.Should().Be(NuGetLogCode.NU1301); + result.LockFile.LogMessages[0].LibraryId.Should().BeNull(); result.LockFile.Targets.Should().HaveCount(1); } @@ -3927,8 +3928,8 @@ await SimpleTestPackageUtility.CreateFolderFeedV3Async( // Assert result.Success.Should().BeTrue(because: logger.ShowMessages()); result.LockFile.Libraries.Should().HaveCount(1); - result.LockFile.LogMessages.Select(e => e.Code).Should().AllBeEquivalentTo(NuGetLogCode.NU1801); - + result.LockFile.LogMessages[0].Code.Should().Be(NuGetLogCode.NU1801); + result.LockFile.LogMessages[0].LibraryId.Should().BeNull(); static TestRestoreRequest CreateRestoreRequest(PackageSpec spec, string userPackagesFolder, List sources, ILogger logger) { return new TestRestoreRequest(spec, sources, userPackagesFolder, new TestSourceCacheContext { IgnoreFailedSources = true }, logger) @@ -4351,9 +4352,14 @@ await SimpleTestPackageUtility.CreateFolderFeedV3Async( // P -> A 1.0.0 -> B 1.0.0 // P -> C 1.0.0 - // Prune C 1.0.0 - [Fact] - public async Task RestoreCommand_WithPrunePackageReferences_DoesNotPruneDirectDependenciesAndWarns() + // Do not Prune C 1.0.0 + [Theory] + [InlineData("net10.0", "10.0.100", true, true)] + [InlineData("net10.0", "9.0.100", true, false)] + [InlineData("net10.0", "", false, true)] + [InlineData("net472", "", false, false)] + [InlineData("net472", "10.0.100", false, false)] + public async Task RestoreCommand_WithPrunePackageReferences_DoesNotPruneDirectDependencies(string framework, string sdkAnalysisLevel, bool usingMicrosoftNETSdk, bool shouldWarn) { using var pathContext = new SimpleTestPathContext(); @@ -4374,7 +4380,7 @@ await SimpleTestPackageUtility.CreateFolderFeedV3Async( var rootProject = @" { ""frameworks"": { - ""net10.0"": { + ""FRAMEWORK"": { ""dependencies"": { ""A"": { ""version"": ""[1.0.0,)"", @@ -4390,10 +4396,12 @@ await SimpleTestPackageUtility.CreateFolderFeedV3Async( } } } - }"; + }".Replace("FRAMEWORK", framework); // Setup project var projectSpec = ProjectTestHelpers.GetPackageSpecWithProjectNameAndSpec("Project1", pathContext.SolutionRoot, rootProject); + projectSpec.RestoreMetadata.SdkAnalysisLevel = !string.IsNullOrEmpty(sdkAnalysisLevel) ? NuGetVersion.Parse(sdkAnalysisLevel) : null; + projectSpec.RestoreMetadata.UsingMicrosoftNETSdk = usingMicrosoftNETSdk; // Act & Assert var result = await RunRestoreAsync(pathContext, projectSpec); @@ -4406,8 +4414,14 @@ await SimpleTestPackageUtility.CreateFolderFeedV3Async( result.LockFile.Targets[0].Libraries[1].Dependencies.Should().HaveCount(0); result.LockFile.Targets[0].Libraries[2].Name.Should().Be("C"); result.LockFile.Targets[0].Libraries[2].Dependencies.Should().HaveCount(0); - result.LockFile.LogMessages.Should().HaveCount(1); - result.LockFile.LogMessages[0].Code.Should().Be(NuGetLogCode.NU1510); + if (shouldWarn) + { + result.LockFile.LogMessages.Should().HaveCount(1); + result.LockFile.LogMessages[0].Code.Should().Be(NuGetLogCode.NU1510); + result.LockFile.LogMessages[0].LibraryId.Should().Be("C"); + result.LockFile.LogMessages[0].TargetGraphs.Should().HaveCount(1); + result.LockFile.LogMessages[0].TargetGraphs[0].Should().Be(framework); + } ISet installedPackages = result.GetAllInstalled(); installedPackages.Should().HaveCount(3); } @@ -4722,6 +4736,9 @@ await SimpleTestPackageUtility.CreateFolderFeedV3Async( { result.LockFile.LogMessages.Should().HaveCount(1); result.LockFile.LogMessages[0].Code.Should().Be(NuGetLogCode.NU1511); + result.LockFile.LogMessages[0].LibraryId.Should().Be("Project2"); + result.LockFile.LogMessages[0].TargetGraphs.Should().HaveCount(1); + result.LockFile.LogMessages[0].TargetGraphs[0].Should().Be(framework); } ISet installedPackages = result.GetAllInstalled(); installedPackages.Should().HaveCount(1); diff --git a/src/nuget-client/test/NuGet.Core.Tests/NuGet.Commands.Test/CollectorLoggerTests.cs b/src/nuget-client/test/NuGet.Core.Tests/NuGet.Commands.Test/CollectorLoggerTests.cs index 0aa20a8a709..669414ab491 100644 --- a/src/nuget-client/test/NuGet.Core.Tests/NuGet.Commands.Test/CollectorLoggerTests.cs +++ b/src/nuget-client/test/NuGet.Core.Tests/NuGet.Commands.Test/CollectorLoggerTests.cs @@ -727,7 +727,7 @@ public void CollectorLogger_DoesNotLogsWarningsForPackageSpecificNoWarnSetForGlo collector.Log(new RestoreLogMessage(LogLevel.Debug, "Debug") { ShouldDisplay = true }); collector.Log(new RestoreLogMessage(LogLevel.Verbose, "Verbose") { ShouldDisplay = true }); collector.Log(new RestoreLogMessage(LogLevel.Information, "Information") { ShouldDisplay = true }); - collector.Log(RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId)); + collector.Log(RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId, frameworkString)); collector.Log(new RestoreLogMessage(LogLevel.Error, NuGetLogCode.NU1000, "Error") { ShouldDisplay = true }); // Assert @@ -768,7 +768,7 @@ public void CollectorLogger_DoesNotLogsWarningsForPackageSpecificNoWarnSetForGlo collector.Log(new RestoreLogMessage(LogLevel.Debug, "Debug") { ShouldDisplay = true }); collector.Log(new RestoreLogMessage(LogLevel.Verbose, "Verbose") { ShouldDisplay = true }); collector.Log(new RestoreLogMessage(LogLevel.Information, "Information") { ShouldDisplay = true }); - collector.Log(RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId)); + collector.Log(RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId, frameworkString, netcoreFrameworkString)); collector.Log(new RestoreLogMessage(LogLevel.Error, NuGetLogCode.NU1000, "Error") { ShouldDisplay = true }); // Assert @@ -809,9 +809,9 @@ public void CollectorLogger_DoesNotLogsWarningsForPackageSpecificNoWarnSetWithMu collector.Log(new RestoreLogMessage(LogLevel.Debug, "Debug") { ShouldDisplay = true }); collector.Log(new RestoreLogMessage(LogLevel.Verbose, "Verbose") { ShouldDisplay = true }); collector.Log(new RestoreLogMessage(LogLevel.Information, "Information") { ShouldDisplay = true }); - collector.Log(RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId)); - collector.Log(RestoreLogMessage.CreateWarning(NuGetLogCode.NU1601, "Warning", libraryId)); - collector.Log(RestoreLogMessage.CreateWarning(NuGetLogCode.NU1605, "Warning", libraryId)); + collector.Log(RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId, frameworkString)); + collector.Log(RestoreLogMessage.CreateWarning(NuGetLogCode.NU1601, "Warning", libraryId, frameworkString)); + collector.Log(RestoreLogMessage.CreateWarning(NuGetLogCode.NU1605, "Warning", libraryId, frameworkString)); collector.Log(new RestoreLogMessage(LogLevel.Error, NuGetLogCode.NU1000, "Error") { ShouldDisplay = true }); // Assert @@ -854,9 +854,9 @@ public void CollectorLogger_DoesNotLogsWarningsForPackageSpecificNoWarnSetWithMu collector.Log(new RestoreLogMessage(LogLevel.Debug, "Debug") { ShouldDisplay = true }); collector.Log(new RestoreLogMessage(LogLevel.Verbose, "Verbose") { ShouldDisplay = true }); collector.Log(new RestoreLogMessage(LogLevel.Information, "Information") { ShouldDisplay = true }); - collector.Log(RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId)); - collector.Log(RestoreLogMessage.CreateWarning(NuGetLogCode.NU1601, "Warning", libraryId)); - collector.Log(RestoreLogMessage.CreateWarning(NuGetLogCode.NU1605, "Warning", libraryId)); + collector.Log(RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId, frameworkString, netcoreFrameworkString)); + collector.Log(RestoreLogMessage.CreateWarning(NuGetLogCode.NU1601, "Warning", libraryId, frameworkString, netcoreFrameworkString)); + collector.Log(RestoreLogMessage.CreateWarning(NuGetLogCode.NU1605, "Warning", libraryId, frameworkString, netcoreFrameworkString)); collector.Log(new RestoreLogMessage(LogLevel.Error, NuGetLogCode.NU1000, "Error") { ShouldDisplay = true }); // Assert diff --git a/src/nuget-client/test/NuGet.Core.Tests/NuGet.Commands.Test/UnexpectedDependencyMessagesTests.cs b/src/nuget-client/test/NuGet.Core.Tests/NuGet.Commands.Test/UnexpectedDependencyMessagesTests.cs index 0654d222d79..827e8fa2920 100644 --- a/src/nuget-client/test/NuGet.Core.Tests/NuGet.Commands.Test/UnexpectedDependencyMessagesTests.cs +++ b/src/nuget-client/test/NuGet.Core.Tests/NuGet.Commands.Test/UnexpectedDependencyMessagesTests.cs @@ -580,7 +580,7 @@ public void GivenAProjectWithAFrameworkSpecificDependencyVerifySingleTargetGraph [Fact] public void GivenAProjectWithADependencyOnAPackageWithANullRangeVerifyWarningMessage() { - var tfi = GetTFI(NuGetFramework.Parse("net46"), new LibraryRange("x", null, LibraryDependencyTarget.Package)); + var tfi = GetTFI(NuGetFramework.Parse("net9.0"), new LibraryRange("x", null, LibraryDependencyTarget.Package)); var project = new PackageSpec(tfi) { Name = "proj" @@ -589,6 +589,8 @@ public void GivenAProjectWithADependencyOnAPackageWithANullRangeVerifyWarningMes var log = UnexpectedDependencyMessages.GetProjectDependenciesMissingVersion(project).Single(); log.Code.Should().Be(NuGetLogCode.NU1604); + log.TargetGraphs.Should().HaveCount(1); + log.TargetGraphs[0].Should().Be("net9.0"); log.Message.Should().Be("Project dependency 'x' does not specify a version. Include a version for the dependency to ensure consistent restore results."); } @@ -596,7 +598,7 @@ public void GivenAProjectWithADependencyOnAPackageWithANullRangeVerifyWarningMes public void GivenAProjectWithADependencyOnAPackageWithNoLowerBoundVerifyWarningMessage() { var range = VersionRange.Parse("(, 2.0.0)"); - var tfi = GetTFI(NuGetFramework.Parse("net46"), new LibraryRange("x", range, LibraryDependencyTarget.Package)); + var tfi = GetTFI(NuGetFramework.Parse("net9.0"), new LibraryRange("x", range, LibraryDependencyTarget.Package)); var project = new PackageSpec(tfi) { Name = "proj" @@ -605,6 +607,8 @@ public void GivenAProjectWithADependencyOnAPackageWithNoLowerBoundVerifyWarningM var log = UnexpectedDependencyMessages.GetProjectDependenciesMissingLowerBounds(project).Single(); log.Code.Should().Be(NuGetLogCode.NU1604); + log.TargetGraphs.Should().HaveCount(1); + log.TargetGraphs[0].Should().Be("net9.0"); log.Message.Should().Be("Project dependency x (< 2.0.0) does not contain an inclusive lower bound. Include a lower bound in the dependency version to ensure consistent restore results."); } diff --git a/src/nuget-client/test/NuGet.Core.Tests/NuGet.Commands.Test/WarningPropertiesCollectionTests.cs b/src/nuget-client/test/NuGet.Core.Tests/NuGet.Commands.Test/WarningPropertiesCollectionTests.cs index 4499ca6b8be..d29e386d7b5 100644 --- a/src/nuget-client/test/NuGet.Core.Tests/NuGet.Commands.Test/WarningPropertiesCollectionTests.cs +++ b/src/nuget-client/test/NuGet.Core.Tests/NuGet.Commands.Test/WarningPropertiesCollectionTests.cs @@ -260,7 +260,7 @@ public void WarningPropertiesCollection_PackagePropertiesWithoutFrameworkAndWarn var warningPropertiesCollection = new WarningPropertiesCollection(null, packageSpecificWarningProperties, new List { targetFramework }); - var suppressedMessage = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId); + var suppressedMessage = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId, frameworkString); // Act && Assert Assert.True(warningPropertiesCollection.ApplyWarningProperties(suppressedMessage)); @@ -344,7 +344,7 @@ public void WarningPropertiesCollection_PackagePropertiesAndProjectPropertiesWit packageSpecificWarningProperties, null); - var suppressedMessage = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId); + var suppressedMessage = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId, frameworkString); // Act && Assert Assert.True(warningPropertiesCollection.ApplyWarningProperties(suppressedMessage)); @@ -376,7 +376,7 @@ public void WarningPropertiesCollection_PackagePropertiesWithNoWarnAndProjectPro new List { targetFramework }); var suppressedMessage = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId, frameworkString); - var suppressedMessage2 = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId); + var suppressedMessage2 = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId, frameworkString); var unaffectedMessage = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1601, "Warning", libraryId, frameworkString); // Act && Assert @@ -412,7 +412,7 @@ public void WarningPropertiesCollection_PackagePropertiesWithNoWarnAndProjectPro new List { targetFramework }); var suppressedMessage = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId, frameworkString); - var suppressedMessage2 = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId); + var suppressedMessage2 = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId, frameworkString); var upgradedMessage = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1601, "Warning", libraryId, frameworkString); // Act && Assert @@ -449,9 +449,12 @@ public void WarningPropertiesCollection_PackagePropertiesWithNoWarnAndProjectPro packageSpecificWarningProperties, new List { targetFramework }); - var suppressedMessage = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId, frameworkString); - var suppressedMessage2 = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId); - var unaffectedMessage = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1601, "Warning", libraryId); + var suppressedMessage = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning"); + suppressedMessage.LibraryId = libraryId; + var suppressedMessage2 = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning"); + suppressedMessage2.LibraryId = libraryId; + var unaffectedMessage = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1601, "Warning"); + unaffectedMessage.LibraryId = libraryId; // Act && Assert Assert.True(warningPropertiesCollection.ApplyWarningProperties(suppressedMessage)); @@ -490,7 +493,8 @@ public void WarningPropertiesCollection_MessageWithNoTargetGraphAndDependencyWit packageSpecificWarningProperties, new List { firstTargetFramework, secondTargetFramework }); - var nonSuppressedMessage = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId); + var nonSuppressedMessage = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning"); + nonSuppressedMessage.LibraryId = libraryId; var suppressedMessage = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId, firstFrameworkString); // Act && Assert @@ -529,7 +533,7 @@ public void WarningPropertiesCollection_MessageWithNoTargetGraphAndDependencyWit packageSpecificWarningProperties, new List { firstTargetFramework, secondTargetFramework }); - var suppressedMessage = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId); + var suppressedMessage = RestoreLogMessage.CreateWarning(NuGetLogCode.NU1500, "Warning", libraryId, firstFrameworkString, secondFrameworkString); // Act && Assert Assert.True(warningPropertiesCollection.ApplyWarningProperties(suppressedMessage)); diff --git a/src/sdk/.config/dotnet-tools.json b/src/sdk/.config/dotnet-tools.json index 04e469de677..8f18a12d27c 100644 --- a/src/sdk/.config/dotnet-tools.json +++ b/src/sdk/.config/dotnet-tools.json @@ -3,7 +3,7 @@ "isRoot": true, "tools": { "microsoft.dotnet.darc": { - "version": "1.1.0-beta.25257.6", + "version": "1.1.0-beta.25259.3", "commands": [ "darc" ] diff --git a/src/sdk/eng/Version.Details.xml b/src/sdk/eng/Version.Details.xml index 3c97b8e155d..e39b5b1a30f 100644 --- a/src/sdk/eng/Version.Details.xml +++ b/src/sdk/eng/Version.Details.xml @@ -1,78 +1,78 @@ - + - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb @@ -80,504 +80,504 @@ https://github.com/dotnet/core-setup 7d57652f33493fa022125b7f63aad0d70c52d810 - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/nuget/nuget.client - 02b1c82c1e1855042556fdf5d205de501fd81590 + e4e3b79701686199bc804a06533d2df054924d7e - + https://github.com/nuget/nuget.client - 02b1c82c1e1855042556fdf5d205de501fd81590 + e4e3b79701686199bc804a06533d2df054924d7e - + https://github.com/nuget/nuget.client - 02b1c82c1e1855042556fdf5d205de501fd81590 + e4e3b79701686199bc804a06533d2df054924d7e - + https://github.com/nuget/nuget.client - 02b1c82c1e1855042556fdf5d205de501fd81590 + e4e3b79701686199bc804a06533d2df054924d7e - + https://github.com/nuget/nuget.client - 02b1c82c1e1855042556fdf5d205de501fd81590 + e4e3b79701686199bc804a06533d2df054924d7e - + https://github.com/nuget/nuget.client - 02b1c82c1e1855042556fdf5d205de501fd81590 + e4e3b79701686199bc804a06533d2df054924d7e - + https://github.com/nuget/nuget.client - 02b1c82c1e1855042556fdf5d205de501fd81590 + e4e3b79701686199bc804a06533d2df054924d7e - + https://github.com/nuget/nuget.client - 02b1c82c1e1855042556fdf5d205de501fd81590 + e4e3b79701686199bc804a06533d2df054924d7e - + https://github.com/nuget/nuget.client - 02b1c82c1e1855042556fdf5d205de501fd81590 + e4e3b79701686199bc804a06533d2df054924d7e - + https://github.com/nuget/nuget.client - 02b1c82c1e1855042556fdf5d205de501fd81590 + e4e3b79701686199bc804a06533d2df054924d7e - + https://github.com/nuget/nuget.client - 02b1c82c1e1855042556fdf5d205de501fd81590 + e4e3b79701686199bc804a06533d2df054924d7e - + https://github.com/nuget/nuget.client - 02b1c82c1e1855042556fdf5d205de501fd81590 + e4e3b79701686199bc804a06533d2df054924d7e - + https://github.com/nuget/nuget.client - 02b1c82c1e1855042556fdf5d205de501fd81590 + e4e3b79701686199bc804a06533d2df054924d7e - + https://github.com/nuget/nuget.client - 02b1c82c1e1855042556fdf5d205de501fd81590 + e4e3b79701686199bc804a06533d2df054924d7e - + https://github.com/nuget/nuget.client - 02b1c82c1e1855042556fdf5d205de501fd81590 + e4e3b79701686199bc804a06533d2df054924d7e - + https://github.com/nuget/nuget.client - 02b1c82c1e1855042556fdf5d205de501fd81590 + e4e3b79701686199bc804a06533d2df054924d7e - + https://github.com/nuget/nuget.client - 02b1c82c1e1855042556fdf5d205de501fd81590 + e4e3b79701686199bc804a06533d2df054924d7e - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/arcade-services - 83dd68a5d7d5ccaed7e821cfc7e3c08e10cc3d8d + bd2309670213218bc0e2073379e4985b346600c7 - + https://github.com/dotnet/arcade-services - 83dd68a5d7d5ccaed7e821cfc7e3c08e10cc3d8d + bd2309670213218bc0e2073379e4985b346600c7 https://github.com/microsoft/testfx @@ -587,9 +587,9 @@ https://github.com/microsoft/testfx 2b3a9fd44e2cbb1c52362a211b025b9eddbd8ec1 - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb diff --git a/src/sdk/eng/Versions.props b/src/sdk/eng/Versions.props index 336c53e4d0b..9419b2b8b48 100644 --- a/src/sdk/eng/Versions.props +++ b/src/sdk/eng/Versions.props @@ -54,7 +54,7 @@ https://dotnetclimsrc.blob.core.windows.net/dotnet/ - 10.0.0-preview.25257.101 + 10.0.0-preview.25260.104 1.0.0-20230414.1 2.23.0 2.0.1-servicing-26011-01 @@ -63,7 +63,7 @@ 4.8.6 1.2.0-beta.435 4.0.5 - 2.0.0-beta5.25257.101 + 2.0.0-beta5.25260.104 2.0.0-beta5.25227.101 1.1.2-beta1.22216.1 10.3.0 @@ -81,15 +81,15 @@ - 2.0.0-preview.1.25257.101 + 2.0.0-preview.1.25260.104 - 2.2.0-beta.25257.101 + 2.2.0-beta.25260.104 - 1.1.0-beta.25257.6 + 1.1.0-beta.25259.3 @@ -97,49 +97,49 @@ - 10.0.0-preview.5.25257.101 + 10.0.0-preview.5.25260.104 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 8.0.0-rc.1.23414.4 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 2.1.0 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 8.0.0 @@ -155,34 +155,34 @@ - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 - 6.15.0-preview.1.47 - 6.15.0-preview.1.47 - 6.15.0-preview.1.47 - 6.15.0-preview.1.47 - 6.15.0-preview.1.47 - 6.15.0-preview.1.47 - 6.15.0-preview.1.47 - 6.15.0-preview.1.47 - 6.15.0-preview.1.47 - 6.15.0-preview.1.47 - 6.15.0-preview.1.47 - 6.15.0-preview.1.47 + 6.15.0-preview.1.50 + 6.15.0-preview.1.50 + 6.15.0-preview.1.50 + 6.15.0-preview.1.50 + 6.15.0-preview.1.50 + 6.15.0-preview.1.50 + 6.15.0-preview.1.50 + 6.15.0-preview.1.50 + 6.15.0-preview.1.50 + 6.15.0-preview.1.50 + 6.15.0-preview.1.50 + 6.15.0-preview.1.50 - 17.15.0-preview-25257-101 - 17.15.0-preview-25257-101 - 17.15.0-preview-25257-101 + 17.15.0-preview-25260-104 + 17.15.0-preview-25260-104 + 17.15.0-preview-25260-104 - 10.0.0-preview.25257.101 + 10.0.0-preview.25260.104 @@ -203,83 +203,83 @@ At usage sites, either we use MicrosoftBuildMinimumVersion, or MicrosoftBuildVersion in source-only modes. Additionally, set the MinimumVSVersion for the installer UI that's required for targeting NetCurrent --> - 17.15.0-preview-25257-101 - 17.15.0-preview-25257-101 + 17.15.0-preview-25260-104 + 17.15.0-preview-25260-104 17.11.4 17.13 - 10.0.100-preview.5.25257.101 - 10.0.100-preview.5.25257.101 - 10.0.100-preview.5.25257.101 - 10.0.100-preview.5.25257.101 - 10.0.100-preview.5.25257.101 + 10.0.100-preview.5.25260.104 + 10.0.100-preview.5.25260.104 + 10.0.100-preview.5.25260.104 + 10.0.100-preview.5.25260.104 + 10.0.100-preview.5.25260.104 - 10.0.100-preview.5.25257.101 - 10.0.100-preview.5.25257.101 - 10.0.100-preview.5.25257.101 - 10.0.100-preview.5.25257.101 + 10.0.100-preview.5.25260.104 + 10.0.100-preview.5.25260.104 + 10.0.100-preview.5.25260.104 + 10.0.100-preview.5.25260.104 - 14.0.100-beta.25257.101 + 14.0.100-beta.25260.104 - 5.0.0-1.25257.101 - 5.0.0-1.25257.101 - 5.0.0-1.25257.101 - 5.0.0-1.25257.101 - 5.0.0-1.25257.101 - 5.0.0-1.25257.101 - 5.0.0-1.25257.101 - 5.0.0-1.25257.101 - 5.0.0-1.25257.101 - 3.12.0-beta1.25257.101 + 5.0.0-1.25260.104 + 5.0.0-1.25260.104 + 5.0.0-1.25260.104 + 5.0.0-1.25260.104 + 5.0.0-1.25260.104 + 5.0.0-1.25260.104 + 5.0.0-1.25260.104 + 5.0.0-1.25260.104 + 5.0.0-1.25260.104 + 5.0.0-1.25260.104 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 - 10.0.0-preview.25257.101 - 10.0.0-preview.25257.101 - 10.0.0-preview.25257.101 + 10.0.0-preview.25260.104 + 10.0.0-preview.25260.104 + 10.0.0-preview.25260.104 - 10.0.0-preview.5.25257.101 + 10.0.0-preview.5.25260.104 3.1.56 3.1.56 @@ -289,8 +289,8 @@ - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 2.2.0-beta.19072.10 @@ -303,21 +303,21 @@ - 10.0.0-beta.25257.101 - 10.0.0-beta.25257.101 - 10.0.0-beta.25257.101 - 10.0.0-beta.25257.101 - 10.0.0-beta.25257.101 - 10.0.0-beta.25257.101 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 - 10.0.0-beta.25257.101 - 10.0.0-beta.25257.101 - 10.0.0-beta.25257.101 - 10.0.0-beta.25257.101 - 10.0.0-beta.25257.101 - 10.0.0-beta.25257.101 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 diff --git a/src/sdk/eng/common/core-templates/steps/source-build.yml b/src/sdk/eng/common/core-templates/steps/source-build.yml index 325231215d5..f2a0f347fdd 100644 --- a/src/sdk/eng/common/core-templates/steps/source-build.yml +++ b/src/sdk/eng/common/core-templates/steps/source-build.yml @@ -38,14 +38,9 @@ steps: targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}' fi - runtimeOsArgs= - if [ '${{ parameters.platform.runtimeOS }}' != '' ]; then - runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}' - fi - - baseOsArgs= - if [ '${{ parameters.platform.baseOS }}' != '' ]; then - baseOsArgs='/p:BaseOS=${{ parameters.platform.baseOS }}' + baseRidArgs= + if [ '${{ parameters.platform.baseRID }}' != '' ]; then + baseRidArgs='/p:BaseRid=${{ parameters.platform.baseRID }}' fi portableBuildArgs= @@ -59,8 +54,7 @@ steps: ${{ parameters.platform.buildArguments }} \ $internalRuntimeDownloadArgs \ $targetRidArgs \ - $runtimeOsArgs \ - $baseOsArgs \ + $baseRidArgs \ $portableBuildArgs \ /p:DotNetBuildSourceOnly=true \ /p:DotNetBuildRepo=true \ @@ -71,7 +65,7 @@ steps: is1ESPipeline: ${{ parameters.is1ESPipeline }} args: displayName: Publish BuildLogs - targetPath: artifacts/log/$[ coalesce(variables._BuildConfig, 'Release') ]/ + targetPath: artifacts/log/${{ coalesce(variables._BuildConfig, 'Release') }} artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt) continueOnError: true condition: succeededOrFailed() diff --git a/src/sdk/eng/common/tools.sh b/src/sdk/eng/common/tools.sh index d51f300c772..cc007b1f15a 100755 --- a/src/sdk/eng/common/tools.sh +++ b/src/sdk/eng/common/tools.sh @@ -5,6 +5,9 @@ # CI mode - set to true on CI server for PR validation build or official build. ci=${ci:-false} +# Build mode +source_build=${source_build:-false} + # Set to true to use the pipelines logger which will enable Azure logging output. # https://github.com/Microsoft/azure-pipelines-tasks/blob/master/docs/authoring/commands.md # This flag is meant as a temporary opt-opt for the feature while validate it across @@ -58,7 +61,8 @@ use_installed_dotnet_cli=${use_installed_dotnet_cli:-true} dotnetInstallScriptVersion=${dotnetInstallScriptVersion:-'v1'} # True to use global NuGet cache instead of restoring packages to repository-local directory. -if [[ "$ci" == true ]]; then +# Keep in sync with NuGetPackageroot in Arcade SDK's RepositoryLayout.props. +if [[ "$ci" == true || "$source_build" == true ]]; then use_global_nuget_cache=${use_global_nuget_cache:-false} else use_global_nuget_cache=${use_global_nuget_cache:-true} diff --git a/src/sdk/global.json b/src/sdk/global.json index 610a406858d..b2298552b56 100644 --- a/src/sdk/global.json +++ b/src/sdk/global.json @@ -14,8 +14,8 @@ } }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25257.101", - "Microsoft.DotNet.Helix.Sdk": "10.0.0-beta.25257.101", + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25260.104", + "Microsoft.DotNet.Helix.Sdk": "10.0.0-beta.25260.104", "Microsoft.Build.NoTargets": "3.7.0", "Microsoft.Build.Traversal": "3.4.0" } diff --git a/src/sdk/src/Cli/dotnet/CommandFactory/CommandSpec.cs b/src/sdk/src/Cli/dotnet/CommandFactory/CommandSpec.cs index debdc5c7110..6af14dd0b93 100644 --- a/src/sdk/src/Cli/dotnet/CommandFactory/CommandSpec.cs +++ b/src/sdk/src/Cli/dotnet/CommandFactory/CommandSpec.cs @@ -1,20 +1,18 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using Microsoft.DotNet.Cli.CommandFactory.CommandResolution; namespace Microsoft.DotNet.Cli.CommandFactory; public class CommandSpec( - string? path, + string path, string? args, - Dictionary environmentVariables = null) + Dictionary? environmentVariables = null) { public string Path { get; } = path; - public string Args { get; } = args; + public string? Args { get; } = args; public Dictionary EnvironmentVariables { get; } = environmentVariables ?? []; diff --git a/src/sdk/src/Cli/dotnet/Commands/New/DotnetCommandCallbacks.cs b/src/sdk/src/Cli/dotnet/Commands/New/DotnetCommandCallbacks.cs index 79c388d6ef0..fabaa4ba078 100644 --- a/src/sdk/src/Cli/dotnet/Commands/New/DotnetCommandCallbacks.cs +++ b/src/sdk/src/Cli/dotnet/Commands/New/DotnetCommandCallbacks.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using Microsoft.DotNet.Cli.Commands.Hidden.Add; using Microsoft.DotNet.Cli.Commands.Package.Add; using Microsoft.DotNet.Cli.Commands.Reference.Add; diff --git a/src/sdk/src/Cli/dotnet/Commands/New/MSBuildEvaluation/CapabilityExpressionEvaluator.cs b/src/sdk/src/Cli/dotnet/Commands/New/MSBuildEvaluation/CapabilityExpressionEvaluator.cs index baa1b148d18..36775eb8cec 100644 --- a/src/sdk/src/Cli/dotnet/Commands/New/MSBuildEvaluation/CapabilityExpressionEvaluator.cs +++ b/src/sdk/src/Cli/dotnet/Commands/New/MSBuildEvaluation/CapabilityExpressionEvaluator.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - namespace Microsoft.DotNet.Cli.Commands.New.MSBuildEvaluation; /// diff --git a/src/sdk/src/Cli/dotnet/Commands/New/MSBuildEvaluation/MSBuildEvaluationResult.cs b/src/sdk/src/Cli/dotnet/Commands/New/MSBuildEvaluation/MSBuildEvaluationResult.cs index 45c64443c2c..61bf1d418ca 100644 --- a/src/sdk/src/Cli/dotnet/Commands/New/MSBuildEvaluation/MSBuildEvaluationResult.cs +++ b/src/sdk/src/Cli/dotnet/Commands/New/MSBuildEvaluation/MSBuildEvaluationResult.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using MSBuildProject = Microsoft.Build.Evaluation.Project; namespace Microsoft.DotNet.Cli.Commands.New.MSBuildEvaluation; diff --git a/src/sdk/src/Cli/dotnet/Commands/New/MSBuildEvaluation/MSBuildEvaluator.cs b/src/sdk/src/Cli/dotnet/Commands/New/MSBuildEvaluation/MSBuildEvaluator.cs index 79b968bfa62..a79c2ec2af7 100644 --- a/src/sdk/src/Cli/dotnet/Commands/New/MSBuildEvaluation/MSBuildEvaluator.cs +++ b/src/sdk/src/Cli/dotnet/Commands/New/MSBuildEvaluation/MSBuildEvaluator.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using System.Diagnostics; using Microsoft.Build.Evaluation; using Microsoft.DotNet.Cli.Utils; @@ -197,7 +195,7 @@ private MSBuildEvaluationResult EvaluateProjectInternal(IEngineEnvironmentSettin targetFrameworksString = Sha256Hasher.HashWithNormalizedCasing(targetFramework); } - Dictionary properties = new() + Dictionary properties = new() { { "ProjectPath", Sha256Hasher.HashWithNormalizedCasing(projectPath)}, { "SdkStyleProject", IsSdkStyleProject.ToString() }, diff --git a/src/sdk/src/Cli/dotnet/Commands/New/MSBuildEvaluation/MultiTargetEvaluationResult.cs b/src/sdk/src/Cli/dotnet/Commands/New/MSBuildEvaluation/MultiTargetEvaluationResult.cs index 9bc240e6097..b0e4cebafee 100644 --- a/src/sdk/src/Cli/dotnet/Commands/New/MSBuildEvaluation/MultiTargetEvaluationResult.cs +++ b/src/sdk/src/Cli/dotnet/Commands/New/MSBuildEvaluation/MultiTargetEvaluationResult.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using MSBuildProject = Microsoft.Build.Evaluation.Project; namespace Microsoft.DotNet.Cli.Commands.New.MSBuildEvaluation; diff --git a/src/sdk/src/Cli/dotnet/Commands/New/MSBuildEvaluation/NonSDKStyleEvaluationResult.cs b/src/sdk/src/Cli/dotnet/Commands/New/MSBuildEvaluation/NonSDKStyleEvaluationResult.cs index be15e3b7599..be176cba29f 100644 --- a/src/sdk/src/Cli/dotnet/Commands/New/MSBuildEvaluation/NonSDKStyleEvaluationResult.cs +++ b/src/sdk/src/Cli/dotnet/Commands/New/MSBuildEvaluation/NonSDKStyleEvaluationResult.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using MSBuildProject = Microsoft.Build.Evaluation.Project; namespace Microsoft.DotNet.Cli.Commands.New.MSBuildEvaluation; diff --git a/src/sdk/src/Cli/dotnet/Commands/New/MSBuildEvaluation/ProjectCapabilityConstraint.cs b/src/sdk/src/Cli/dotnet/Commands/New/MSBuildEvaluation/ProjectCapabilityConstraint.cs index e689f68204b..fefcc1656de 100644 --- a/src/sdk/src/Cli/dotnet/Commands/New/MSBuildEvaluation/ProjectCapabilityConstraint.cs +++ b/src/sdk/src/Cli/dotnet/Commands/New/MSBuildEvaluation/ProjectCapabilityConstraint.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using Microsoft.Build.Evaluation; using Microsoft.Extensions.Logging; using Microsoft.TemplateEngine.Abstractions; diff --git a/src/sdk/src/Cli/dotnet/Commands/New/MSBuildEvaluation/ProjectContextSymbolSource.cs b/src/sdk/src/Cli/dotnet/Commands/New/MSBuildEvaluation/ProjectContextSymbolSource.cs index f7a2e872aa4..83fdcedc3d2 100644 --- a/src/sdk/src/Cli/dotnet/Commands/New/MSBuildEvaluation/ProjectContextSymbolSource.cs +++ b/src/sdk/src/Cli/dotnet/Commands/New/MSBuildEvaluation/ProjectContextSymbolSource.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using Microsoft.Extensions.Logging; using Microsoft.TemplateEngine.Abstractions; using Microsoft.TemplateEngine.Abstractions.Components; diff --git a/src/sdk/src/Cli/dotnet/Commands/New/NewCommandParser.cs b/src/sdk/src/Cli/dotnet/Commands/New/NewCommandParser.cs index 279f2bab26d..5bb9db983a8 100644 --- a/src/sdk/src/Cli/dotnet/Commands/New/NewCommandParser.cs +++ b/src/sdk/src/Cli/dotnet/Commands/New/NewCommandParser.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using System.CommandLine; using System.CommandLine.Parsing; using Microsoft.DotNet.Cli.Commands.New.MSBuildEvaluation; @@ -170,7 +168,7 @@ private static CliTemplateEngineHost CreateHost( { "prefs:language", preferredLang }, { "dotnet-cli-version", Product.Version }, { "RuntimeFrameworkVersion", new Muxer().SharedFxVersion }, - { "NetStandardImplicitPackageVersion", new FrameworkDependencyFile().GetNetStandardLibraryVersion() }, + { "NetStandardImplicitPackageVersion", new FrameworkDependencyFile().GetNetStandardLibraryVersion() ?? "" }, }; return new CliTemplateEngineHost( HostIdentifier, diff --git a/src/sdk/src/Cli/dotnet/Commands/New/PostActions/DotnetAddPostActionProcessor.cs b/src/sdk/src/Cli/dotnet/Commands/New/PostActions/DotnetAddPostActionProcessor.cs index e7b4f78af82..bcb0cba1485 100644 --- a/src/sdk/src/Cli/dotnet/Commands/New/PostActions/DotnetAddPostActionProcessor.cs +++ b/src/sdk/src/Cli/dotnet/Commands/New/PostActions/DotnetAddPostActionProcessor.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using Microsoft.DotNet.Cli.Utils; using Microsoft.TemplateEngine.Abstractions; using Microsoft.TemplateEngine.Abstractions.PhysicalFileSystem; diff --git a/src/sdk/src/Cli/dotnet/Commands/New/PostActions/DotnetRestorePostActionProcessor.cs b/src/sdk/src/Cli/dotnet/Commands/New/PostActions/DotnetRestorePostActionProcessor.cs index 15cda29d580..18924281986 100644 --- a/src/sdk/src/Cli/dotnet/Commands/New/PostActions/DotnetRestorePostActionProcessor.cs +++ b/src/sdk/src/Cli/dotnet/Commands/New/PostActions/DotnetRestorePostActionProcessor.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using Microsoft.DotNet.Cli.Utils; using Microsoft.TemplateEngine.Abstractions; using Microsoft.TemplateEngine.Cli.PostActionProcessors; diff --git a/src/sdk/src/Cli/dotnet/Commands/New/PostActions/DotnetSlnPostActionProcessor.cs b/src/sdk/src/Cli/dotnet/Commands/New/PostActions/DotnetSlnPostActionProcessor.cs index 36fe87bd395..7b86521ed8b 100644 --- a/src/sdk/src/Cli/dotnet/Commands/New/PostActions/DotnetSlnPostActionProcessor.cs +++ b/src/sdk/src/Cli/dotnet/Commands/New/PostActions/DotnetSlnPostActionProcessor.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using System.Diagnostics.CodeAnalysis; using Microsoft.DotNet.Cli.Utils; using Microsoft.TemplateEngine.Abstractions; diff --git a/src/sdk/src/Cli/dotnet/Commands/Project/Convert/ProjectConvertCommand.cs b/src/sdk/src/Cli/dotnet/Commands/Project/Convert/ProjectConvertCommand.cs index 497f6768881..38c605d1e1e 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Project/Convert/ProjectConvertCommand.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Project/Convert/ProjectConvertCommand.cs @@ -30,7 +30,7 @@ public override int Execute() // Find directives (this can fail, so do this before creating the target directory). var sourceFile = VirtualProjectBuildingCommand.LoadSourceFile(file); - var directives = VirtualProjectBuildingCommand.FindDirectivesForConversion(sourceFile, force: _force); + var directives = VirtualProjectBuildingCommand.FindDirectives(sourceFile, reportAllErrors: !_force, errors: null); Directory.CreateDirectory(targetDirectory); @@ -50,7 +50,7 @@ public override int Execute() string projectFile = Path.Join(targetDirectory, Path.GetFileNameWithoutExtension(file) + ".csproj"); using var stream = File.Open(projectFile, FileMode.Create, FileAccess.Write); using var writer = new StreamWriter(stream, Encoding.UTF8); - VirtualProjectBuildingCommand.WriteProjectFile(writer, directives); + VirtualProjectBuildingCommand.WriteProjectFile(writer, directives, isVirtualProject: false); return 0; } diff --git a/src/sdk/src/Cli/dotnet/Commands/Run/Api/RunApiCommand.cs b/src/sdk/src/Cli/dotnet/Commands/Run/Api/RunApiCommand.cs new file mode 100644 index 00000000000..2ff5376e556 --- /dev/null +++ b/src/sdk/src/Cli/dotnet/Commands/Run/Api/RunApiCommand.cs @@ -0,0 +1,107 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Collections.Immutable; +using System.CommandLine; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace Microsoft.DotNet.Cli.Commands.Run.Api; + +/// +/// Takes JSON from stdin lines, produces JSON on stdout lines, doesn't perform any changes. +/// Can be used by IDEs to see the project file behind a file-based program. +/// +internal sealed class RunApiCommand(ParseResult parseResult) : CommandBase(parseResult) +{ + public override int Execute() + { + for (string? line; (line = Console.ReadLine()) != null;) + { + if (string.IsNullOrWhiteSpace(line)) + { + continue; + } + + try + { + RunApiInput input = JsonSerializer.Deserialize(line, RunFileApiJsonSerializerContext.Default.RunApiInput)!; + RunApiOutput output = input.Execute(); + Respond(output); + } + catch (Exception ex) + { + Respond(new RunApiOutput.Error { Message = ex.Message, Details = ex.ToString() }); + } + } + + return 0; + + static void Respond(RunApiOutput message) + { + string json = JsonSerializer.Serialize(message, RunFileApiJsonSerializerContext.Default.RunApiOutput); + Console.WriteLine(json); + } + } +} + +[JsonDerivedType(typeof(GetProject), nameof(GetProject))] +internal abstract class RunApiInput +{ + private RunApiInput() { } + + public abstract RunApiOutput Execute(); + + public sealed class GetProject : RunApiInput + { + public string? ArtifactsPath { get; init; } + public required string EntryPointFileFullPath { get; init; } + + public override RunApiOutput Execute() + { + var sourceFile = VirtualProjectBuildingCommand.LoadSourceFile(EntryPointFileFullPath); + var errors = ImmutableArray.CreateBuilder(); + var directives = VirtualProjectBuildingCommand.FindDirectives(sourceFile, reportAllErrors: true, errors); + string artifactsPath = ArtifactsPath ?? VirtualProjectBuildingCommand.GetArtifactsPath(EntryPointFileFullPath); + + var csprojWriter = new StringWriter(); + VirtualProjectBuildingCommand.WriteProjectFile(csprojWriter, directives, isVirtualProject: true, targetFilePath: EntryPointFileFullPath, artifactsPath: artifactsPath); + + return new RunApiOutput.Project + { + Content = csprojWriter.ToString(), + Diagnostics = errors.ToImmutableArray(), + }; + } + } +} + +[JsonDerivedType(typeof(Error), nameof(Error))] +[JsonDerivedType(typeof(Project), nameof(Project))] +internal abstract class RunApiOutput +{ + private RunApiOutput() { } + + /// + /// When the API shape or behavior changes, this should be incremented so the callers (IDEs) can act accordingly + /// (e.g., show an error message when an incompatible SDK version is being used). + /// + [JsonPropertyOrder(-1)] + public int Version { get; } = 1; + + public sealed class Error : RunApiOutput + { + public required string Message { get; init; } + public required string Details { get; init; } + } + + public sealed class Project : RunApiOutput + { + public required string Content { get; init; } + public required ImmutableArray Diagnostics { get; init; } + } +} + +[JsonSerializable(typeof(RunApiInput))] +[JsonSerializable(typeof(RunApiOutput))] +internal partial class RunFileApiJsonSerializerContext : JsonSerializerContext; diff --git a/src/sdk/src/Cli/dotnet/Commands/Run/Api/RunApiCommandParser.cs b/src/sdk/src/Cli/dotnet/Commands/Run/Api/RunApiCommandParser.cs new file mode 100644 index 00000000000..483b0b9fecf --- /dev/null +++ b/src/sdk/src/Cli/dotnet/Commands/Run/Api/RunApiCommandParser.cs @@ -0,0 +1,20 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.CommandLine; + +namespace Microsoft.DotNet.Cli.Commands.Run.Api; + +internal sealed class RunApiCommandParser +{ + public static Command GetCommand() + { + Command command = new("run-api") + { + Hidden = true, + }; + + command.SetAction((parseResult) => new RunApiCommand(parseResult).Execute()); + return command; + } +} diff --git a/src/sdk/src/Cli/dotnet/Commands/Run/CommonRunHelpers.cs b/src/sdk/src/Cli/dotnet/Commands/Run/CommonRunHelpers.cs index c082b5f88b6..bb1c5848101 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Run/CommonRunHelpers.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Run/CommonRunHelpers.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using System.Diagnostics; using Microsoft.DotNet.Cli.Utils; @@ -13,7 +11,7 @@ internal static class CommonRunHelpers /// /// Should have . /// - public static void AddUserPassedProperties(Dictionary globalProperties, string[]? args) + public static void AddUserPassedProperties(Dictionary globalProperties, string[] args) { Debug.Assert(globalProperties.Comparer == StringComparer.OrdinalIgnoreCase); @@ -36,7 +34,7 @@ public static void AddUserPassedProperties(Dictionary globalProp } } - public static Dictionary GetGlobalPropertiesFromArgs(string[]? args) + public static Dictionary GetGlobalPropertiesFromArgs(string[] args) { var globalProperties = new Dictionary(StringComparer.OrdinalIgnoreCase) { diff --git a/src/sdk/src/Cli/dotnet/Commands/Run/LaunchSettings/LaunchSettingsApplyResult.cs b/src/sdk/src/Cli/dotnet/Commands/Run/LaunchSettings/LaunchSettingsApplyResult.cs index ce47f8a1364..6290de6e3c2 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Run/LaunchSettings/LaunchSettingsApplyResult.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Run/LaunchSettings/LaunchSettingsApplyResult.cs @@ -1,15 +1,13 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - namespace Microsoft.DotNet.Cli.Commands.Run.LaunchSettings; -public class LaunchSettingsApplyResult(bool success, string? failureReason, ProjectLaunchSettingsModel launchSettings = null) +public class LaunchSettingsApplyResult(bool success, string? failureReason, ProjectLaunchSettingsModel? launchSettings = null) { public bool Success { get; } = success; - public string FailureReason { get; } = failureReason; + public string? FailureReason { get; } = failureReason; - public ProjectLaunchSettingsModel LaunchSettings { get; } = launchSettings; + public ProjectLaunchSettingsModel? LaunchSettings { get; } = launchSettings; } diff --git a/src/sdk/src/Cli/dotnet/Commands/Run/LaunchSettings/LaunchSettingsManager.cs b/src/sdk/src/Cli/dotnet/Commands/Run/LaunchSettings/LaunchSettingsManager.cs index f6d2b0c79fa..c46fee8aaa1 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Run/LaunchSettings/LaunchSettingsManager.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Run/LaunchSettings/LaunchSettingsManager.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using System.Diagnostics.CodeAnalysis; using System.Text.Json; using Microsoft.DotNet.Cli.Utils; diff --git a/src/sdk/src/Cli/dotnet/Commands/Run/LaunchSettings/ProjectLaunchSettingsProvider.cs b/src/sdk/src/Cli/dotnet/Commands/Run/LaunchSettings/ProjectLaunchSettingsProvider.cs index d9dde66ebd2..46c294f03b7 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Run/LaunchSettings/ProjectLaunchSettingsProvider.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Run/LaunchSettings/ProjectLaunchSettingsProvider.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using System.Text.Json; namespace Microsoft.DotNet.Cli.Commands.Run.LaunchSettings; diff --git a/src/sdk/src/Cli/dotnet/Commands/Run/RunCommand.cs b/src/sdk/src/Cli/dotnet/Commands/Run/RunCommand.cs index 1a9280bb068..cc0fd1b4440 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Run/RunCommand.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Run/RunCommand.cs @@ -321,7 +321,7 @@ private ICommand GetTargetCommand(Func? proj var command = CreateCommandFromRunProperties(project, runProperties); return command; - static ProjectInstance EvaluateProject(string? projectFilePath, Func? projectFactory, string[]? restoreArgs, ILogger? binaryLogger) + static ProjectInstance EvaluateProject(string? projectFilePath, Func? projectFactory, string[] restoreArgs, ILogger? binaryLogger) { Debug.Assert(projectFilePath is not null || projectFactory is not null); diff --git a/src/sdk/src/Cli/dotnet/Commands/Run/RunProperties.cs b/src/sdk/src/Cli/dotnet/Commands/Run/RunProperties.cs index da8d70263ef..29a43c0a309 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Run/RunProperties.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Run/RunProperties.cs @@ -1,14 +1,12 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using Microsoft.Build.Execution; using Microsoft.DotNet.Cli.Utils; namespace Microsoft.DotNet.Cli.Commands.Run; -internal record RunProperties(string? RunCommand, string? RunArguments, string? RunWorkingDirectory) +internal record RunProperties(string RunCommand, string? RunArguments, string? RunWorkingDirectory) { internal static RunProperties FromProjectAndApplicationArguments(ProjectInstance project, string[] applicationArgs, bool fallbackToTargetPath) { diff --git a/src/sdk/src/Cli/dotnet/Commands/Run/VirtualProjectBuildingCommand.cs b/src/sdk/src/Cli/dotnet/Commands/Run/VirtualProjectBuildingCommand.cs index 32322e9463b..c9788a46a5e 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Run/VirtualProjectBuildingCommand.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Run/VirtualProjectBuildingCommand.cs @@ -381,7 +381,7 @@ public VirtualProjectBuildingCommand PrepareProjectInstance() Debug.Assert(_directives.IsDefault, $"{nameof(PrepareProjectInstance)} should not be called multiple times."); var sourceFile = LoadSourceFile(EntryPointFileFullPath); - _directives = FindDirectives(sourceFile, reportErrors: false); + _directives = FindDirectives(sourceFile, reportAllErrors: false, errors: null); return this; } @@ -449,17 +449,12 @@ internal static string GetArtifactsPath(string entryPointFileFullPath) return Path.Join(directory, "dotnet", "runfile", directoryName); } - public static void WriteProjectFile(TextWriter writer, ImmutableArray directives) - { - WriteProjectFile(writer, directives, isVirtualProject: false, targetFilePath: null, artifactsPath: null); - } - - private static void WriteProjectFile( + public static void WriteProjectFile( TextWriter writer, ImmutableArray directives, bool isVirtualProject, - string? targetFilePath, - string? artifactsPath) + string? targetFilePath = null, + string? artifactsPath = null) { int processedDirectives = 0; @@ -523,7 +518,7 @@ private static void WriteProjectFile( processedDirectives++; } - if (processedDirectives > 1) + if (isVirtualProject || processedDirectives > 1) { writer.WriteLine(); } @@ -674,14 +669,22 @@ Override targets which don't work with project files that are not present on dis static string EscapeValue(string value) => SecurityElement.Escape(value); } - public static ImmutableArray FindDirectivesForConversion(SourceFile sourceFile, bool force) + /// + /// If , the whole is parsed to find diagnostics about every app directive. + /// Otherwise, only directives up to the first C# token is checked. + /// The former is useful for dotnet project convert where we want to report all errors because it would be difficult to fix them up after the conversion. + /// The latter is useful for dotnet run file.cs where if there are app directives after the first token, + /// compiler reports anyway, so we speed up success scenarios by not parsing the whole file up front in the SDK CLI. + /// + /// + /// If , the first error is thrown as . + /// Otherwise, all errors are put into the list. + /// Does not have any effect when is . + /// + public static ImmutableArray FindDirectives(SourceFile sourceFile, bool reportAllErrors, ImmutableArray.Builder? errors) { - return FindDirectives(sourceFile, reportErrors: !force); - } - #pragma warning disable RSEXPERIMENTAL003 // 'SyntaxTokenParser' is experimental - private static ImmutableArray FindDirectives(SourceFile sourceFile, bool reportErrors) - { + var builder = ImmutableArray.CreateBuilder(); SyntaxTokenParser tokenizer = SyntaxFactory.CreateTokenParser(sourceFile.Text, CSharpParseOptions.Default.WithFeatures([new("FileBasedProgram", "true")])); @@ -720,7 +723,11 @@ private static ImmutableArray FindDirectives(SourceFile sourceF var name = parts.MoveNext() ? message[parts.Current] : default; var value = parts.MoveNext() ? message[parts.Current] : default; Debug.Assert(!parts.MoveNext()); - builder.Add(CSharpDirective.Parse(sourceFile, span, name.ToString(), value.ToString())); + + if (CSharpDirective.Parse(errors, sourceFile, span, name.ToString(), value.ToString()) is { } directive) + { + builder.Add(directive); + } } previousWhiteSpaceSpan = default; @@ -728,7 +735,7 @@ private static ImmutableArray FindDirectives(SourceFile sourceF // In conversion mode, we want to report errors for any invalid directives in the rest of the file // so users don't end up with invalid directives in the converted project. - if (reportErrors) + if (reportAllErrors) { tokenizer.ResetTo(result); @@ -738,12 +745,12 @@ private static ImmutableArray FindDirectives(SourceFile sourceF foreach (var trivia in result.Token.LeadingTrivia) { - reportErrorFor(sourceFile, trivia); + reportErrorFor(trivia); } foreach (var trivia in result.Token.TrailingTrivia) { - reportErrorFor(sourceFile, trivia); + reportErrorFor(trivia); } } while (!result.Token.IsKind(SyntaxKind.EndOfFileToken)); @@ -758,15 +765,27 @@ static TextSpan getFullSpan(TextSpan previousWhiteSpaceSpan, SyntaxTrivia trivia return previousWhiteSpaceSpan.IsEmpty ? trivia.FullSpan : TextSpan.FromBounds(previousWhiteSpaceSpan.Start, trivia.FullSpan.End); } - static void reportErrorFor(SourceFile sourceFile, SyntaxTrivia trivia) + void reportErrorFor(SyntaxTrivia trivia) { if (trivia.ContainsDiagnostics && trivia.IsKind(SyntaxKind.IgnoredDirectiveTrivia)) { - throw new GracefulException(CliCommandStrings.CannotConvertDirective, sourceFile.GetLocationString(trivia.Span)); + string location = sourceFile.GetLocationString(trivia.Span); + if (errors != null) + { + errors.Add(new SimpleDiagnostic + { + Location = sourceFile.GetFileLinePositionSpan(trivia.Span), + Message = string.Format(CliCommandStrings.CannotConvertDirective, location), + }); + } + else + { + throw new GracefulException(CliCommandStrings.CannotConvertDirective, location); + } } } - } #pragma warning restore RSEXPERIMENTAL003 // 'SyntaxTokenParser' is experimental + } public static SourceFile LoadSourceFile(string filePath) { @@ -810,9 +829,14 @@ public static bool IsValidEntryPointPath(string entryPointFilePath) internal readonly record struct SourceFile(string Path, SourceText Text) { + public FileLinePositionSpan GetFileLinePositionSpan(TextSpan span) + { + return new FileLinePositionSpan(Path, Text.Lines.GetLinePositionSpan(span)); + } + public string GetLocationString(TextSpan span) { - var positionSpan = new FileLinePositionSpan(Path, Text.Lines.GetLinePositionSpan(span)); + var positionSpan = GetFileLinePositionSpan(span); return $"{positionSpan.Path}:{positionSpan.StartLinePosition.Line + 1}"; } } @@ -835,23 +859,42 @@ private CSharpDirective() { } /// public required TextSpan Span { get; init; } - public static CSharpDirective Parse(SourceFile sourceFile, TextSpan span, string directiveKind, string directiveText) + public static CSharpDirective? Parse(ImmutableArray.Builder? errors, SourceFile sourceFile, TextSpan span, string directiveKind, string directiveText) { return directiveKind switch { - "sdk" => Sdk.Parse(sourceFile, span, directiveKind, directiveText), - "property" => Property.Parse(sourceFile, span, directiveKind, directiveText), - "package" => Package.Parse(sourceFile, span, directiveKind, directiveText), - _ => throw new GracefulException(CliCommandStrings.UnrecognizedDirective, directiveKind, sourceFile.GetLocationString(span)), + "sdk" => Sdk.Parse(errors, sourceFile, span, directiveKind, directiveText), + "property" => Property.Parse(errors, sourceFile, span, directiveKind, directiveText), + "package" => Package.Parse(errors, sourceFile, span, directiveKind, directiveText), + _ => ReportError(errors, sourceFile, span, string.Format(CliCommandStrings.UnrecognizedDirective, directiveKind, sourceFile.GetLocationString(span))), }; } - private static (string, string?) ParseOptionalTwoParts(SourceFile sourceFile, TextSpan span, string directiveKind, string directiveText, SearchValues? separators = null) + private static T? ReportError(ImmutableArray.Builder? errors, SourceFile sourceFile, TextSpan span, string message, Exception? inner = null) + { + if (errors != null) + { + errors.Add(new SimpleDiagnostic { Location = sourceFile.GetFileLinePositionSpan(span), Message = message }); + return default; + } + else + { + throw new GracefulException(message, inner); + } + } + + private static (string, string?)? ParseOptionalTwoParts(ImmutableArray.Builder? errors, SourceFile sourceFile, TextSpan span, string directiveKind, string directiveText, SearchValues? separators = null) { var i = separators != null ? directiveText.AsSpan().IndexOfAny(separators) : directiveText.IndexOf(' ', StringComparison.Ordinal); - var firstPart = checkFirstPart(i < 0 ? directiveText : directiveText[..i]); + var firstPart = i < 0 ? directiveText : directiveText[..i]; + + if (string.IsNullOrWhiteSpace(firstPart)) + { + return ReportError<(string, string?)?>(errors, sourceFile, span, string.Format(CliCommandStrings.MissingDirectiveName, directiveKind, sourceFile.GetLocationString(span))); + } + var secondPart = i < 0 ? [] : directiveText.AsSpan((i + 1)..).TrimStart(); if (i < 0 || secondPart.IsWhiteSpace()) { @@ -859,16 +902,6 @@ private static (string, string?) ParseOptionalTwoParts(SourceFile sourceFile, Te } return (firstPart, secondPart.ToString()); - - string checkFirstPart(string firstPart) - { - if (string.IsNullOrWhiteSpace(firstPart)) - { - throw new GracefulException(CliCommandStrings.MissingDirectiveName, directiveKind, sourceFile.GetLocationString(span)); - } - - return firstPart; - } } /// @@ -886,9 +919,12 @@ private Sdk() { } public required string Name { get; init; } public string? Version { get; init; } - public static new Sdk Parse(SourceFile sourceFile, TextSpan span, string directiveKind, string directiveText) + public static new Sdk? Parse(ImmutableArray.Builder? errors, SourceFile sourceFile, TextSpan span, string directiveKind, string directiveText) { - var (sdkName, sdkVersion) = ParseOptionalTwoParts(sourceFile, span, directiveKind, directiveText); + if (ParseOptionalTwoParts(errors, sourceFile, span, directiveKind, directiveText) is not var (sdkName, sdkVersion)) + { + return null; + } return new Sdk { @@ -914,13 +950,16 @@ private Property() { } public required string Name { get; init; } public required string Value { get; init; } - public static new Property Parse(SourceFile sourceFile, TextSpan span, string directiveKind, string directiveText) + public static new Property? Parse(ImmutableArray.Builder? errors, SourceFile sourceFile, TextSpan span, string directiveKind, string directiveText) { - var (propertyName, propertyValue) = ParseOptionalTwoParts(sourceFile, span, directiveKind, directiveText); + if (ParseOptionalTwoParts(errors, sourceFile, span, directiveKind, directiveText) is not var (propertyName, propertyValue)) + { + return null; + } if (propertyValue is null) { - throw new GracefulException(CliCommandStrings.PropertyDirectiveMissingParts, sourceFile.GetLocationString(span)); + return ReportError(errors, sourceFile, span, string.Format(CliCommandStrings.PropertyDirectiveMissingParts, sourceFile.GetLocationString(span))); } try @@ -929,7 +968,7 @@ private Property() { } } catch (XmlException ex) { - throw new GracefulException(string.Format(CliCommandStrings.PropertyDirectiveInvalidName, sourceFile.GetLocationString(span), ex.Message), ex); + return ReportError(errors, sourceFile, span, string.Format(CliCommandStrings.PropertyDirectiveInvalidName, sourceFile.GetLocationString(span), ex.Message), ex); } return new Property @@ -953,9 +992,12 @@ private Package() { } public required string Name { get; init; } public string? Version { get; init; } - public static new Package Parse(SourceFile sourceFile, TextSpan span, string directiveKind, string directiveText) + public static new Package? Parse(ImmutableArray.Builder? errors, SourceFile sourceFile, TextSpan span, string directiveKind, string directiveText) { - var (packageName, packageVersion) = ParseOptionalTwoParts(sourceFile, span, directiveKind, directiveText, s_separators); + if (ParseOptionalTwoParts(errors, sourceFile, span, directiveKind, directiveText, s_separators) is not var (packageName, packageVersion)) + { + return null; + } return new Package { @@ -967,6 +1009,27 @@ private Package() { } } } +internal sealed class SimpleDiagnostic +{ + public required Position Location { get; init; } + public required string Message { get; init; } + + /// + /// An adapter of that ensures we JSON-serialize only the necessary fields. + /// + public readonly struct Position + { + public string Path { get; init; } + public LinePositionSpan Span { get; init; } + + public static implicit operator Position(FileLinePositionSpan fileLinePositionSpan) => new() + { + Path = fileLinePositionSpan.Path, + Span = fileLinePositionSpan.Span, + }; + } +} + internal sealed class RunFileBuildCacheEntry { private static StringComparer GlobalPropertiesComparer => StringComparer.OrdinalIgnoreCase; diff --git a/src/sdk/src/Cli/dotnet/Commands/Sdk/Check/RuntimeOutputWriter.cs b/src/sdk/src/Cli/dotnet/Commands/Sdk/Check/RuntimeOutputWriter.cs index b13e0910351..0746c9ada5e 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Sdk/Check/RuntimeOutputWriter.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Sdk/Check/RuntimeOutputWriter.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using Microsoft.Deployment.DotNet.Releases; using Microsoft.DotNet.Cli.Utils; using Microsoft.DotNet.NativeWrapper; diff --git a/src/sdk/src/Cli/dotnet/Commands/Sdk/Check/SdkOutputWriter.cs b/src/sdk/src/Cli/dotnet/Commands/Sdk/Check/SdkOutputWriter.cs index f8f145e3bea..ce7d7c9df8e 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Sdk/Check/SdkOutputWriter.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Sdk/Check/SdkOutputWriter.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using Microsoft.Deployment.DotNet.Releases; using Microsoft.DotNet.Cli.Utils; using Microsoft.DotNet.NativeWrapper; diff --git a/src/sdk/src/Cli/dotnet/Commands/Solution/Add/SolutionAddCommand.cs b/src/sdk/src/Cli/dotnet/Commands/Solution/Add/SolutionAddCommand.cs index 5cf0b3817fd..338271e6c8c 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Solution/Add/SolutionAddCommand.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Solution/Add/SolutionAddCommand.cs @@ -1,9 +1,8 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using System.CommandLine; +using System.Diagnostics; using Microsoft.Build.Construction; using Microsoft.Build.Exceptions; using Microsoft.Build.Execution; @@ -40,7 +39,7 @@ private static bool IsSolutionFolderPathInDirectoryScope(string relativePath) public SolutionAddCommand(ParseResult parseResult) : base(parseResult) { - _fileOrDirectory = parseResult.GetValue(SolutionCommandParser.SlnArgument); + _fileOrDirectory = parseResult.GetValue(SolutionCommandParser.SlnArgument)!; _projects = (IReadOnlyCollection)(parseResult.GetValue(SolutionAddCommandParser.ProjectPathArgument) ?? []); _inRoot = parseResult.GetValue(SolutionAddCommandParser.InRootOption); _solutionFolderPath = parseResult.GetValue(SolutionAddCommandParser.SolutionFolderOption); @@ -77,12 +76,13 @@ public override int Execute() return null; } - string relativeSolutionFolderPath = string.Empty; + string? relativeSolutionFolderPath = string.Empty; if (string.IsNullOrEmpty(_solutionFolderPath)) { // Generate the solution folder path based on the project path relativeSolutionFolderPath = Path.GetDirectoryName(relativeProjectPath); + Debug.Assert(relativeSolutionFolderPath is not null); // If the project is in a folder with the same name as the project, we need to go up one level if (relativeSolutionFolderPath.Split(Path.DirectorySeparatorChar).LastOrDefault() == Path.GetFileNameWithoutExtension(relativeProjectPath)) @@ -110,6 +110,7 @@ public override int Execute() private async Task AddProjectsToSolutionAsync(IEnumerable projectPaths, CancellationToken cancellationToken) { SolutionModel solution = SlnFileFactory.CreateFromFileOrDirectory(_solutionFileFullPath); + Debug.Assert(solution.SerializerExtension is not null); ISolutionSerializer serializer = solution.SerializerExtension.Serializer; // set UTF8 BOM encoding for .sln @@ -140,9 +141,9 @@ private async Task AddProjectsToSolutionAsync(IEnumerable projectPaths, await serializer.SaveAsync(_solutionFileFullPath, solution, cancellationToken); } - private void AddProject(SolutionModel solution, string fullProjectPath, ISolutionSerializer serializer = null, bool showMessageOnDuplicate = true) + private void AddProject(SolutionModel solution, string fullProjectPath, ISolutionSerializer? serializer = null, bool showMessageOnDuplicate = true) { - string solutionRelativeProjectPath = Path.GetRelativePath(Path.GetDirectoryName(_solutionFileFullPath), fullProjectPath); + string solutionRelativeProjectPath = Path.GetRelativePath(Path.GetDirectoryName(_solutionFileFullPath)!, fullProjectPath); // Open project instance to see if it is a valid project ProjectRootElement projectRootElement; @@ -198,14 +199,14 @@ private void AddProject(SolutionModel solution, string fullProjectPath, ISolutio foreach (var solutionPlatform in solution.Platforms) { var projectPlatform = projectInstancePlatforms.FirstOrDefault( - platform => platform.Replace(" ", string.Empty) == solutionPlatform.Replace(" ", string.Empty), projectInstancePlatforms.FirstOrDefault()); + platform => platform.Replace(" ", string.Empty) == solutionPlatform.Replace(" ", string.Empty), projectInstancePlatforms.FirstOrDefault()!); project.AddProjectConfigurationRule(new ConfigurationRule(BuildDimension.Platform, "*", solutionPlatform, projectPlatform)); } foreach (var solutionBuildType in solution.BuildTypes) { var projectBuildType = projectInstanceBuildTypes.FirstOrDefault( - buildType => buildType.Replace(" ", string.Empty) == solutionBuildType.Replace(" ", string.Empty), projectInstanceBuildTypes.FirstOrDefault()); + buildType => buildType.Replace(" ", string.Empty) == solutionBuildType.Replace(" ", string.Empty), projectInstanceBuildTypes.FirstOrDefault()!); project.AddProjectConfigurationRule(new ConfigurationRule(BuildDimension.BuildType, solutionBuildType, "*", projectBuildType)); } @@ -213,7 +214,7 @@ private void AddProject(SolutionModel solution, string fullProjectPath, ISolutio // Get referencedprojects from the project instance var referencedProjectsFullPaths = projectInstance.GetItems("ProjectReference") - .Select(item => Path.GetFullPath(item.EvaluatedInclude, Path.GetDirectoryName(fullProjectPath))); + .Select(item => Path.GetFullPath(item.EvaluatedInclude, Path.GetDirectoryName(fullProjectPath)!)); if (_includeReferences) { diff --git a/src/sdk/src/Cli/dotnet/Commands/Test/IPC/Models/FileArtifactMessages.cs b/src/sdk/src/Cli/dotnet/Commands/Test/IPC/Models/FileArtifactMessages.cs index 61df3de2efa..ddd025fa5aa 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Test/IPC/Models/FileArtifactMessages.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Test/IPC/Models/FileArtifactMessages.cs @@ -5,4 +5,4 @@ namespace Microsoft.DotNet.Cli.Commands.Test.IPC.Models; internal sealed record FileArtifactMessage(string? FullPath, string? DisplayName, string? Description, string? TestUid, string? TestDisplayName, string? SessionUid); -internal sealed record FileArtifactMessages(string? ExecutionId, string InstanceId, FileArtifactMessage[] FileArtifacts) : IRequest; +internal sealed record FileArtifactMessages(string? ExecutionId, string? InstanceId, FileArtifactMessage[] FileArtifacts) : IRequest; diff --git a/src/sdk/src/Cli/dotnet/Commands/Test/IPC/Serializers/BaseSerializer.cs b/src/sdk/src/Cli/dotnet/Commands/Test/IPC/Serializers/BaseSerializer.cs index 24e6da1f574..a0e285c056d 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Test/IPC/Serializers/BaseSerializer.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Test/IPC/Serializers/BaseSerializer.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - #if NETCOREAPP using System.Buffers; #endif diff --git a/src/sdk/src/Cli/dotnet/Commands/Test/IPC/Serializers/CommandLineOptionMessagesSerializer.cs b/src/sdk/src/Cli/dotnet/Commands/Test/IPC/Serializers/CommandLineOptionMessagesSerializer.cs index 2836390d3a2..7585eed44ad 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Test/IPC/Serializers/CommandLineOptionMessagesSerializer.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Test/IPC/Serializers/CommandLineOptionMessagesSerializer.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - #if NETCOREAPP #endif diff --git a/src/sdk/src/Cli/dotnet/Commands/Test/IPC/Serializers/DiscoveredTestMessagesSerializer.cs b/src/sdk/src/Cli/dotnet/Commands/Test/IPC/Serializers/DiscoveredTestMessagesSerializer.cs index 741a60a2e1d..0806d2e5b08 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Test/IPC/Serializers/DiscoveredTestMessagesSerializer.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Test/IPC/Serializers/DiscoveredTestMessagesSerializer.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - #if NETCOREAPP #endif diff --git a/src/sdk/src/Cli/dotnet/Commands/Test/IPC/Serializers/FileArtifactMessagesSerializer.cs b/src/sdk/src/Cli/dotnet/Commands/Test/IPC/Serializers/FileArtifactMessagesSerializer.cs index 449ae2688df..20d92deeda8 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Test/IPC/Serializers/FileArtifactMessagesSerializer.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Test/IPC/Serializers/FileArtifactMessagesSerializer.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - #if NETCOREAPP #endif diff --git a/src/sdk/src/Cli/dotnet/Commands/Test/IPC/Serializers/TestResultMessagesSerializer.cs b/src/sdk/src/Cli/dotnet/Commands/Test/IPC/Serializers/TestResultMessagesSerializer.cs index a352e2ca947..5250e0ace12 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Test/IPC/Serializers/TestResultMessagesSerializer.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Test/IPC/Serializers/TestResultMessagesSerializer.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using System.Diagnostics; using Microsoft.DotNet.Cli.Commands.Test.IPC.Models; diff --git a/src/sdk/src/Cli/dotnet/Commands/Test/MSBuildUtility.cs b/src/sdk/src/Cli/dotnet/Commands/Test/MSBuildUtility.cs index 2e88b059905..ee5b4db9900 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Test/MSBuildUtility.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Test/MSBuildUtility.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using System.Collections.Concurrent; using System.CommandLine; using Microsoft.Build.Evaluation; @@ -31,7 +29,7 @@ public static (IEnumerable !module.IsTestingPlatformApplication).ToArray(); } + Debug.Assert(Module is not null); if (!Module.IsTestingPlatformApplication) { return [Module]; @@ -86,6 +86,7 @@ public TestModule Current throw new InvalidOperationException(); } + Debug.Assert(_group.Module is not null); return _group.Module; } } @@ -114,7 +115,7 @@ internal sealed record TestModule(RunProperties RunProperties, string? ProjectFu internal sealed record Handshake(Dictionary? Properties); -internal sealed record CommandLineOption(string? Name, string? Description, bool? IsHidden, bool? IsBuiltIn); +internal sealed record CommandLineOption(string Name, string Description, bool? IsHidden, bool? IsBuiltIn); internal sealed record DiscoveredTest(string? Uid, string? DisplayName); diff --git a/src/sdk/src/Cli/dotnet/Commands/Test/SolutionAndProjectUtility.cs b/src/sdk/src/Cli/dotnet/Commands/Test/SolutionAndProjectUtility.cs index 8dd36ea6aba..27f21b7a2ba 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Test/SolutionAndProjectUtility.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Test/SolutionAndProjectUtility.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using System.Diagnostics; using Microsoft.Build.Evaluation; using Microsoft.Build.Execution; @@ -144,7 +142,8 @@ private static ProjectInstance EvaluateProject(ProjectCollection collection, str public static string GetRootDirectory(string solutionOrProjectFilePath) { - string fileDirectory = Path.GetDirectoryName(solutionOrProjectFilePath); + string? fileDirectory = Path.GetDirectoryName(solutionOrProjectFilePath); + Debug.Assert(fileDirectory is not null); return string.IsNullOrEmpty(fileDirectory) ? Directory.GetCurrentDirectory() : fileDirectory; } @@ -234,7 +233,7 @@ public static IEnumerable diff --git a/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/AnsiDetector.cs b/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/AnsiDetector.cs index db3835f3824..9d44e5cc204 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/AnsiDetector.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/AnsiDetector.cs @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -#nullable disable warnings - // Portions of the code in this file were ported from the spectre.console by Patrik Svensson, Phil Scott, Nils Andresen // https://github.com/spectreconsole/spectre.console/blob/main/src/Spectre.Console/Internal/Backends/Ansi/AnsiDetector.cs // and from the supports-ansi project by Qingrong Ke diff --git a/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/AnsiTerminal.cs b/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/AnsiTerminal.cs index 4f900668765..54766b7a15a 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/AnsiTerminal.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/AnsiTerminal.cs @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -#nullable disable warnings - using System.Globalization; namespace Microsoft.DotNet.Cli.Commands.Test.Terminal; diff --git a/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/AnsiTerminalTestProgressFrame.cs b/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/AnsiTerminalTestProgressFrame.cs index c7312dd7b1c..f8ccc9385c3 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/AnsiTerminalTestProgressFrame.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/AnsiTerminalTestProgressFrame.cs @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -#nullable disable warnings - using System.Globalization; namespace Microsoft.DotNet.Cli.Commands.Test.Terminal; diff --git a/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/ExceptionFlattener.cs b/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/ExceptionFlattener.cs index 0ff70e15ca0..8797a590f34 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/ExceptionFlattener.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/ExceptionFlattener.cs @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -#nullable disable warnings - namespace Microsoft.DotNet.Cli.Commands.Test.Terminal; internal sealed class ExceptionFlattener @@ -27,7 +25,7 @@ internal static FlatException[] Flatten(string? errorMessage, Exception? excepti IEnumerable aggregateExceptions = exception switch { AggregateException aggregate => aggregate.Flatten().InnerExceptions, - _ => [exception?.InnerException], + _ => [exception?.InnerException!], }; foreach (Exception? aggregate in aggregateExceptions) diff --git a/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/NonAnsiTerminal.cs b/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/NonAnsiTerminal.cs index e1605eed413..bb05ca78070 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/NonAnsiTerminal.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/NonAnsiTerminal.cs @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -#nullable disable warnings - using System.Globalization; namespace Microsoft.DotNet.Cli.Commands.Test.Terminal; diff --git a/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/SystemConsole.cs b/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/SystemConsole.cs index c945f86b819..5ed9064cb00 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/SystemConsole.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/SystemConsole.cs @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -#nullable disable warnings - namespace Microsoft.DotNet.Cli.Commands.Test.Terminal; internal sealed class SystemConsole : IConsole diff --git a/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/TargetFrameworkParser.cs b/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/TargetFrameworkParser.cs index 3d740220273..8ca9aea7533 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/TargetFrameworkParser.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/TargetFrameworkParser.cs @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -#nullable disable warnings - using System.Globalization; namespace Microsoft.DotNet.Cli.Commands.Test.Terminal; diff --git a/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/TerminalTestReporter.cs b/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/TerminalTestReporter.cs index 4ee79cb1675..260f9f41cef 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/TerminalTestReporter.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/TerminalTestReporter.cs @@ -1,9 +1,8 @@ // Licensed under the MIT license. See LICENSE file in the project root for full license information. -#nullable disable warnings - using System.Collections.Concurrent; using System.CommandLine.Help; +using System.Diagnostics; using System.Globalization; using System.Text.RegularExpressions; using Microsoft.CodeAnalysis; diff --git a/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/TerminalTestReporterOptions.cs b/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/TerminalTestReporterOptions.cs index cf03e861276..11733be7afb 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/TerminalTestReporterOptions.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/TerminalTestReporterOptions.cs @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -#nullable disable warnings - namespace Microsoft.DotNet.Cli.Commands.Test.Terminal; internal sealed class TerminalTestReporterOptions diff --git a/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/TestNodeResultsState.cs b/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/TestNodeResultsState.cs index cb8ae0d93c4..bb38a19e563 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/TestNodeResultsState.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/TestNodeResultsState.cs @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -#nullable disable warnings - using System.Collections.Concurrent; using System.Globalization; diff --git a/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/TestProgressState.cs b/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/TestProgressState.cs index 0c31239a94e..f39148d4872 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/TestProgressState.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/TestProgressState.cs @@ -126,7 +126,7 @@ public void ReportFailedTest(string testNodeUid, string instanceId) FailedTests++; } - public void DiscoverTest(string displayName, string uid) + public void DiscoverTest(string? displayName, string? uid) { PassedTests++; DiscoveredTests.Add(new(displayName, uid)); diff --git a/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/TestProgressStateAwareTerminal.cs b/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/TestProgressStateAwareTerminal.cs index 568252c9523..0343f8d9f4b 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/TestProgressStateAwareTerminal.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Test/Terminal/TestProgressStateAwareTerminal.cs @@ -1,8 +1,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. -#nullable disable warnings - namespace Microsoft.DotNet.Cli.Commands.Test.Terminal; /// diff --git a/src/sdk/src/Cli/dotnet/Commands/Test/TestCommandParser.cs b/src/sdk/src/Cli/dotnet/Commands/Test/TestCommandParser.cs index 3fb8b2b1589..62187f5639b 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Test/TestCommandParser.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Test/TestCommandParser.cs @@ -1,9 +1,8 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using System.CommandLine; +using System.Diagnostics; using Microsoft.DotNet.Cli.Extensions; using Microsoft.Extensions.Configuration; @@ -29,13 +28,13 @@ internal static class TestCommandParser { Description = CliCommandStrings.CmdTestCaseFilterDescription, HelpName = CliCommandStrings.CmdTestCaseFilterExpression - }.ForwardAsSingle(o => $"-property:VSTestTestCaseFilter={SurroundWithDoubleQuotes(o)}"); + }.ForwardAsSingle(o => $"-property:VSTestTestCaseFilter={SurroundWithDoubleQuotes(o!)}"); public static readonly Option> AdapterOption = new ForwardedOption>("--test-adapter-path") { Description = CliCommandStrings.CmdTestAdapterPathDescription, HelpName = CliCommandStrings.CmdTestAdapterPath - }.ForwardAsSingle(o => $"-property:VSTestTestAdapterPath={SurroundWithDoubleQuotes(string.Join(";", o.Select(CommandDirectoryContext.GetFullPath)))}") + }.ForwardAsSingle(o => $"-property:VSTestTestAdapterPath={SurroundWithDoubleQuotes(string.Join(";", o!.Select(CommandDirectoryContext.GetFullPath)))}") .AllowSingleArgPerToken(); public static readonly Option> LoggerOption = new ForwardedOption>("--logger", "-l") @@ -44,7 +43,7 @@ internal static class TestCommandParser HelpName = CliCommandStrings.CmdLoggerOption }.ForwardAsSingle(o => { - var loggersString = string.Join(";", GetSemiColonEscapedArgs(o)); + var loggersString = string.Join(";", GetSemiColonEscapedArgs(o!)); return $"-property:VSTestLogger={SurroundWithDoubleQuotes(loggersString)}"; }) @@ -80,7 +79,7 @@ internal static class TestCommandParser { Description = CliCommandStrings.cmdCollectDescription, HelpName = CliCommandStrings.cmdCollectFriendlyName - }.ForwardAsSingle(o => $"-property:VSTestCollect=\"{string.Join(";", GetSemiColonEscapedArgs(o))}\"") + }.ForwardAsSingle(o => $"-property:VSTestCollect=\"{string.Join(";", GetSemiColonEscapedArgs(o!))}\"") .AllowSingleArgPerToken(); public static readonly Option BlameOption = new ForwardedOption("--blame") @@ -164,7 +163,8 @@ public static string GetTestRunnerName() { var builder = new ConfigurationBuilder(); - string dotnetConfigPath = GetDotnetConfigPath(Environment.CurrentDirectory); + string? dotnetConfigPath = GetDotnetConfigPath(Environment.CurrentDirectory); + Debug.Assert(dotnetConfigPath is not null); if (!File.Exists(dotnetConfigPath)) { @@ -181,7 +181,7 @@ public static string GetTestRunnerName() return CliConstants.VSTest; } - string runnerNameSection = testSection["name"]; + string? runnerNameSection = testSection["name"]; if (string.IsNullOrEmpty(runnerNameSection)) { diff --git a/src/sdk/src/Cli/dotnet/Commands/Tool/Install/ToolInstallCommandParser.cs b/src/sdk/src/Cli/dotnet/Commands/Tool/Install/ToolInstallCommandParser.cs index da55163d75c..8ce76001466 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Tool/Install/ToolInstallCommandParser.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Tool/Install/ToolInstallCommandParser.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using System.CommandLine; using System.CommandLine.Parsing; using Microsoft.DotNet.Cli.Commands.Tool.Common; diff --git a/src/sdk/src/Cli/dotnet/Commands/Tool/Update/ToolUpdateCommandParser.cs b/src/sdk/src/Cli/dotnet/Commands/Tool/Update/ToolUpdateCommandParser.cs index 1c3bbd9cf0e..3d8ebee80bb 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Tool/Update/ToolUpdateCommandParser.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Tool/Update/ToolUpdateCommandParser.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using System.CommandLine; using Microsoft.DotNet.Cli.Commands.Tool.Common; using Microsoft.DotNet.Cli.Commands.Tool.Install; diff --git a/src/sdk/src/Cli/dotnet/Commands/Workload/Clean/WorkloadCleanCommand.cs b/src/sdk/src/Cli/dotnet/Commands/Workload/Clean/WorkloadCleanCommand.cs index 2b4382d4791..87200182a92 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Workload/Clean/WorkloadCleanCommand.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Workload/Clean/WorkloadCleanCommand.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using System.CommandLine; using Microsoft.Deployment.DotNet.Releases; using Microsoft.DotNet.Cli.Commands.Workload.Install; diff --git a/src/sdk/src/Cli/dotnet/Commands/Workload/Config/WorkloadConfigCommand.cs b/src/sdk/src/Cli/dotnet/Commands/Workload/Config/WorkloadConfigCommand.cs index edf4afb7a92..cecb9dfa8c6 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Workload/Config/WorkloadConfigCommand.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Workload/Config/WorkloadConfigCommand.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using System.CommandLine; using Microsoft.Deployment.DotNet.Releases; using Microsoft.DotNet.Cli.Commands.Workload.Install; @@ -55,7 +53,7 @@ public override int Execute() // It seems that the parser doesn't give us a good way to do that, however if (_hasUpdateMode) { - string globalJsonPath = SdkDirectoryWorkloadManifestProvider.GetGlobalJsonPath(Environment.CurrentDirectory); + string? globalJsonPath = SdkDirectoryWorkloadManifestProvider.GetGlobalJsonPath(Environment.CurrentDirectory); var globalJsonVersion = SdkDirectoryWorkloadManifestProvider.GlobalJsonReader.GetWorkloadVersionFromGlobalJson(globalJsonPath, out bool? shouldUseWorkloadSets); shouldUseWorkloadSets ??= string.IsNullOrWhiteSpace(globalJsonVersion) ? null : true; if (WorkloadConfigCommandParser.UpdateMode_WorkloadSet.Equals(_updateMode, StringComparison.InvariantCultureIgnoreCase)) diff --git a/src/sdk/src/Cli/dotnet/Commands/Workload/Install/NullReporter.cs b/src/sdk/src/Cli/dotnet/Commands/Workload/Install/NullReporter.cs index c5a386e3e7c..88f6316946d 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Workload/Install/NullReporter.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Workload/Install/NullReporter.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using Microsoft.DotNet.Cli.Utils; namespace Microsoft.DotNet.Cli.Commands.Workload.Install; diff --git a/src/sdk/src/Cli/dotnet/Commands/Workload/WorkloadCommandBase.cs b/src/sdk/src/Cli/dotnet/Commands/Workload/WorkloadCommandBase.cs index 3dc214daa26..e0acdc0648b 100644 --- a/src/sdk/src/Cli/dotnet/Commands/Workload/WorkloadCommandBase.cs +++ b/src/sdk/src/Cli/dotnet/Commands/Workload/WorkloadCommandBase.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using System.CommandLine; using Microsoft.DotNet.Cli.Commands.Workload.Install; using Microsoft.DotNet.Cli.Extensions; @@ -87,10 +85,10 @@ protected bool VerifySignatures /// The package downloader to use for acquiring NuGet packages. public WorkloadCommandBase( ParseResult parseResult, - Option verbosityOptions = null, + Option? verbosityOptions = null, IReporter? reporter = null, - string tempDirPath = null, - INuGetPackageDownloader nugetPackageDownloader = null) : base(parseResult) + string? tempDirPath = null, + INuGetPackageDownloader? nugetPackageDownloader = null) : base(parseResult) { VerifySignatures = ShouldVerifySignatures(parseResult); @@ -107,20 +105,29 @@ public WorkloadCommandBase( TempDirectoryPath = !string.IsNullOrWhiteSpace(tempDirPath) ? tempDirPath : !string.IsNullOrWhiteSpace(parseResult.GetValue(WorkloadInstallCommandParser.TempDirOption)) - ? parseResult.GetValue(WorkloadInstallCommandParser.TempDirOption) + ? parseResult.GetValue(WorkloadInstallCommandParser.TempDirOption)! : PathUtilities.CreateTempSubdirectory(); TempPackagesDirectory = new DirectoryPath(Path.Combine(TempDirectoryPath, "dotnet-sdk-advertising-temp")); - IsPackageDownloaderProvided = nugetPackageDownloader != null; - PackageDownloader = IsPackageDownloaderProvided ? nugetPackageDownloader : new NuGetPackageDownloader.NuGetPackageDownloader(TempPackagesDirectory, - filePermissionSetter: null, - new FirstPartyNuGetPackageSigningVerifier(), - nugetLogger, - Reporter, - restoreActionConfig: RestoreActionConfiguration, - verifySignatures: VerifySignatures, - shouldUsePackageSourceMapping: true); + if (nugetPackageDownloader is not null) + { + IsPackageDownloaderProvided = true; + PackageDownloader = nugetPackageDownloader; + } + else + { + IsPackageDownloaderProvided = false; + PackageDownloader = new NuGetPackageDownloader.NuGetPackageDownloader( + TempPackagesDirectory, + filePermissionSetter: null, + new FirstPartyNuGetPackageSigningVerifier(), + nugetLogger, + Reporter, + restoreActionConfig: RestoreActionConfiguration, + verifySignatures: VerifySignatures, + shouldUsePackageSourceMapping: true); + } } /// diff --git a/src/sdk/src/Cli/dotnet/CommonArguments.cs b/src/sdk/src/Cli/dotnet/CommonArguments.cs index b76c05e73ff..ceaddfd7a89 100644 --- a/src/sdk/src/Cli/dotnet/CommonArguments.cs +++ b/src/sdk/src/Cli/dotnet/CommonArguments.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using System.CommandLine; using System.CommandLine.Parsing; using Microsoft.DotNet.Cli.Utils; @@ -22,7 +20,7 @@ internal class CommonArguments Arity = requireArgument ? ArgumentArity.ExactlyOne : ArgumentArity.ZeroOrOne, }; - private static PackageIdentity? ParsePackageIdentityWithVersionSeparator(string packageIdentity, char versionSeparator = '@') + private static PackageIdentity? ParsePackageIdentityWithVersionSeparator(string? packageIdentity, char versionSeparator = '@') { if (string.IsNullOrEmpty(packageIdentity)) { diff --git a/src/sdk/src/Cli/dotnet/CommonOptions.cs b/src/sdk/src/Cli/dotnet/CommonOptions.cs index 3f2c60d5f4c..305556028e0 100644 --- a/src/sdk/src/Cli/dotnet/CommonOptions.cs +++ b/src/sdk/src/Cli/dotnet/CommonOptions.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using System.CommandLine; using System.CommandLine.Completions; using System.CommandLine.Parsing; @@ -69,14 +67,14 @@ public static IEnumerable RuntimeArgFunc(string rid) new DynamicForwardedOption("--runtime", "-r") { HelpName = RuntimeArgName - }.ForwardAsMany(RuntimeArgFunc) + }.ForwardAsMany(RuntimeArgFunc!) .AddCompletions(CliCompletion.RunTimesFromProjectFile); public static Option LongFormRuntimeOption = new DynamicForwardedOption("--runtime") { HelpName = RuntimeArgName - }.ForwardAsMany(RuntimeArgFunc) + }.ForwardAsMany(RuntimeArgFunc!) .AddCompletions(CliCompletion.RunTimesFromProjectFile); public static Option CurrentRuntimeOption(string description) => @@ -162,7 +160,7 @@ public static ForwardedOption InteractiveOption(bool acceptArgument = fals HelpName = CliStrings.ArchArgumentName }.SetForwardingFunction(ResolveArchOptionToRuntimeIdentifier); - internal static string ArchOptionValue(ParseResult parseResult) => + internal static string? ArchOptionValue(ParseResult parseResult) => string.IsNullOrEmpty(parseResult.GetValue(ArchitectureOption)) ? parseResult.GetValue(LongFormArchitectureOption) : parseResult.GetValue(ArchitectureOption); @@ -254,7 +252,7 @@ public static void ValidateSelfContainedOptions(bool hasSelfContainedOption, boo } } - internal static IEnumerable ResolveArchOptionToRuntimeIdentifier(string arg, ParseResult parseResult) + internal static IEnumerable ResolveArchOptionToRuntimeIdentifier(string? arg, ParseResult parseResult) { if ((parseResult.GetResult(RuntimeOption) ?? parseResult.GetResult(LongFormRuntimeOption)) is not null) { @@ -270,7 +268,7 @@ internal static IEnumerable ResolveArchOptionToRuntimeIdentifier(string return ResolveRidShorthandOptions(null, arg); } - internal static IEnumerable ResolveOsOptionToRuntimeIdentifier(string arg, ParseResult parseResult) + internal static IEnumerable ResolveOsOptionToRuntimeIdentifier(string? arg, ParseResult parseResult) { if ((parseResult.GetResult(RuntimeOption) ?? parseResult.GetResult(LongFormRuntimeOption)) is not null) { @@ -281,10 +279,10 @@ internal static IEnumerable ResolveOsOptionToRuntimeIdentifier(string ar return ResolveRidShorthandOptions(arg, arch); } - private static IEnumerable ResolveRidShorthandOptions(string os, string arch) => + private static IEnumerable ResolveRidShorthandOptions(string? os, string? arch) => [$"-property:RuntimeIdentifier={ResolveRidShorthandOptionsToRuntimeIdentifier(os, arch)}"]; - internal static string ResolveRidShorthandOptionsToRuntimeIdentifier(string os, string arch) + internal static string ResolveRidShorthandOptionsToRuntimeIdentifier(string? os, string? arch) { var currentRid = GetCurrentRuntimeId(); arch = arch == "amd64" ? "x64" : arch; @@ -296,15 +294,17 @@ internal static string ResolveRidShorthandOptionsToRuntimeIdentifier(string os, public static string GetCurrentRuntimeId() { // Get the dotnet directory, while ignoring custom msbuild resolvers - string dotnetRootPath = NativeWrapper.EnvironmentProvider.GetDotnetExeDirectory(key => + string? dotnetRootPath = NativeWrapper.EnvironmentProvider.GetDotnetExeDirectory(key => key.Equals("DOTNET_MSBUILD_SDK_RESOLVER_CLI_DIR", StringComparison.InvariantCultureIgnoreCase) ? null : Environment.GetEnvironmentVariable(key)); var ridFileName = "NETCoreSdkRuntimeIdentifierChain.txt"; + var sdkPath = dotnetRootPath is not null ? Path.Combine(dotnetRootPath, "sdk") : "sdk"; + // When running under test the Product.Version might be empty or point to version not installed in dotnetRootPath. - string runtimeIdentifierChainPath = string.IsNullOrEmpty(Product.Version) || !Directory.Exists(Path.Combine(dotnetRootPath, "sdk", Product.Version)) ? - Path.Combine(Directory.GetDirectories(Path.Combine(dotnetRootPath, "sdk"))[0], ridFileName) : - Path.Combine(dotnetRootPath, "sdk", Product.Version, ridFileName); + string runtimeIdentifierChainPath = string.IsNullOrEmpty(Product.Version) || !Directory.Exists(Path.Combine(sdkPath, Product.Version)) ? + Path.Combine(Directory.GetDirectories(sdkPath)[0], ridFileName) : + Path.Combine(sdkPath, Product.Version, ridFileName); string[] currentRuntimeIdentifiers = File.Exists(runtimeIdentifierChainPath) ? [.. File.ReadAllLines(runtimeIdentifierChainPath).Where(l => !string.IsNullOrEmpty(l))] : []; if (currentRuntimeIdentifiers == null || !currentRuntimeIdentifiers.Any() || !currentRuntimeIdentifiers[0].Contains("-")) { diff --git a/src/sdk/src/Cli/dotnet/Extensions/ProjectInstanceExtensions.cs b/src/sdk/src/Cli/dotnet/Extensions/ProjectInstanceExtensions.cs index 8d9ab9c0923..74900792395 100644 --- a/src/sdk/src/Cli/dotnet/Extensions/ProjectInstanceExtensions.cs +++ b/src/sdk/src/Cli/dotnet/Extensions/ProjectInstanceExtensions.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable - using Microsoft.Build.Execution; namespace Microsoft.DotNet.Cli.Extensions; diff --git a/src/sdk/src/Cli/dotnet/LoggerUtility.cs b/src/sdk/src/Cli/dotnet/LoggerUtility.cs index 20a52dbfe28..4287f79390f 100644 --- a/src/sdk/src/Cli/dotnet/LoggerUtility.cs +++ b/src/sdk/src/Cli/dotnet/LoggerUtility.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using Microsoft.Build.Framework; using Microsoft.Build.Logging; diff --git a/src/sdk/src/Cli/dotnet/NuGetSignatureVerificationEnabler.cs b/src/sdk/src/Cli/dotnet/NuGetSignatureVerificationEnabler.cs index afab6322025..dcf54e505a9 100644 --- a/src/sdk/src/Cli/dotnet/NuGetSignatureVerificationEnabler.cs +++ b/src/sdk/src/Cli/dotnet/NuGetSignatureVerificationEnabler.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using Microsoft.DotNet.Cli.Commands.MSBuild; using Microsoft.DotNet.Cli.Utils; diff --git a/src/sdk/src/Cli/dotnet/Parser.cs b/src/sdk/src/Cli/dotnet/Parser.cs index 39ca4d7fd02..3ce2e132ad2 100644 --- a/src/sdk/src/Cli/dotnet/Parser.cs +++ b/src/sdk/src/Cli/dotnet/Parser.cs @@ -32,6 +32,7 @@ using Microsoft.DotNet.Cli.Commands.Reference; using Microsoft.DotNet.Cli.Commands.Restore; using Microsoft.DotNet.Cli.Commands.Run; +using Microsoft.DotNet.Cli.Commands.Run.Api; using Microsoft.DotNet.Cli.Commands.Sdk; using Microsoft.DotNet.Cli.Commands.Solution; using Microsoft.DotNet.Cli.Commands.Store; @@ -80,6 +81,7 @@ public static class Parser RemoveCommandParser.GetCommand(), RestoreCommandParser.GetCommand(), RunCommandParser.GetCommand(), + RunApiCommandParser.GetCommand(), SolutionCommandParser.GetCommand(), StoreCommandParser.GetCommand(), TestCommandParser.GetCommand(), diff --git a/src/sdk/src/Cli/dotnet/ReleasePropertyProjectLocator.cs b/src/sdk/src/Cli/dotnet/ReleasePropertyProjectLocator.cs index b5f0f642425..949ee5b0f34 100644 --- a/src/sdk/src/Cli/dotnet/ReleasePropertyProjectLocator.cs +++ b/src/sdk/src/Cli/dotnet/ReleasePropertyProjectLocator.cs @@ -1,8 +1,6 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings - using System.CommandLine; using System.Diagnostics; using Microsoft.Build.Execution; diff --git a/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/GetPackagesToPrune.cs b/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/GetPackagesToPrune.cs index b8cac604ce1..bd0cd0107fa 100644 --- a/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/GetPackagesToPrune.cs +++ b/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/GetPackagesToPrune.cs @@ -1,7 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings +#nullable disable using Microsoft.Build.Framework; using Microsoft.Build.Utilities; @@ -44,7 +44,7 @@ class CacheKey public string TargetFrameworkVersion { get; set; } public HashSet FrameworkReferences { get; set; } - public override bool Equals(object? obj) => obj is CacheKey key && + public override bool Equals(object obj) => obj is CacheKey key && TargetFrameworkIdentifier == key.TargetFrameworkIdentifier && TargetFrameworkVersion == key.TargetFrameworkVersion && FrameworkReferences.SetEquals(key.FrameworkReferences); diff --git a/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/ProcessFrameworkReferences.cs b/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/ProcessFrameworkReferences.cs index d13a00100e2..84f1ba2143f 100644 --- a/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/ProcessFrameworkReferences.cs +++ b/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/ProcessFrameworkReferences.cs @@ -1,7 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings +#nullable disable using Microsoft.Build.Framework; using Microsoft.Build.Utilities; @@ -787,7 +787,7 @@ private ToolPackSupport AddToolPack( packVersion = RuntimeFrameworkVersion; } - TaskItem? runtimePackToDownload = null; + TaskItem runtimePackToDownload = null; // Crossgen and ILCompiler have RID-specific bits. if (toolPackType is ToolPackType.Crossgen2 or ToolPackType.ILCompiler) diff --git a/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/ResolvePackageAssets.cs b/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/ResolvePackageAssets.cs index c25623011ae..83f0144df79 100644 --- a/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/ResolvePackageAssets.cs +++ b/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/ResolvePackageAssets.cs @@ -1,7 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings +#nullable disable using System.Diagnostics; using System.Security.Cryptography; @@ -956,10 +956,10 @@ private void WriteAnalyzers() private class AnalyzerResolver { private readonly CacheWriter _cacheWriter; - private readonly string? _compilerNameSearchString; - private readonly Version? _compilerVersion; - private Dictionary<(string, NuGetVersion), LockFileTargetLibrary>? _targetLibraries; - private List<(string, LockFileLibrary, Version)>? _potentialAnalyzers; + private readonly string _compilerNameSearchString; + private readonly Version _compilerVersion; + private Dictionary<(string, NuGetVersion), LockFileTargetLibrary> _targetLibraries; + private List<(string, LockFileLibrary, Version)> _potentialAnalyzers; private Version _maxApplicableVersion; private Dictionary<(string, NuGetVersion), LockFileTargetLibrary> TargetLibraries => diff --git a/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/ShowMissingWorkloads.cs b/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/ShowMissingWorkloads.cs index a7ace891885..e25457948c0 100644 --- a/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/ShowMissingWorkloads.cs +++ b/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/ShowMissingWorkloads.cs @@ -1,7 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings +#nullable disable using System.Globalization; using Microsoft.Build.Framework; @@ -38,7 +38,7 @@ protected override void ExecuteCore() { if (MissingWorkloadPacks.Any()) { - string? userProfileDir = CliFolderPathCalculatorCore.GetDotnetUserProfileFolderPath(); + string userProfileDir = CliFolderPathCalculatorCore.GetDotnetUserProfileFolderPath(); // When running MSBuild tasks, the current directory is always the project directory, so we can use that as the // starting point to search for global.json diff --git a/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/ValidateExecutableReferences.cs b/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/ValidateExecutableReferences.cs index 76f8636dc5e..463b83aa6d4 100644 --- a/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/ValidateExecutableReferences.cs +++ b/src/sdk/src/Tasks/Microsoft.NET.Build.Tasks/ValidateExecutableReferences.cs @@ -1,7 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#nullable disable warnings +#nullable disable using System.Runtime.Versioning; using Microsoft.Build.Framework; @@ -55,7 +55,7 @@ protected override void ExecuteCore() // We can only access TargetFrameworks and NearestTargetFramework to find the referenced project "TargetFramework". // We rely on the nearest one because it will pick the lowest 'most-compatible' tfm for the referencer and referencee projects. // Since 'younger' TFMs are the ones that would error and are generally also what gets picked as 'most-copmaptible,' we can use it. - FrameworkName? referencedProjectTargetFramework = null; + FrameworkName referencedProjectTargetFramework = null; var targetFrameworkMonikerIndex = Array.FindIndex(project.GetMetadata("TargetFrameworks").Split(';'), targetFramework => targetFramework == nearestTargetFramework); // Since TargetFrameworks can have aliases that aren't the real TFM, we need to uncover the potential alias to the raw TargetFramework in the TFMs by using its index diff --git a/src/sdk/src/WebSdk/ProjectSystem/Targets/Microsoft.NET.Sdk.Web.ProjectSystem.targets b/src/sdk/src/WebSdk/ProjectSystem/Targets/Microsoft.NET.Sdk.Web.ProjectSystem.targets index cbfd27505de..b00ffcd0501 100644 --- a/src/sdk/src/WebSdk/ProjectSystem/Targets/Microsoft.NET.Sdk.Web.ProjectSystem.targets +++ b/src/sdk/src/WebSdk/ProjectSystem/Targets/Microsoft.NET.Sdk.Web.ProjectSystem.targets @@ -68,6 +68,8 @@ Copyright (c) .NET Foundation. All rights reserved. $(InterceptorsPreviewNamespaces);Microsoft.AspNetCore.Http.Generated $(InterceptorsPreviewNamespaces);Microsoft.Extensions.Configuration.Binder.SourceGeneration + + $(InterceptorsPreviewNamespaces);Microsoft.AspNetCore.Http.Validation.Generated + + + + + Exe + {ToolsetInfo.CurrentTargetFramework} + enable + enable + + + + false + + + + net11.0 + preview + + + + $(Features);FileBasedProgram + + + + + + + + + + + + + + + + + + + + + + + + <_RestoreProjectPathItems Include="@(FilteredRestoreGraphProjectInputItems)" /> + + + + + + + + + + """)}},"Diagnostics":[]} + """); + } + + [Fact] + public void Api_Diagnostic_01() + { + var testInstance = _testAssetsManager.CreateTestDirectory(); + var programPath = Path.Join(testInstance.Path, "Program.cs"); + File.WriteAllText(programPath, """ + Console.WriteLine(); + #:property LangVersion preview + """); + + new DotnetCommand(Log, "run-api") + .WithStandardInput($$""" + {"$type":"GetProject","EntryPointFileFullPath":{{ToJson(programPath)}},"ArtifactsPath":"/artifacts"} + """) + .Execute() + .Should().Pass() + .And.HaveStdOut($$""" + {"$type":"Project","Version":1,"Content":{{ToJson($""" + + + + false + /artifacts + + + + + + + Exe + {ToolsetInfo.CurrentTargetFramework} + enable + enable + + + + false + + + + $(Features);FileBasedProgram + + + + + + + + + + + + + + + + + + + <_RestoreProjectPathItems Include="@(FilteredRestoreGraphProjectInputItems)" /> + + + + + + + + + + """)}},"Diagnostics": + [{"Location":{ + "Path":{{ToJson(programPath)}}, + "Span":{"Start":{"Line":1,"Character":0},"End":{"Line":1,"Character":30}{{nop}}}{{nop}}}, + "Message":{{ToJson(string.Format(CliCommandStrings.CannotConvertDirective, $"{programPath}:2"))}}}]} + """.ReplaceLineEndings("")); + } + + [Fact] + public void Api_Diagnostic_02() + { + var testInstance = _testAssetsManager.CreateTestDirectory(); + var programPath = Path.Join(testInstance.Path, "Program.cs"); + File.WriteAllText(programPath, """ + #:unknown directive + Console.WriteLine(); + """); + + new DotnetCommand(Log, "run-api") + .WithStandardInput($$""" + {"$type":"GetProject","EntryPointFileFullPath":{{ToJson(programPath)}},"ArtifactsPath":"/artifacts"} + """) + .Execute() + .Should().Pass() + .And.HaveStdOut($$""" + {"$type":"Project","Version":1,"Content":{{ToJson($""" + + + + false + /artifacts + + + + + + + Exe + {ToolsetInfo.CurrentTargetFramework} + enable + enable + + + + false + + + + $(Features);FileBasedProgram + + + + + + + + + + + + + + + + + + + <_RestoreProjectPathItems Include="@(FilteredRestoreGraphProjectInputItems)" /> + + + + + + + + + + """)}},"Diagnostics": + [{"Location":{ + "Path":{{ToJson(programPath)}}, + "Span":{"Start":{"Line":0,"Character":0},"End":{"Line":1,"Character":0}{{nop}}}{{nop}}}, + "Message":{{ToJson(string.Format(CliCommandStrings.UnrecognizedDirective, "unknown", $"{programPath}:1"))}}}]} + """.ReplaceLineEndings("")); + } + + [Fact] + public void Api_Error() + { + new DotnetCommand(Log, "run-api") + .WithStandardInput(""" + {"$type":"Unknown1"} + {"$type":"Unknown2"} + """) + .Execute() + .Should().Pass() + .And.HaveStdOutContaining(""" + {"$type":"Error","Version":1,"Message": + """) + .And.HaveStdOutContaining("Unknown1") + .And.HaveStdOutContaining("Unknown2"); + } } diff --git a/src/source-manifest.json b/src/source-manifest.json index b6a22e0f186..b3e39904d2a 100644 --- a/src/source-manifest.json +++ b/src/source-manifest.json @@ -78,11 +78,11 @@ "commitSha": "695b1ef88c242c19a95c9f6a504a2376661762c2" }, { - "packageVersion": "6.15.0-preview.1.47", - "barId": 267524, + "packageVersion": "6.15.0-preview.1.50", + "barId": 267707, "path": "nuget-client", "remoteUri": "https://github.com/nuget/nuget.client", - "commitSha": "02b1c82c1e1855042556fdf5d205de501fd81590" + "commitSha": "e4e3b79701686199bc804a06533d2df054924d7e" }, { "packageVersion": "10.0.0-preview.25257.4", @@ -120,11 +120,11 @@ "commitSha": "828faff7300aac7fae6f9544393f9cb317baeb6d" }, { - "packageVersion": "10.0.100-preview.5.25259.8", - "barId": 267677, + "packageVersion": "10.0.100-preview.5.25262.11", + "barId": 267922, "path": "sdk", "remoteUri": "https://github.com/dotnet/sdk", - "commitSha": "e928797f1d6e217a706e441352571787bff8f5d1" + "commitSha": "6e5ee83b67a1b1f1be82202e91611696d0ea4f93" }, { "packageVersion": "10.0.622801", From 227febdbc71a635a2276330e44176f0d725708b6 Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Tue, 13 May 2025 13:08:39 +0000 Subject: [PATCH 31/32] [main] Source code updates from dotnet/aspnetcore (#500) Co-authored-by: dotnet-maestro[bot] Co-authored-by: Viktor Hofer --- prereqs/git-info/aspnetcore.props | 6 +- src/aspnetcore/.azure/pipelines/ci-public.yml | 12 +- src/aspnetcore/.azure/pipelines/ci.yml | 6 +- src/aspnetcore/.github/workflows/backport.yml | 2 +- .../workflows/inter-branch-merge-flow.yml | 2 +- src/aspnetcore/docs/list-of-diagnostics.md | 1 + src/aspnetcore/eng/Common.props | 1 + src/aspnetcore/eng/Dependencies.props | 2 +- src/aspnetcore/eng/Version.Details.xml | 362 +++++++++--------- src/aspnetcore/eng/Versions.props | 181 +++++---- src/aspnetcore/eng/build.ps1 | 14 +- src/aspnetcore/eng/build.sh | 24 +- .../core-templates/steps/source-build.yml | 14 +- src/aspnetcore/eng/common/tools.sh | 6 +- src/aspnetcore/eng/targets/Helix.Common.props | 26 +- src/aspnetcore/eng/targets/Helix.targets | 8 +- .../SupportFiles/Directory.Build.targets | 12 +- .../testing/linker/project.csproj.template | 1 - .../eng/testing/linker/trimmingTests.targets | 1 - .../GenerateFiles/Directory.Build.targets.in | 18 +- .../tools/GenerateFiles/GenerateFiles.csproj | 1 - src/aspnetcore/global.json | 6 +- .../IInternalWebJSInProcessRuntime.cs | 3 +- .../FormWithParentBindingContextTest.cs | 2 +- .../src/Microsoft.AspNetCore.App.Ref.sfxproj | 4 +- ...t.AspNetCore.App.Runtime.Composite.sfxproj | 4 +- .../Microsoft.AspNetCore.App.Runtime.sfxproj | 2 +- .../src/aspnetcore-base-runtime.proj | 2 +- .../src/aspnetcore-runtime-composite.proj | 4 +- .../App.Runtime/src/aspnetcore-runtime.proj | 4 +- .../Microsoft.AspNetCore.App.UnitTests.csproj | 4 +- .../src/Framework/test/SharedFxTests.cs | 4 +- .../src/Framework/test/TargetingPackTests.cs | 4 +- src/aspnetcore/src/Framework/test/TestData.cs | 2 +- .../src/Validation/IValidatableInfo.cs | 3 + .../Validation/IValidatableInfoResolver.cs | 1 + ...RuntimeValidatableParameterInfoResolver.cs | 2 + .../Validation/ValidatableParameterInfo.cs | 2 + .../src/Validation/ValidatablePropertyInfo.cs | 1 + .../Validation/ValidatableTypeAttribute.cs | 3 + .../src/Validation/ValidatableTypeInfo.cs | 1 + .../src/Validation/ValidateContext.cs | 2 + .../src/Validation/ValidationOptions.cs | 3 + .../ValidationServiceCollectionExtensions.cs | 2 + .../ValidatableInfoResolverTests.cs | 2 + .../ValidatableParameterInfoTests.cs | 2 + .../Validation/ValidatableTypeInfoTests.cs | 2 + .../Emitters/ValidationsGenerator.Emitter.cs | 1 + .../ValidationsGenerator.ValidatableType.cs | 6 +- .../ValidationsGeneratorTestBase.cs | 2 + ...ypes#ValidatableInfoResolver.g.verified.cs | 1 + ...ject#ValidatableInfoResolver.g.verified.cs | 1 + ...ters#ValidatableInfoResolver.g.verified.cs | 1 + ...ypes#ValidatableInfoResolver.g.verified.cs | 1 + ...ypes#ValidatableInfoResolver.g.verified.cs | 1 + ...ypes#ValidatableInfoResolver.g.verified.cs | 1 + ...ties#ValidatableInfoResolver.g.verified.cs | 1 + ...bute#ValidatableInfoResolver.g.verified.cs | 1 + ...ypes#ValidatableInfoResolver.g.verified.cs | 1 + .../ValidatableTypesBenchmark.cs | 2 + .../Routing/src/RouteEndpointDataSource.cs | 2 + .../src/ValidationEndpointFilterFactory.cs | 2 + .../MinimalValidationSample/Program.cs | 2 + .../WindowsHostingBundle/Product.targets | 54 +-- .../src/IJSInProcessObjectReference.cs | 9 +- .../src/IJSInProcessRuntime.cs | 9 +- .../src/IJSObjectReference.cs | 18 +- .../Microsoft.JSInterop/src/IJSRuntime.cs | 18 +- .../src/JSInProcessRuntime.cs | 8 +- .../Microsoft.JSInterop/src/JSRuntime.cs | 8 +- .../src/PublicAPI.Unshipped.txt | 4 +- .../src/RequestDecompressionMiddleware.cs | 4 +- .../RequestDecompressionMiddlewareTests.cs | 8 +- src/aspnetcore/src/ProjectTemplates/README.md | 4 +- ...crosoft.DotNet.Web.ProjectTemplates.csproj | 1 - .../Templates.Mvc.Tests.csproj | 6 +- .../src/Shared/SizeLimitedStream.cs | 25 +- .../SiteExtensions/LoggingBranch/LB.csproj | 2 +- .../src/Testing/src/xunit/HelixConstants.cs | 6 +- src/source-manifest.json | 6 +- 80 files changed, 551 insertions(+), 436 deletions(-) diff --git a/prereqs/git-info/aspnetcore.props b/prereqs/git-info/aspnetcore.props index 12832243b0f..74c40461e2a 100644 --- a/prereqs/git-info/aspnetcore.props +++ b/prereqs/git-info/aspnetcore.props @@ -1,8 +1,8 @@  - 1a7ca4a8236d2930b8af2489c0c3a14eb8627544 - 20250508.6 - 10.0.0-preview.5.25258.6 + 6567ae56ec038ec9b71d3cd6098671da39bf1504 + 20250512.8 + 10.0.0-preview.5.25262.8 \ No newline at end of file diff --git a/src/aspnetcore/.azure/pipelines/ci-public.yml b/src/aspnetcore/.azure/pipelines/ci-public.yml index 82698347783..e7922184486 100644 --- a/src/aspnetcore/.azure/pipelines/ci-public.yml +++ b/src/aspnetcore/.azure/pipelines/ci-public.yml @@ -19,6 +19,15 @@ pr: branches: include: - '*' + paths: + exclude: + - .devcontainer/* + - .github/* + - .vscode/* + - docs/* + - '**/*.md' + - LICENSE.TXT + - THIRD-PARTY-NOTICES.TXT parameters: # Choose whether to skip tests when running pipeline manually. @@ -632,7 +641,8 @@ stages: platform: name: 'Managed' container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net10.0-build-amd64' - buildScript: './eng/build.sh $(_InternalRuntimeDownloadArgs)' + buildScript: './eng/build.sh' + buildArguments: '--source-build $(_InternalRuntimeDownloadArgs)' jobProperties: timeoutInMinutes: 120 variables: diff --git a/src/aspnetcore/.azure/pipelines/ci.yml b/src/aspnetcore/.azure/pipelines/ci.yml index f2e7053580f..eb37d3d2ec7 100644 --- a/src/aspnetcore/.azure/pipelines/ci.yml +++ b/src/aspnetcore/.azure/pipelines/ci.yml @@ -669,15 +669,15 @@ extends: path: artifacts/log/ publishOnError: true includeForks: true - # Source build - template: /eng/common/templates-official/job/source-build.yml@self parameters: enableInternalSources: true platform: name: 'Managed' - container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8' - buildScript: './eng/build.sh $(_InternalRuntimeDownloadArgs)' + container: 'mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream-10-amd64' + buildScript: './eng/build.sh' + buildArguments: '--source-build $(_InternalRuntimeDownloadArgs)' jobProperties: timeoutInMinutes: 120 variables: diff --git a/src/aspnetcore/.github/workflows/backport.yml b/src/aspnetcore/.github/workflows/backport.yml index d54f10de1e7..37eb30cf546 100644 --- a/src/aspnetcore/.github/workflows/backport.yml +++ b/src/aspnetcore/.github/workflows/backport.yml @@ -14,7 +14,7 @@ permissions: jobs: backport: - uses: dotnet/arcade/.github/workflows/backport-base.yml@43abe63bfc701d34e6599490a557a74710693410 # 2025-01-13 + uses: dotnet/arcade/.github/workflows/backport-base.yml@d7540e540636883d3d080d087223d28b6b7395ae # 2025-01-13 with: pr_description_template: | Backport of #%source_pr_number% to %target_branch% diff --git a/src/aspnetcore/.github/workflows/inter-branch-merge-flow.yml b/src/aspnetcore/.github/workflows/inter-branch-merge-flow.yml index 50874d4c49c..cba6fffbaf4 100644 --- a/src/aspnetcore/.github/workflows/inter-branch-merge-flow.yml +++ b/src/aspnetcore/.github/workflows/inter-branch-merge-flow.yml @@ -10,4 +10,4 @@ permissions: jobs: Merge: - uses: dotnet/arcade/.github/workflows/backport-base.yml@43abe63bfc701d34e6599490a557a74710693410 # 2024-06-24 + uses: dotnet/arcade/.github/workflows/backport-base.yml@d7540e540636883d3d080d087223d28b6b7395ae # 2024-06-24 diff --git a/src/aspnetcore/docs/list-of-diagnostics.md b/src/aspnetcore/docs/list-of-diagnostics.md index 58874a8de58..e6195634513 100644 --- a/src/aspnetcore/docs/list-of-diagnostics.md +++ b/src/aspnetcore/docs/list-of-diagnostics.md @@ -34,6 +34,7 @@ | __`ASP0026`__ | [Authorize] overridden by [AllowAnonymous] from farther away | | __`ASP0027`__ | Unnecessary public Program class declaration | | __`ASP0028`__ | Consider using ListenAnyIP() instead of Listen(IPAddress.Any) | +| __`ASP0029`__ | Experimental warning for validations resolver APIs | ### API (`API1000-API1003`) diff --git a/src/aspnetcore/eng/Common.props b/src/aspnetcore/eng/Common.props index f5432db50b5..6c75a0f8285 100644 --- a/src/aspnetcore/eng/Common.props +++ b/src/aspnetcore/eng/Common.props @@ -47,5 +47,6 @@ true + $(PublishAllBuildsAssetsInThisJob) diff --git a/src/aspnetcore/eng/Dependencies.props b/src/aspnetcore/eng/Dependencies.props index 15355024250..94bd8109c0c 100644 --- a/src/aspnetcore/eng/Dependencies.props +++ b/src/aspnetcore/eng/Dependencies.props @@ -253,7 +253,7 @@ and are generated based on the last package release. --> $(MicrosoftNETCoreAppRuntimeVersion) + Condition=" $([System.String]::new('%(Identity)').StartsWith('Microsoft.NETCore.App.Runtime.')) or $([System.String]::new('%(Identity)').StartsWith('Microsoft.NETCore.App.Crossgen2.'))">$(MicrosoftNETCoreAppRefVersion) diff --git a/src/aspnetcore/eng/Version.Details.xml b/src/aspnetcore/eng/Version.Details.xml index 3959831b251..19c9aad572b 100644 --- a/src/aspnetcore/eng/Version.Details.xml +++ b/src/aspnetcore/eng/Version.Details.xml @@ -8,337 +8,337 @@ See https://github.com/dotnet/arcade/blob/master/Documentation/Darc.md for instructions on using darc. --> - + - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb @@ -357,44 +357,44 @@ https://github.com/dotnet/roslyn afdd413cee50c16318620252e4e64dc326e2d300 - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb - + https://github.com/dotnet/dotnet - 5e6dacd4d3debda3266224b2a434811c6fa94987 + 85778473549347b3e4bad3ea009e9438df7b11bb https://github.com/dotnet/extensions diff --git a/src/aspnetcore/eng/Versions.props b/src/aspnetcore/eng/Versions.props index 5a1182d5ece..81a225c53d7 100644 --- a/src/aspnetcore/eng/Versions.props +++ b/src/aspnetcore/eng/Versions.props @@ -67,94 +67,94 @@ --> - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 + 10.0.0-preview.5.25260.104 9.5.0-preview.1.25252.3 9.5.0-preview.1.25252.3 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 - 10.0.0-preview.5.25257.101 + 10.0.0-preview.4.25260.104 + 10.0.0-preview.4.25260.104 + 10.0.0-preview.4.25260.104 + 10.0.0-preview.4.25260.104 + 10.0.0-preview.4.25260.104 + 10.0.0-preview.4.25260.104 + 10.0.0-preview.4.25260.104 + 10.0.0-preview.4.25260.104 4.13.0-3.24613.7 @@ -167,12 +167,12 @@ 6.2.4 6.2.4 - 10.0.0-beta.25257.101 - 10.0.0-beta.25257.101 - 10.0.0-beta.25257.101 - 10.0.0-beta.25257.101 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 + 10.0.0-beta.25260.104 - 10.0.0-preview.25257.101 + 10.0.0-preview.25260.104 1.0.0-prerelease.25217.3 1.0.0-prerelease.25217.3 @@ -189,13 +189,6 @@ Versions below this comment are not managed by automation and can be changed as needed. --> - - - $(MicrosoftNETCoreAppRuntimewinx64Version) - 6.0.0 diff --git a/src/aspnetcore/eng/build.ps1 b/src/aspnetcore/eng/build.ps1 index 5d58d01abc5..96bc05a6cbe 100644 --- a/src/aspnetcore/eng/build.ps1 +++ b/src/aspnetcore/eng/build.ps1 @@ -99,6 +99,9 @@ Additional feed that can be used when downloading .NET runtimes and SDKs .PARAMETER RuntimeSourceFeedKey Key for feed that can be used when downloading .NET runtimes and SDKs +.PARAMETER ProductBuild +Build the repository in product mode (short: -pb). + .EXAMPLE Building both native and managed projects. @@ -196,6 +199,10 @@ param( [Alias('DotNetRuntimeSourceFeedKey')] [string]$RuntimeSourceFeedKey, + # Product build + [Alias('pb')] + [switch]$ProductBuild, + # Capture the rest [Parameter(ValueFromRemainingArguments = $true)] [string[]]$MSBuildArguments @@ -275,6 +282,8 @@ $MSBuildArguments += "/p:Publish=$Publish" $MSBuildArguments += "/p:TargetArchitecture=$Architecture" $MSBuildArguments += "/p:TargetOsName=win" +if ($ProductBuild) { $MSBuildArguments += "/p:DotNetBuildRepo=$ProductBuild" } + if (-not $Configuration) { $Configuration = if ($CI) { 'Release' } else { 'Debug' } } @@ -289,6 +298,7 @@ if ($RuntimeSourceFeed -or $RuntimeSourceFeedKey) { $ToolsetBuildArguments += $runtimeFeedArg $ToolsetBuildArguments += $runtimeFeedKeyArg } +if ($ProductBuild) { $ToolsetBuildArguments += "/p:DotNetBuildRepo=$ProductBuild" } # Split build categories between dotnet msbuild and desktop msbuild. Use desktop msbuild as little as possible. [string[]]$dotnetBuildArguments = '' @@ -352,10 +362,6 @@ Remove-Item variable:global:_DotNetInstallDir -ea Ignore Remove-Item variable:global:_ToolsetBuildProj -ea Ignore Remove-Item variable:global:_MSBuildExe -ea Ignore -# tools.ps1 expects the remaining arguments to be available via the $properties string array variable -# TODO: Remove when https://github.com/dotnet/source-build/issues/4337 is implemented. -[string[]] $properties = $MSBuildArguments - # Import Arcade . "$PSScriptRoot/common/tools.ps1" diff --git a/src/aspnetcore/eng/build.sh b/src/aspnetcore/eng/build.sh index 3da456256ce..fa217f24ec5 100755 --- a/src/aspnetcore/eng/build.sh +++ b/src/aspnetcore/eng/build.sh @@ -35,6 +35,8 @@ target_arch='x64' configuration='' runtime_source_feed='' runtime_source_feed_key='' +source_build='' +product_build='' if [ "$(uname)" = "Darwin" ]; then target_os_name='osx' @@ -88,6 +90,9 @@ Options: --runtime-source-feed Additional feed that can be used when downloading .NET runtimes and SDKs --runtime-source-feed-key Key for feed that can be used when downloading .NET runtimes and SDKs + --sourceBuild|-sb Build the repository in source-only mode. + --productBuild|-pb Build the repository in product-build mode. + Description: This build script installs required tools and runs an MSBuild command on this repository This script can be used to invoke various targets, such as targets to produce packages @@ -247,6 +252,13 @@ while [[ $# -gt 0 ]]; do [ -z "${1:-}" ] && __error "Missing value for parameter --runtime-source-feed-key" && __usage runtime_source_feed_key="${1:-}" ;; + -sourcebuild|-source-build|-sb) + source_build=true + product_build=true + ;; + -productbuild|-product-build|-pb) + product_build=true + ;; *) msbuild_args[${#msbuild_args[*]}]="$1" ;; @@ -304,6 +316,8 @@ fi [ ! -z "$build_nodejs" ] && msbuild_args[${#msbuild_args[*]}]="-p:BuildNodeJSUnlessSourcebuild=$build_nodejs" [ ! -z "$build_managed" ] && msbuild_args[${#msbuild_args[*]}]="-p:BuildManaged=$build_managed" [ ! -z "$build_installers" ] && msbuild_args[${#msbuild_args[*]}]="-p:BuildInstallers=$build_installers" +[ ! -z "$product_build" ] && msbuild_args[${#msbuild_args[*]}]="-p:DotNetBuildRepo=$product_build" +[ ! -z "$source_build" ] && msbuild_args[${#msbuild_args[*]}]="-p:DotNetBuildSourceOnly=$source_build" # Run restore by default unless --no-restore or --no-build was specified. [ -z "$run_restore" ] && run_restore=true @@ -333,13 +347,15 @@ msbuild_args[${#msbuild_args[*]}]="-p:Configuration=$configuration" # Set up additional runtime args toolset_build_args=() if [ ! -z "$runtime_source_feed$runtime_source_feed_key" ]; then - runtimeFeedArg="/p:DotNetRuntimeSourceFeed=$runtime_source_feed" - runtimeFeedKeyArg="/p:DotNetRuntimeSourceFeedKey=$runtime_source_feed_key" + runtimeFeedArg="-p:DotNetRuntimeSourceFeed=$runtime_source_feed" + runtimeFeedKeyArg="-p:DotNetRuntimeSourceFeedKey=$runtime_source_feed_key" msbuild_args[${#msbuild_args[*]}]=$runtimeFeedArg msbuild_args[${#msbuild_args[*]}]=$runtimeFeedKeyArg toolset_build_args[${#toolset_build_args[*]}]=$runtimeFeedArg toolset_build_args[${#toolset_build_args[*]}]=$runtimeFeedKeyArg fi +[ ! -z "$product_build" ] && toolset_build_args[${#toolset_build_args[*]}]="-p:DotNetBuildRepo=$product_build" +[ ! -z "$source_build" ] && toolset_build_args[${#toolset_build_args[*]}]="-p:DotNetBuildSourceOnly=$source_build" # Initialize global variables need to be set before the import of Arcade is imported restore=$run_restore @@ -359,10 +375,6 @@ if [ "$(uname)" = "Darwin" ]; then ulimit -n 10000 fi -# tools.sh expects the remaining arguments to be available via the $properties string array variable -# TODO: Remove when https://github.com/dotnet/source-build/issues/4337 is implemented. -properties=$msbuild_args - # Import Arcade . "$DIR/common/tools.sh" diff --git a/src/aspnetcore/eng/common/core-templates/steps/source-build.yml b/src/aspnetcore/eng/common/core-templates/steps/source-build.yml index c7c062e88ee..f2a0f347fdd 100644 --- a/src/aspnetcore/eng/common/core-templates/steps/source-build.yml +++ b/src/aspnetcore/eng/common/core-templates/steps/source-build.yml @@ -38,14 +38,9 @@ steps: targetRidArgs='/p:TargetRid=${{ parameters.platform.targetRID }}' fi - runtimeOsArgs= - if [ '${{ parameters.platform.runtimeOS }}' != '' ]; then - runtimeOsArgs='/p:RuntimeOS=${{ parameters.platform.runtimeOS }}' - fi - - baseOsArgs= - if [ '${{ parameters.platform.baseOS }}' != '' ]; then - baseOsArgs='/p:BaseOS=${{ parameters.platform.baseOS }}' + baseRidArgs= + if [ '${{ parameters.platform.baseRID }}' != '' ]; then + baseRidArgs='/p:BaseRid=${{ parameters.platform.baseRID }}' fi portableBuildArgs= @@ -59,8 +54,7 @@ steps: ${{ parameters.platform.buildArguments }} \ $internalRuntimeDownloadArgs \ $targetRidArgs \ - $runtimeOsArgs \ - $baseOsArgs \ + $baseRidArgs \ $portableBuildArgs \ /p:DotNetBuildSourceOnly=true \ /p:DotNetBuildRepo=true \ diff --git a/src/aspnetcore/eng/common/tools.sh b/src/aspnetcore/eng/common/tools.sh index d51f300c772..cc007b1f15a 100755 --- a/src/aspnetcore/eng/common/tools.sh +++ b/src/aspnetcore/eng/common/tools.sh @@ -5,6 +5,9 @@ # CI mode - set to true on CI server for PR validation build or official build. ci=${ci:-false} +# Build mode +source_build=${source_build:-false} + # Set to true to use the pipelines logger which will enable Azure logging output. # https://github.com/Microsoft/azure-pipelines-tasks/blob/master/docs/authoring/commands.md # This flag is meant as a temporary opt-opt for the feature while validate it across @@ -58,7 +61,8 @@ use_installed_dotnet_cli=${use_installed_dotnet_cli:-true} dotnetInstallScriptVersion=${dotnetInstallScriptVersion:-'v1'} # True to use global NuGet cache instead of restoring packages to repository-local directory. -if [[ "$ci" == true ]]; then +# Keep in sync with NuGetPackageroot in Arcade SDK's RepositoryLayout.props. +if [[ "$ci" == true || "$source_build" == true ]]; then use_global_nuget_cache=${use_global_nuget_cache:-false} else use_global_nuget_cache=${use_global_nuget_cache:-true} diff --git a/src/aspnetcore/eng/targets/Helix.Common.props b/src/aspnetcore/eng/targets/Helix.Common.props index c5628d35c2f..e517b9410d2 100644 --- a/src/aspnetcore/eng/targets/Helix.Common.props +++ b/src/aspnetcore/eng/targets/Helix.Common.props @@ -1,12 +1,13 @@ - (AlmaLinux.8.Amd64.Open)Ubuntu.2204.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:almalinux-8-helix-amd64 - (Alpine.318.Amd64.Open)Ubuntu.2204.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.18-helix-amd64 - (Debian.12.Amd64.Open)Ubuntu.2204.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-12-helix-amd64 - (Fedora.41.Amd64.Open)Ubuntu.2204.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-41-helix - (Mariner)Ubuntu.2204.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:cbl-mariner-2.0-helix-amd64 - (Debian.12.Arm64.Open)ubuntu.2204.armarch.open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-12-helix-arm64v8 + (AlmaLinux.9.Amd64.Open)azurelinux.3.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:almalinux-9-helix-amd64 + (Alpine.321.Amd64.Open)azurelinux.3.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.21-helix-amd64 + (AzureLinux.30.Amd64.Open)azurelinux.3.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-helix-amd64 + (Debian.13.Amd64.Open)azurelinux.3.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-13-helix-amd64 + (Fedora.42.Amd64.Open)azurelinux.3.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:fedora-42-helix-amd64 + + (Debian.13.Arm64.Open)ubuntu.2204.armarch.open@mcr.microsoft.com/dotnet-buildtools/prereqs:debian-13-helix-arm64v8 false @@ -38,14 +39,15 @@ - + - - - - - + + + + + + diff --git a/src/aspnetcore/eng/targets/Helix.targets b/src/aspnetcore/eng/targets/Helix.targets index 70e01877bef..d58bc8feedd 100644 --- a/src/aspnetcore/eng/targets/Helix.targets +++ b/src/aspnetcore/eng/targets/Helix.targets @@ -16,11 +16,11 @@ - $(HelixQueueAlmaLinux8); - $(HelixQueueAlpine318); - $(HelixQueueDebian12); + $(HelixQueueAlmaLinux); + $(HelixQueueAlpine); + $(HelixQueueAzureLinux); + $(HelixQueueDebian); $(HelixQueueFedora40); - $(HelixQueueMariner); Ubuntu.2004.Amd64.Open; true diff --git a/src/aspnetcore/eng/testing/linker/SupportFiles/Directory.Build.targets b/src/aspnetcore/eng/testing/linker/SupportFiles/Directory.Build.targets index 765082e447a..68afc5df367 100644 --- a/src/aspnetcore/eng/testing/linker/SupportFiles/Directory.Build.targets +++ b/src/aspnetcore/eng/testing/linker/SupportFiles/Directory.Build.targets @@ -8,10 +8,10 @@ + RuntimeFrameworkVersion="$(MicrosoftNETCoreAppRefVersion)" /> + Version="$(MicrosoftNETCoreAppRefVersion)" /> $(MicrosoftNETCoreAppRuntimeVersion) + Condition=" '%(TargetFramework)' == '$(TargetFramework)' ">$(MicrosoftNETCoreAppRefVersion) $(MicrosoftNETCoreAppRefVersion) $(MicrosoftNETCoreAppRuntimeVersion) + '%(TargetFramework)' == '$(TargetFramework)'">$(MicrosoftNETCoreAppRefVersion) $(TargetRuntimeIdentifier) $(MicrosoftNETCoreAppRuntimeVersion) + Condition=" '%(TargetFramework)' == '$(TargetFramework)' ">$(MicrosoftNETCoreAppRefVersion) $(TargetRuntimeIdentifier) $(MicrosoftNETCoreAppRuntimeVersion) + Condition=" '%(TargetFramework)' == '$(TargetFramework)' ">$(MicrosoftNETCoreAppRefVersion) $(TargetRuntimeIdentifier) diff --git a/src/aspnetcore/eng/testing/linker/project.csproj.template b/src/aspnetcore/eng/testing/linker/project.csproj.template index ea368a6caa5..160271a57fb 100644 --- a/src/aspnetcore/eng/testing/linker/project.csproj.template +++ b/src/aspnetcore/eng/testing/linker/project.csproj.template @@ -5,7 +5,6 @@ Exe {RuntimeIdentifier} {PublishAot} - {MicrosoftNETCoreAppRuntimeVersion} {MicrosoftNETCoreAppRefVersion} {RepoRoot} diff --git a/src/aspnetcore/eng/testing/linker/trimmingTests.targets b/src/aspnetcore/eng/testing/linker/trimmingTests.targets index 1018b14a641..32235265135 100644 --- a/src/aspnetcore/eng/testing/linker/trimmingTests.targets +++ b/src/aspnetcore/eng/testing/linker/trimmingTests.targets @@ -84,7 +84,6 @@ .Replace('{TargetFramework}', '%(TestConsoleApps.TargetFramework)') .Replace('{RuntimeIdentifier}','%(TestConsoleApps.TestRuntimeIdentifier)') .Replace('{PublishAot}','$(IsNativeAotTestProject)') - .Replace('{MicrosoftNETCoreAppRuntimeVersion}','$(MicrosoftNETCoreAppRuntimeVersion)') .Replace('{MicrosoftNETCoreAppRefVersion}','$(MicrosoftNETCoreAppRefVersion)') .Replace('{RepoRoot}', '$(RepoRoot)') .Replace('{ExtraTrimmerArgs}', '%(TestConsoleApps.ExtraTrimmerArgs)') diff --git a/src/aspnetcore/eng/tools/GenerateFiles/Directory.Build.targets.in b/src/aspnetcore/eng/tools/GenerateFiles/Directory.Build.targets.in index 26dfad97a0e..fb93cb80601 100644 --- a/src/aspnetcore/eng/tools/GenerateFiles/Directory.Build.targets.in +++ b/src/aspnetcore/eng/tools/GenerateFiles/Directory.Build.targets.in @@ -54,12 +54,12 @@ + Version="${MicrosoftNETCoreAppRefVersion}" /> @@ -67,7 +67,7 @@ ${MicrosoftNETCoreAppRuntimeVersion} + Condition=" '%(TargetFramework)' == '${DefaultNetCoreTargetFramework}' ">${MicrosoftNETCoreAppRefVersion} ${MicrosoftNETCoreAppRefVersion} ${MicrosoftNETCoreAppRuntimeVersion} + '$(TargetLatestDotNetRuntime)' != 'false' ">${MicrosoftNETCoreAppRefVersion} %(RuntimePackRuntimeIdentifiers);$(TargetRuntimeIdentifier) ${MicrosoftNETCoreAppRuntimeVersion} + Condition=" '%(TargetFramework)' == '${DefaultNetCoreTargetFramework}' ">${MicrosoftNETCoreAppRefVersion} $(TargetRuntimeIdentifier) ${MicrosoftNETCoreAppRuntimeVersion} + Condition=" '%(TargetFramework)' == '${DefaultNetCoreTargetFramework}' ">${MicrosoftNETCoreAppRefVersion} $(TargetRuntimeIdentifier) ${MicrosoftNETCoreAppRuntimeVersion} + Condition=" '%(TargetFramework)' == '${DefaultNetCoreTargetFramework}' ">${MicrosoftNETCoreAppRefVersion} @@ -109,13 +109,13 @@ ${MicrosoftNETCoreAppRuntimeVersion} + Condition=" '%(TargetFramework)' == '${DefaultNetCoreTargetFramework}' ">${MicrosoftNETCoreAppRefVersion} %(Crossgen2RuntimeIdentifiers);$(NETCoreSdkRuntimeIdentifier);$(TargetRuntimeIdentifier) ${MicrosoftNETCoreAppRuntimeVersion} + Condition=" '%(TargetFramework)' == '${DefaultNetCoreTargetFramework}' ">${MicrosoftNETCoreAppRefVersion} diff --git a/src/aspnetcore/eng/tools/GenerateFiles/GenerateFiles.csproj b/src/aspnetcore/eng/tools/GenerateFiles/GenerateFiles.csproj index dbe1c76adde..48f57adcade 100644 --- a/src/aspnetcore/eng/tools/GenerateFiles/GenerateFiles.csproj +++ b/src/aspnetcore/eng/tools/GenerateFiles/GenerateFiles.csproj @@ -23,7 +23,6 @@ MicrosoftAspNetCoreAppRefVersion=$(TargetingPackVersion); MicrosoftAspNetCoreAppRuntimeVersion=$(SharedFxVersion); MicrosoftNETCoreAppRefVersion=$(MicrosoftNETCoreAppRefVersion); - MicrosoftNETCoreAppRuntimeVersion=$(MicrosoftNETCoreAppRuntimeVersion); MicrosoftPlaywrightCLIVersion=$(MicrosoftPlaywrightCLIVersion); LibNetHostAppPackVersion=$(BundledNETCoreAppPackageVersion); SupportedRuntimeIdentifiers=$([MSBuild]::Escape($(SupportedRuntimeIdentifiers))); diff --git a/src/aspnetcore/global.json b/src/aspnetcore/global.json index eed19039f29..2445fe6f7b1 100644 --- a/src/aspnetcore/global.json +++ b/src/aspnetcore/global.json @@ -27,9 +27,9 @@ "jdk": "latest" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25257.101", - "Microsoft.DotNet.Helix.Sdk": "10.0.0-beta.25257.101", - "Microsoft.DotNet.SharedFramework.Sdk": "10.0.0-beta.25257.101", + "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25260.104", + "Microsoft.DotNet.Helix.Sdk": "10.0.0-beta.25260.104", + "Microsoft.DotNet.SharedFramework.Sdk": "10.0.0-beta.25260.104", "Microsoft.Build.NoTargets": "3.7.0", "Microsoft.Build.Traversal": "3.4.0" } diff --git a/src/aspnetcore/src/Components/Web/src/Internal/IInternalWebJSInProcessRuntime.cs b/src/aspnetcore/src/Components/Web/src/Internal/IInternalWebJSInProcessRuntime.cs index 86d91a3fb2d..a68fb052932 100644 --- a/src/aspnetcore/src/Components/Web/src/Internal/IInternalWebJSInProcessRuntime.cs +++ b/src/aspnetcore/src/Components/Web/src/Internal/IInternalWebJSInProcessRuntime.cs @@ -22,5 +22,6 @@ public interface IInternalWebJSInProcessRuntime /// /// For internal framework use only. /// - string InvokeJS(in JSInvocationInfo invocationInfo); + string InvokeJS(in JSInvocationInfo invocationInfo) + => throw new NotImplementedException(); } diff --git a/src/aspnetcore/src/Components/test/E2ETest/ServerRenderingTests/FormHandlingTests/FormWithParentBindingContextTest.cs b/src/aspnetcore/src/Components/test/E2ETest/ServerRenderingTests/FormHandlingTests/FormWithParentBindingContextTest.cs index 4023915b3f2..3da563d5bc8 100644 --- a/src/aspnetcore/src/Components/test/E2ETest/ServerRenderingTests/FormHandlingTests/FormWithParentBindingContextTest.cs +++ b/src/aspnetcore/src/Components/test/E2ETest/ServerRenderingTests/FormHandlingTests/FormWithParentBindingContextTest.cs @@ -1309,7 +1309,7 @@ public void CanBindToFormWithFiles() } [Theory] - [InlineData(true)] + // [InlineData(true)] QuarantinedTest: https://github.com/dotnet/aspnetcore/issues/61882 [InlineData(false)] public void CanUseFormWithMethodGet(bool suppressEnhancedNavigation) { diff --git a/src/aspnetcore/src/Framework/App.Ref/src/Microsoft.AspNetCore.App.Ref.sfxproj b/src/aspnetcore/src/Framework/App.Ref/src/Microsoft.AspNetCore.App.Ref.sfxproj index b566e2e5926..44cd40b611d 100644 --- a/src/aspnetcore/src/Framework/App.Ref/src/Microsoft.AspNetCore.App.Ref.sfxproj +++ b/src/aspnetcore/src/Framework/App.Ref/src/Microsoft.AspNetCore.App.Ref.sfxproj @@ -160,11 +160,11 @@ '%(ReferencePath.NuGetSourceType)' == 'Package' " /> - <_AspNetCoreAppPackageOverrides Include="@(ReferencePath->'%(FileName)|$(MicrosoftNETCoreAppRuntimeVersion)')" + <_AspNetCoreAppPackageOverrides Include="@(ReferencePath->'%(FileName)|$(MicrosoftNETCoreAppRefVersion)')" Condition="'%(ReferencePath.NuGetPackageId)' == 'Microsoft.Internal.Runtime.AspNetCore.Transport' AND '%(ReferencePath.NuGetSourceType)' == 'Package' " /> diff --git a/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.Composite.sfxproj b/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.Composite.sfxproj index 7bef557274c..94c4ae0f988 100644 --- a/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.Composite.sfxproj +++ b/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.Composite.sfxproj @@ -13,8 +13,8 @@ true LatestPatch - - false + + false true false diff --git a/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.sfxproj b/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.sfxproj index 294ca282e84..1a0d97f7b27 100644 --- a/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.sfxproj +++ b/src/aspnetcore/src/Framework/App.Runtime/src/Microsoft.AspNetCore.App.Runtime.sfxproj @@ -14,7 +14,7 @@ true LatestPatch - false + false true false diff --git a/src/aspnetcore/src/Framework/App.Runtime/src/aspnetcore-base-runtime.proj b/src/aspnetcore/src/Framework/App.Runtime/src/aspnetcore-base-runtime.proj index 842ba7c97d3..2f3f66312a3 100644 --- a/src/aspnetcore/src/Framework/App.Runtime/src/aspnetcore-base-runtime.proj +++ b/src/aspnetcore/src/Framework/App.Runtime/src/aspnetcore-base-runtime.proj @@ -13,7 +13,7 @@ diff --git a/src/aspnetcore/src/Framework/App.Runtime/src/aspnetcore-runtime-composite.proj b/src/aspnetcore/src/Framework/App.Runtime/src/aspnetcore-runtime-composite.proj index a63ae840d27..0bda2132bba 100644 --- a/src/aspnetcore/src/Framework/App.Runtime/src/aspnetcore-runtime-composite.proj +++ b/src/aspnetcore/src/Framework/App.Runtime/src/aspnetcore-runtime-composite.proj @@ -26,8 +26,8 @@ --> - dotnet-runtime-$(MicrosoftNETCoreAppRuntimeVersion)-$(TargetRuntimeIdentifier).$(ArchiveFormat) - dotnet-runtime-pgo-$(MicrosoftNETCoreAppRuntimeVersion)-$(TargetRuntimeIdentifier)$(ArchiveExtension) + dotnet-runtime-$(MicrosoftNETCoreAppRefVersion)-$(TargetRuntimeIdentifier).$(ArchiveFormat) + dotnet-runtime-pgo-$(MicrosoftNETCoreAppRefVersion)-$(TargetRuntimeIdentifier)$(ArchiveExtension) Runtime/$(MicrosoftInternalRuntimeAspNetCoreTransportVersion)/$(DotNetRuntimeArchiveFileName) $(BaseIntermediateOutputPath)$(DotNetRuntimeArchiveFileName) diff --git a/src/aspnetcore/src/Framework/App.Runtime/src/aspnetcore-runtime.proj b/src/aspnetcore/src/Framework/App.Runtime/src/aspnetcore-runtime.proj index b636ddc4629..5e15187aa84 100644 --- a/src/aspnetcore/src/Framework/App.Runtime/src/aspnetcore-runtime.proj +++ b/src/aspnetcore/src/Framework/App.Runtime/src/aspnetcore-runtime.proj @@ -29,8 +29,8 @@ --> - dotnet-runtime-$(MicrosoftNETCoreAppRuntimeVersion)-$(TargetRuntimeIdentifier).$(ArchiveFormat) - dotnet-runtime-pgo-$(MicrosoftNETCoreAppRuntimeVersion)-$(TargetRuntimeIdentifier)$(ArchiveExtension) + dotnet-runtime-$(MicrosoftNETCoreAppRefVersion)-$(TargetRuntimeIdentifier).$(ArchiveFormat) + dotnet-runtime-pgo-$(MicrosoftNETCoreAppRefVersion)-$(TargetRuntimeIdentifier)$(ArchiveExtension) Runtime/$(MicrosoftInternalRuntimeAspNetCoreTransportVersion)/$(DotNetRuntimeArchiveFileName) $(BaseIntermediateOutputPath)$(DotNetRuntimeArchiveFileName) diff --git a/src/aspnetcore/src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj b/src/aspnetcore/src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj index eaa52b8b613..09eeccfea52 100644 --- a/src/aspnetcore/src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj +++ b/src/aspnetcore/src/Framework/test/Microsoft.AspNetCore.App.UnitTests.csproj @@ -46,8 +46,8 @@ <_Parameter2>$(TargetRuntimeIdentifier) - <_Parameter1>MicrosoftNETCoreAppRuntimeVersion - <_Parameter2>$(MicrosoftNETCoreAppRuntimeVersion) + <_Parameter1>MicrosoftNETCoreAppRefVersion + <_Parameter2>$(MicrosoftNETCoreAppRefVersion) <_Parameter1>SharedFrameworkBinariesFromRepo diff --git a/src/aspnetcore/src/Framework/test/SharedFxTests.cs b/src/aspnetcore/src/Framework/test/SharedFxTests.cs index 8aed6fa3bff..5578643035b 100644 --- a/src/aspnetcore/src/Framework/test/SharedFxTests.cs +++ b/src/aspnetcore/src/Framework/test/SharedFxTests.cs @@ -96,7 +96,7 @@ public void SharedFrameworkContainsValidRuntimeConfigFile() Assert.Equal(_expectedTfm, (string)runtimeConfig["runtimeOptions"]["tfm"]); Assert.Equal("LatestPatch", (string)runtimeConfig["runtimeOptions"]["rollForward"]); - Assert.Equal(TestData.GetMicrosoftNETCoreAppPackageVersion(), (string)runtimeConfig["runtimeOptions"]["framework"]["version"]); + Assert.Equal(TestData.GetMicrosoftNETCoreAppVersion(), (string)runtimeConfig["runtimeOptions"]["framework"]["version"]); } [Fact] @@ -165,7 +165,7 @@ public void SharedFrameworkAssembliesHaveExpectedAssemblyVersions() .Split(';', StringSplitOptions.RemoveEmptyEntries) .ToHashSet(); - var versionStringWithoutPrereleaseTag = TestData.GetMicrosoftNETCoreAppPackageVersion().Split('-', 2)[0]; + var versionStringWithoutPrereleaseTag = TestData.GetMicrosoftNETCoreAppVersion().Split('-', 2)[0]; var version = Version.Parse(versionStringWithoutPrereleaseTag); var aspnetcoreVersionString = TestData.GetSharedFxVersion().Split('-', 2)[0]; var aspnetcoreVersion = Version.Parse(aspnetcoreVersionString); diff --git a/src/aspnetcore/src/Framework/test/TargetingPackTests.cs b/src/aspnetcore/src/Framework/test/TargetingPackTests.cs index 080372adb0c..bbfb80cf9c1 100644 --- a/src/aspnetcore/src/Framework/test/TargetingPackTests.cs +++ b/src/aspnetcore/src/Framework/test/TargetingPackTests.cs @@ -65,7 +65,7 @@ public void RefAssembliesHaveExpectedAssemblyVersions() .Split(';', StringSplitOptions.RemoveEmptyEntries) .ToHashSet(); - var versionStringWithoutPrereleaseTag = TestData.GetMicrosoftNETCoreAppPackageVersion().Split('-', 2)[0]; + var versionStringWithoutPrereleaseTag = TestData.GetMicrosoftNETCoreAppVersion().Split('-', 2)[0]; var version = Version.Parse(versionStringWithoutPrereleaseTag); var aspnetcoreVersionString = TestData.GetSharedFxVersion().Split('-', 2)[0]; var aspnetcoreVersion = Version.Parse(aspnetcoreVersionString); @@ -148,7 +148,7 @@ public void PackageOverridesContainsCorrectEntries() Assert.Equal(packageOverrideFileLines.Length, runtimeDependencies.Count + aspnetcoreDependencies.Count + 1); // PackageOverrides versions should remain at Major.Minor.0 while servicing. - var netCoreAppPackageVersion = TestData.GetMicrosoftNETCoreAppPackageVersion(); + var netCoreAppPackageVersion = TestData.GetMicrosoftNETCoreAppVersion(); Assert.True( NuGetVersion.TryParse(netCoreAppPackageVersion, out var parsedVersion), "MicrosoftNETCoreAppPackageVersion must be convertable to a NuGetVersion."); diff --git a/src/aspnetcore/src/Framework/test/TestData.cs b/src/aspnetcore/src/Framework/test/TestData.cs index fe88b95fcdd..6d7176d53b3 100644 --- a/src/aspnetcore/src/Framework/test/TestData.cs +++ b/src/aspnetcore/src/Framework/test/TestData.cs @@ -319,7 +319,7 @@ static TestData() public static string GetDefaultNetCoreTargetFramework() => GetTestDataValue("DefaultNetCoreTargetFramework"); - public static string GetMicrosoftNETCoreAppPackageVersion() => GetTestDataValue("MicrosoftNETCoreAppRuntimeVersion"); + public static string GetMicrosoftNETCoreAppVersion() => GetTestDataValue("MicrosoftNETCoreAppRefVersion"); public static string GetReferencePackSharedFxVersion() => GetTestDataValue("ReferencePackSharedFxVersion"); diff --git a/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/IValidatableInfo.cs b/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/IValidatableInfo.cs index 91766f69cfc..d2a7ccd1fbc 100644 --- a/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/IValidatableInfo.cs +++ b/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/IValidatableInfo.cs @@ -1,11 +1,14 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Diagnostics.CodeAnalysis; + namespace Microsoft.AspNetCore.Http.Validation; /// /// Represents an interface for validating a value. /// +[Experimental("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")] public interface IValidatableInfo { /// diff --git a/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/IValidatableInfoResolver.cs b/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/IValidatableInfoResolver.cs index b4d4abe31c2..80a2f0d0d74 100644 --- a/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/IValidatableInfoResolver.cs +++ b/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/IValidatableInfoResolver.cs @@ -10,6 +10,7 @@ namespace Microsoft.AspNetCore.Http.Validation; /// Provides an interface for resolving the validation information associated /// with a given or . /// +[Experimental("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")] public interface IValidatableInfoResolver { /// diff --git a/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/RuntimeValidatableParameterInfoResolver.cs b/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/RuntimeValidatableParameterInfoResolver.cs index e2d3e6ffc5c..0728c3ac8b8 100644 --- a/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/RuntimeValidatableParameterInfoResolver.cs +++ b/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/RuntimeValidatableParameterInfoResolver.cs @@ -1,3 +1,5 @@ +#pragma warning disable ASP0029 // Type is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed. + // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. diff --git a/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/ValidatableParameterInfo.cs b/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/ValidatableParameterInfo.cs index 58895fc0001..9fba8ab854b 100644 --- a/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/ValidatableParameterInfo.cs +++ b/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/ValidatableParameterInfo.cs @@ -4,12 +4,14 @@ using System.Collections; using System.ComponentModel.DataAnnotations; using System.Diagnostics; +using System.Diagnostics.CodeAnalysis; namespace Microsoft.AspNetCore.Http.Validation; /// /// Contains validation information for a parameter. /// +[Experimental("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")] public abstract class ValidatableParameterInfo : IValidatableInfo { private RequiredAttribute? _requiredAttribute; diff --git a/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/ValidatablePropertyInfo.cs b/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/ValidatablePropertyInfo.cs index f6dfe94e688..167d5450046 100644 --- a/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/ValidatablePropertyInfo.cs +++ b/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/ValidatablePropertyInfo.cs @@ -10,6 +10,7 @@ namespace Microsoft.AspNetCore.Http.Validation; /// /// Contains validation information for a member of a type. /// +[Experimental("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")] public abstract class ValidatablePropertyInfo : IValidatableInfo { private RequiredAttribute? _requiredAttribute; diff --git a/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/ValidatableTypeAttribute.cs b/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/ValidatableTypeAttribute.cs index 0ea382c59a5..a36402ecc40 100644 --- a/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/ValidatableTypeAttribute.cs +++ b/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/ValidatableTypeAttribute.cs @@ -1,6 +1,8 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Diagnostics.CodeAnalysis; + namespace Microsoft.AspNetCore.Http.Validation; /// @@ -8,6 +10,7 @@ namespace Microsoft.AspNetCore.Http.Validation; /// validations generator. /// [AttributeUsage(AttributeTargets.Class)] +[Experimental("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")] public sealed class ValidatableTypeAttribute : Attribute { } diff --git a/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/ValidatableTypeInfo.cs b/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/ValidatableTypeInfo.cs index a20f0ec8a80..82ae03465f9 100644 --- a/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/ValidatableTypeInfo.cs +++ b/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/ValidatableTypeInfo.cs @@ -11,6 +11,7 @@ namespace Microsoft.AspNetCore.Http.Validation; /// /// Contains validation information for a type. /// +[Experimental("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")] public abstract class ValidatableTypeInfo : IValidatableInfo { private readonly int _membersCount; diff --git a/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/ValidateContext.cs b/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/ValidateContext.cs index a78ca7cabfb..3e02c35a472 100644 --- a/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/ValidateContext.cs +++ b/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/ValidateContext.cs @@ -2,12 +2,14 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.ComponentModel.DataAnnotations; +using System.Diagnostics.CodeAnalysis; namespace Microsoft.AspNetCore.Http.Validation; /// /// Represents the context for validating a validatable object. /// +[Experimental("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")] public sealed class ValidateContext { /// diff --git a/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/ValidationOptions.cs b/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/ValidationOptions.cs index d27ba37eaf1..dc83ce9282a 100644 --- a/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/ValidationOptions.cs +++ b/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/ValidationOptions.cs @@ -19,6 +19,7 @@ public class ValidationOptions /// Source-generated resolvers are typically inserted at the beginning of this list /// to ensure they are checked before any runtime-based resolvers. /// + [Experimental("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")] public IList Resolvers { get; } = []; /// @@ -35,6 +36,7 @@ public class ValidationOptions /// When this method returns, contains the validation information for the specified type, /// if the type was found; otherwise, null. /// true if validation information was found for the specified type; otherwise, false. + [Experimental("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")] public bool TryGetValidatableTypeInfo(Type type, [NotNullWhen(true)] out IValidatableInfo? validatableTypeInfo) { foreach (var resolver in Resolvers) @@ -56,6 +58,7 @@ public bool TryGetValidatableTypeInfo(Type type, [NotNullWhen(true)] out IValida /// When this method returns, contains the validation information for the specified parameter, /// if validation information was found; otherwise, null. /// true if validation information was found for the specified parameter; otherwise, false. + [Experimental("ASP0029", UrlFormat = "https://aka.ms/aspnet/analyzer/{0}")] public bool TryGetValidatableParameterInfo(ParameterInfo parameterInfo, [NotNullWhen(true)] out IValidatableInfo? validatableInfo) { foreach (var resolver in Resolvers) diff --git a/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/ValidationServiceCollectionExtensions.cs b/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/ValidationServiceCollectionExtensions.cs index 77a128842ea..bc4f6a77aba 100644 --- a/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/ValidationServiceCollectionExtensions.cs +++ b/src/aspnetcore/src/Http/Http.Abstractions/src/Validation/ValidationServiceCollectionExtensions.cs @@ -25,7 +25,9 @@ public static IServiceCollection AddValidation(this IServiceCollection services, configureOptions(options); } // Support ParameterInfo resolution at runtime +#pragma warning disable ASP0029 // Type is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed. options.Resolvers.Add(new RuntimeValidatableParameterInfoResolver()); +#pragma warning restore ASP0029 // Type is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed. }); return services; } diff --git a/src/aspnetcore/src/Http/Http.Abstractions/test/Validation/ValidatableInfoResolverTests.cs b/src/aspnetcore/src/Http/Http.Abstractions/test/Validation/ValidatableInfoResolverTests.cs index 6960162a13c..ab197cf6fde 100644 --- a/src/aspnetcore/src/Http/Http.Abstractions/test/Validation/ValidatableInfoResolverTests.cs +++ b/src/aspnetcore/src/Http/Http.Abstractions/test/Validation/ValidatableInfoResolverTests.cs @@ -1,3 +1,5 @@ +#pragma warning disable ASP0029 // Type is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed. + // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. diff --git a/src/aspnetcore/src/Http/Http.Abstractions/test/Validation/ValidatableParameterInfoTests.cs b/src/aspnetcore/src/Http/Http.Abstractions/test/Validation/ValidatableParameterInfoTests.cs index c89f182c92f..e10614b2b19 100644 --- a/src/aspnetcore/src/Http/Http.Abstractions/test/Validation/ValidatableParameterInfoTests.cs +++ b/src/aspnetcore/src/Http/Http.Abstractions/test/Validation/ValidatableParameterInfoTests.cs @@ -1,3 +1,5 @@ +#pragma warning disable ASP0029 // Type is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed. + // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. diff --git a/src/aspnetcore/src/Http/Http.Abstractions/test/Validation/ValidatableTypeInfoTests.cs b/src/aspnetcore/src/Http/Http.Abstractions/test/Validation/ValidatableTypeInfoTests.cs index 2a4c82e704e..98e74bd9d32 100644 --- a/src/aspnetcore/src/Http/Http.Abstractions/test/Validation/ValidatableTypeInfoTests.cs +++ b/src/aspnetcore/src/Http/Http.Abstractions/test/Validation/ValidatableTypeInfoTests.cs @@ -1,3 +1,5 @@ +#pragma warning disable ASP0029 // Type is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed. + // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. diff --git a/src/aspnetcore/src/Http/Http.Extensions/gen/Microsoft.AspNetCore.Http.ValidationsGenerator/Emitters/ValidationsGenerator.Emitter.cs b/src/aspnetcore/src/Http/Http.Extensions/gen/Microsoft.AspNetCore.Http.ValidationsGenerator/Emitters/ValidationsGenerator.Emitter.cs index 73a0271eee8..b929819c591 100644 --- a/src/aspnetcore/src/Http/Http.Extensions/gen/Microsoft.AspNetCore.Http.ValidationsGenerator/Emitters/ValidationsGenerator.Emitter.cs +++ b/src/aspnetcore/src/Http/Http.Extensions/gen/Microsoft.AspNetCore.Http.ValidationsGenerator/Emitters/ValidationsGenerator.Emitter.cs @@ -37,6 +37,7 @@ private static string Emit(InterceptableLocation addValidation, ImmutableArray //------------------------------------------------------------------------------ #nullable enable +#pragma warning disable ASP0029 namespace System.Runtime.CompilerServices { diff --git a/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/ValidationsGenerator.ValidatableType.cs b/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/ValidationsGenerator.ValidatableType.cs index 4628c957400..0ddc3613249 100644 --- a/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/ValidationsGenerator.ValidatableType.cs +++ b/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/ValidationsGenerator.ValidatableType.cs @@ -1,3 +1,5 @@ +#pragma warning disable ASP0029 // Type is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed. + // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. @@ -12,6 +14,8 @@ public partial class ValidationsGeneratorTests : ValidationsGeneratorTestBase public async Task CanValidateTypesWithAttribute() { var source = """ +#pragma warning disable ASP0029 + using System; using System.ComponentModel.DataAnnotations; using System.Collections.Generic; @@ -374,4 +378,4 @@ async Task ValidInputProducesNoWarnings(IValidatableInfo validatableInfo) } }); } -} \ No newline at end of file +} diff --git a/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/ValidationsGeneratorTestBase.cs b/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/ValidationsGeneratorTestBase.cs index 2310c2c3aaf..bb1cd12470d 100644 --- a/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/ValidationsGeneratorTestBase.cs +++ b/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/ValidationsGeneratorTestBase.cs @@ -1,3 +1,5 @@ +#pragma warning disable ASP0029 // Type is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed. + // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. diff --git a/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidateComplexTypes#ValidatableInfoResolver.g.verified.cs b/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidateComplexTypes#ValidatableInfoResolver.g.verified.cs index 16e4957dd2a..046365541ef 100644 --- a/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidateComplexTypes#ValidatableInfoResolver.g.verified.cs +++ b/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidateComplexTypes#ValidatableInfoResolver.g.verified.cs @@ -9,6 +9,7 @@ // //------------------------------------------------------------------------------ #nullable enable +#pragma warning disable ASP0029 namespace System.Runtime.CompilerServices { diff --git a/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidateIValidatableObject#ValidatableInfoResolver.g.verified.cs b/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidateIValidatableObject#ValidatableInfoResolver.g.verified.cs index 82b35b51711..5babdce85f2 100644 --- a/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidateIValidatableObject#ValidatableInfoResolver.g.verified.cs +++ b/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidateIValidatableObject#ValidatableInfoResolver.g.verified.cs @@ -9,6 +9,7 @@ // //------------------------------------------------------------------------------ #nullable enable +#pragma warning disable ASP0029 namespace System.Runtime.CompilerServices { diff --git a/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidateParameters#ValidatableInfoResolver.g.verified.cs b/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidateParameters#ValidatableInfoResolver.g.verified.cs index 2c1052c8f20..ddd57a0dc8b 100644 --- a/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidateParameters#ValidatableInfoResolver.g.verified.cs +++ b/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidateParameters#ValidatableInfoResolver.g.verified.cs @@ -9,6 +9,7 @@ // //------------------------------------------------------------------------------ #nullable enable +#pragma warning disable ASP0029 namespace System.Runtime.CompilerServices { diff --git a/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidatePolymorphicTypes#ValidatableInfoResolver.g.verified.cs b/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidatePolymorphicTypes#ValidatableInfoResolver.g.verified.cs index 9549ef31387..d435bf7996f 100644 --- a/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidatePolymorphicTypes#ValidatableInfoResolver.g.verified.cs +++ b/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidatePolymorphicTypes#ValidatableInfoResolver.g.verified.cs @@ -9,6 +9,7 @@ // //------------------------------------------------------------------------------ #nullable enable +#pragma warning disable ASP0029 namespace System.Runtime.CompilerServices { diff --git a/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidateRecordTypes#ValidatableInfoResolver.g.verified.cs b/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidateRecordTypes#ValidatableInfoResolver.g.verified.cs index 4c0a1096349..2a5085a534a 100644 --- a/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidateRecordTypes#ValidatableInfoResolver.g.verified.cs +++ b/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidateRecordTypes#ValidatableInfoResolver.g.verified.cs @@ -9,6 +9,7 @@ // //------------------------------------------------------------------------------ #nullable enable +#pragma warning disable ASP0029 namespace System.Runtime.CompilerServices { diff --git a/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidateRecursiveTypes#ValidatableInfoResolver.g.verified.cs b/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidateRecursiveTypes#ValidatableInfoResolver.g.verified.cs index 3b04d8843a8..7fb61484070 100644 --- a/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidateRecursiveTypes#ValidatableInfoResolver.g.verified.cs +++ b/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidateRecursiveTypes#ValidatableInfoResolver.g.verified.cs @@ -9,6 +9,7 @@ // //------------------------------------------------------------------------------ #nullable enable +#pragma warning disable ASP0029 namespace System.Runtime.CompilerServices { diff --git a/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidateTypeWithParsableProperties#ValidatableInfoResolver.g.verified.cs b/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidateTypeWithParsableProperties#ValidatableInfoResolver.g.verified.cs index 7eea5401c9c..03f94852185 100644 --- a/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidateTypeWithParsableProperties#ValidatableInfoResolver.g.verified.cs +++ b/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidateTypeWithParsableProperties#ValidatableInfoResolver.g.verified.cs @@ -9,6 +9,7 @@ // //------------------------------------------------------------------------------ #nullable enable +#pragma warning disable ASP0029 namespace System.Runtime.CompilerServices { diff --git a/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidateTypesWithAttribute#ValidatableInfoResolver.g.verified.cs b/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidateTypesWithAttribute#ValidatableInfoResolver.g.verified.cs index aa1862d646c..75c87732a0d 100644 --- a/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidateTypesWithAttribute#ValidatableInfoResolver.g.verified.cs +++ b/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.CanValidateTypesWithAttribute#ValidatableInfoResolver.g.verified.cs @@ -9,6 +9,7 @@ // //------------------------------------------------------------------------------ #nullable enable +#pragma warning disable ASP0029 namespace System.Runtime.CompilerServices { diff --git a/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.DoesNotEmitForExemptTypes#ValidatableInfoResolver.g.verified.cs b/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.DoesNotEmitForExemptTypes#ValidatableInfoResolver.g.verified.cs index d67637d110a..c5a4eb4152b 100644 --- a/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.DoesNotEmitForExemptTypes#ValidatableInfoResolver.g.verified.cs +++ b/src/aspnetcore/src/Http/Http.Extensions/test/ValidationsGenerator/snapshots/ValidationsGeneratorTests.DoesNotEmitForExemptTypes#ValidatableInfoResolver.g.verified.cs @@ -9,6 +9,7 @@ // //------------------------------------------------------------------------------ #nullable enable +#pragma warning disable ASP0029 namespace System.Runtime.CompilerServices { diff --git a/src/aspnetcore/src/Http/Http/perf/Microbenchmarks/ValidatableTypesBenchmark.cs b/src/aspnetcore/src/Http/Http/perf/Microbenchmarks/ValidatableTypesBenchmark.cs index 75abf445ec3..973d22ed067 100644 --- a/src/aspnetcore/src/Http/Http/perf/Microbenchmarks/ValidatableTypesBenchmark.cs +++ b/src/aspnetcore/src/Http/Http/perf/Microbenchmarks/ValidatableTypesBenchmark.cs @@ -1,3 +1,5 @@ +#pragma warning disable ASP0029 // Type is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed. + // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. diff --git a/src/aspnetcore/src/Http/Routing/src/RouteEndpointDataSource.cs b/src/aspnetcore/src/Http/Routing/src/RouteEndpointDataSource.cs index 59bcd699a59..cbdac85e3e8 100644 --- a/src/aspnetcore/src/Http/Routing/src/RouteEndpointDataSource.cs +++ b/src/aspnetcore/src/Http/Routing/src/RouteEndpointDataSource.cs @@ -239,7 +239,9 @@ private RouteEndpointBuilder CreateRouteEndpointBuilder( // Initialize this route endpoint builder with validation convention if validation options // are registered and validation is not disabled on the endpoint. +#pragma warning disable ASP0029 // Type is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed. var hasValidationResolvers = builder.ApplicationServices.GetService>() is { Value: { } options } && options.Resolvers.Count > 0; +#pragma warning restore ASP0029 // Type is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed. var hasDisableValidationMetadata = builder.Metadata.OfType().FirstOrDefault() is not null; if (hasValidationResolvers && !hasDisableValidationMetadata) { diff --git a/src/aspnetcore/src/Http/Routing/src/ValidationEndpointFilterFactory.cs b/src/aspnetcore/src/Http/Routing/src/ValidationEndpointFilterFactory.cs index 0e75ea640fa..bd9b841fd55 100644 --- a/src/aspnetcore/src/Http/Routing/src/ValidationEndpointFilterFactory.cs +++ b/src/aspnetcore/src/Http/Routing/src/ValidationEndpointFilterFactory.cs @@ -1,3 +1,5 @@ +#pragma warning disable ASP0029 // Type is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed. + // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. diff --git a/src/aspnetcore/src/Http/samples/MinimalValidationSample/Program.cs b/src/aspnetcore/src/Http/samples/MinimalValidationSample/Program.cs index 91be84ed097..9afcebfb2b0 100644 --- a/src/aspnetcore/src/Http/samples/MinimalValidationSample/Program.cs +++ b/src/aspnetcore/src/Http/samples/MinimalValidationSample/Program.cs @@ -26,7 +26,9 @@ app.Run(); // Define validatable types with the ValidatableType attribute +#pragma warning disable ASP0029 // Type is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed. [ValidatableType] +#pragma warning restore ASP0029 // Type is for evaluation purposes only and is subject to change or removal in future updates. Suppress this diagnostic to proceed. public class Customer { [Required] diff --git a/src/aspnetcore/src/Installers/Windows/WindowsHostingBundle/Product.targets b/src/aspnetcore/src/Installers/Windows/WindowsHostingBundle/Product.targets index 192e36b9583..c4c54cae812 100644 --- a/src/aspnetcore/src/Installers/Windows/WindowsHostingBundle/Product.targets +++ b/src/aspnetcore/src/Installers/Windows/WindowsHostingBundle/Product.targets @@ -7,31 +7,31 @@ - + DotNetRedistLtsInstallerx64 - + DotNetRedistLtsInstallerx86 - + DotNetRedistLtsInstallerarm64 - + DotNetRedistHostInstallerx64 - + DotNetRedistHostInstallerx86 - + DotNetRedistHostInstallerarm64 - + DotNetRedistHostfxrInstallerx64 - + DotNetRedistHostfxrInstallerx86 - + DotNetRedistHostfxrInstallerarm64 @@ -43,32 +43,32 @@ - - dotnet-runtime-$(MicrosoftNETCoreAppRuntimeVersion)-win-x64.msi + + dotnet-runtime-$(MicrosoftNETCoreAppRefVersion)-win-x64.msi - - dotnet-runtime-$(MicrosoftNETCoreAppRuntimeVersion)-win-x86.msi + + dotnet-runtime-$(MicrosoftNETCoreAppRefVersion)-win-x86.msi - - dotnet-runtime-$(MicrosoftNETCoreAppRuntimeVersion)-win-arm64.msi + + dotnet-runtime-$(MicrosoftNETCoreAppRefVersion)-win-arm64.msi - - dotnet-host-$(MicrosoftNETCoreAppRuntimeVersion)-win-x64.msi + + dotnet-host-$(MicrosoftNETCoreAppRefVersion)-win-x64.msi - - dotnet-host-$(MicrosoftNETCoreAppRuntimeVersion)-win-x86.msi + + dotnet-host-$(MicrosoftNETCoreAppRefVersion)-win-x86.msi - - dotnet-host-$(MicrosoftNETCoreAppRuntimeVersion)-win-arm64.msi + + dotnet-host-$(MicrosoftNETCoreAppRefVersion)-win-arm64.msi - - dotnet-hostfxr-$(MicrosoftNETCoreAppRuntimeVersion)-win-x64.msi + + dotnet-hostfxr-$(MicrosoftNETCoreAppRefVersion)-win-x64.msi - - dotnet-hostfxr-$(MicrosoftNETCoreAppRuntimeVersion)-win-x86.msi + + dotnet-hostfxr-$(MicrosoftNETCoreAppRefVersion)-win-x86.msi - - dotnet-hostfxr-$(MicrosoftNETCoreAppRuntimeVersion)-win-arm64.msi + + dotnet-hostfxr-$(MicrosoftNETCoreAppRefVersion)-win-arm64.msi diff --git a/src/aspnetcore/src/JSInterop/Microsoft.JSInterop/src/IJSInProcessObjectReference.cs b/src/aspnetcore/src/JSInterop/Microsoft.JSInterop/src/IJSInProcessObjectReference.cs index 39f376a1195..d9813f0ddcd 100644 --- a/src/aspnetcore/src/JSInterop/Microsoft.JSInterop/src/IJSInProcessObjectReference.cs +++ b/src/aspnetcore/src/JSInterop/Microsoft.JSInterop/src/IJSInProcessObjectReference.cs @@ -28,7 +28,8 @@ public interface IJSInProcessObjectReference : IJSObjectReference, IDisposable /// JSON-serializable arguments. /// An instance that represents the created JS object. [RequiresUnreferencedCode("JSON serialization and deserialization might require types that cannot be statically analyzed.")] - IJSInProcessObjectReference InvokeNew(string identifier, object?[]? args); + IJSInProcessObjectReference InvokeNew(string identifier, object?[]? args) + => throw new NotImplementedException(); /// /// Reads the value of the specified JavaScript property synchronously. @@ -37,7 +38,8 @@ public interface IJSInProcessObjectReference : IJSObjectReference, IDisposable /// An identifier for the property to read. For example, the value "someScope.someProp" will read the value of the property window.someScope.someProp. /// An instance of obtained by JSON-deserializing the return value. [RequiresUnreferencedCode("JSON serialization and deserialization might require types that cannot be statically analyzed.")] - TValue GetValue<[DynamicallyAccessedMembers(JsonSerialized)] TValue>(string identifier); + TValue GetValue<[DynamicallyAccessedMembers(JsonSerialized)] TValue>(string identifier) + => throw new NotImplementedException(); /// /// Updates the value of the specified JavaScript property synchronously. If the property is not defined on the target object, it will be created. @@ -46,5 +48,6 @@ public interface IJSInProcessObjectReference : IJSObjectReference, IDisposable /// An identifier for the property to set. For example, the value "someScope.someProp" will update the property window.someScope.someProp. /// JSON-serializable value. [RequiresUnreferencedCode("JSON serialization and deserialization might require types that cannot be statically analyzed.")] - void SetValue<[DynamicallyAccessedMembers(JsonSerialized)] TValue>(string identifier, TValue value); + void SetValue<[DynamicallyAccessedMembers(JsonSerialized)] TValue>(string identifier, TValue value) + => throw new NotImplementedException(); } diff --git a/src/aspnetcore/src/JSInterop/Microsoft.JSInterop/src/IJSInProcessRuntime.cs b/src/aspnetcore/src/JSInterop/Microsoft.JSInterop/src/IJSInProcessRuntime.cs index ed1ea479c8d..cf3954ce026 100644 --- a/src/aspnetcore/src/JSInterop/Microsoft.JSInterop/src/IJSInProcessRuntime.cs +++ b/src/aspnetcore/src/JSInterop/Microsoft.JSInterop/src/IJSInProcessRuntime.cs @@ -28,7 +28,8 @@ public interface IJSInProcessRuntime : IJSRuntime /// JSON-serializable arguments. /// An instance that represents the created JS object. [RequiresUnreferencedCode("JSON serialization and deserialization might require types that cannot be statically analyzed.")] - IJSInProcessObjectReference InvokeNew(string identifier, params object?[]? args); + IJSInProcessObjectReference InvokeNew(string identifier, params object?[]? args) + => throw new NotImplementedException(); /// /// Reads the value of the specified JavaScript property synchronously. @@ -37,7 +38,8 @@ public interface IJSInProcessRuntime : IJSRuntime /// An identifier for the property to read. For example, the value "someScope.someProp" will read the value of the property window.someScope.someProp. /// An instance of obtained by JSON-deserializing the return value. [RequiresUnreferencedCode("JSON serialization and deserialization might require types that cannot be statically analyzed.")] - TValue GetValue<[DynamicallyAccessedMembers(JsonSerialized)] TValue>(string identifier); + TValue GetValue<[DynamicallyAccessedMembers(JsonSerialized)] TValue>(string identifier) + => throw new NotImplementedException(); /// /// Updates the value of the specified JavaScript property synchronously. If the property is not defined on the target object, it will be created. @@ -46,5 +48,6 @@ public interface IJSInProcessRuntime : IJSRuntime /// An identifier for the property to set. For example, the value "someScope.someProp" will update the property window.someScope.someProp. /// JSON-serializable value. [RequiresUnreferencedCode("JSON serialization and deserialization might require types that cannot be statically analyzed.")] - void SetValue<[DynamicallyAccessedMembers(JsonSerialized)] TValue>(string identifier, TValue value); + void SetValue<[DynamicallyAccessedMembers(JsonSerialized)] TValue>(string identifier, TValue value) + => throw new NotImplementedException(); } diff --git a/src/aspnetcore/src/JSInterop/Microsoft.JSInterop/src/IJSObjectReference.cs b/src/aspnetcore/src/JSInterop/Microsoft.JSInterop/src/IJSObjectReference.cs index 30df4c46d23..cb8cc03329d 100644 --- a/src/aspnetcore/src/JSInterop/Microsoft.JSInterop/src/IJSObjectReference.cs +++ b/src/aspnetcore/src/JSInterop/Microsoft.JSInterop/src/IJSObjectReference.cs @@ -43,7 +43,8 @@ public interface IJSObjectReference : IAsyncDisposable /// An identifier for the constructor function to invoke. For example, the value "someScope.SomeClass" will invoke the constructor someScope.SomeClass on the target instance. /// JSON-serializable arguments. /// An instance that represents the created JS object. - ValueTask InvokeNewAsync(string identifier, object?[]? args); + ValueTask InvokeNewAsync(string identifier, object?[]? args) + => throw new NotImplementedException(); /// /// Invokes the specified JavaScript constructor function asynchronously. The function is invoked with the new operator. @@ -55,7 +56,8 @@ public interface IJSObjectReference : IAsyncDisposable /// /// JSON-serializable arguments. /// An instance that represents the created JS object. - ValueTask InvokeNewAsync(string identifier, CancellationToken cancellationToken, object?[]? args); + ValueTask InvokeNewAsync(string identifier, CancellationToken cancellationToken, object?[]? args) + => throw new NotImplementedException(); /// /// Reads the value of the specified JavaScript property asynchronously. @@ -63,7 +65,8 @@ public interface IJSObjectReference : IAsyncDisposable /// The JSON-serializable return type. /// An identifier for the property to read. For example, the value "someScope.someProp" will read the value of the property someScope.someProp on the target instance. /// An instance of obtained by JSON-deserializing the return value. - ValueTask GetValueAsync<[DynamicallyAccessedMembers(JsonSerialized)] TValue>(string identifier); + ValueTask GetValueAsync<[DynamicallyAccessedMembers(JsonSerialized)] TValue>(string identifier) + => throw new NotImplementedException(); /// /// Reads the value of the specified JavaScript property asynchronously. @@ -75,7 +78,8 @@ public interface IJSObjectReference : IAsyncDisposable /// () from being applied. /// /// An instance of obtained by JSON-deserializing the return value. - ValueTask GetValueAsync<[DynamicallyAccessedMembers(JsonSerialized)] TValue>(string identifier, CancellationToken cancellationToken); + ValueTask GetValueAsync<[DynamicallyAccessedMembers(JsonSerialized)] TValue>(string identifier, CancellationToken cancellationToken) + => throw new NotImplementedException(); /// /// Updates the value of the specified JavaScript property asynchronously. If the property is not defined on the target object, it will be created. @@ -84,7 +88,8 @@ public interface IJSObjectReference : IAsyncDisposable /// An identifier for the property to set. For example, the value "someScope.someProp" will update the property someScope.someProp on the target instance. /// JSON-serializable value. /// A that represents the asynchronous invocation operation. - ValueTask SetValueAsync<[DynamicallyAccessedMembers(JsonSerialized)] TValue>(string identifier, TValue value); + ValueTask SetValueAsync<[DynamicallyAccessedMembers(JsonSerialized)] TValue>(string identifier, TValue value) + => throw new NotImplementedException(); /// /// Updates the value of the specified JavaScript property asynchronously. If the property is not defined on the target object, it will be created. @@ -97,5 +102,6 @@ public interface IJSObjectReference : IAsyncDisposable /// () from being applied. /// /// A that represents the asynchronous invocation operation. - ValueTask SetValueAsync<[DynamicallyAccessedMembers(JsonSerialized)] TValue>(string identifier, TValue value, CancellationToken cancellationToken); + ValueTask SetValueAsync<[DynamicallyAccessedMembers(JsonSerialized)] TValue>(string identifier, TValue value, CancellationToken cancellationToken) + => throw new NotImplementedException(); } diff --git a/src/aspnetcore/src/JSInterop/Microsoft.JSInterop/src/IJSRuntime.cs b/src/aspnetcore/src/JSInterop/Microsoft.JSInterop/src/IJSRuntime.cs index 0050c357c49..b897245c0da 100644 --- a/src/aspnetcore/src/JSInterop/Microsoft.JSInterop/src/IJSRuntime.cs +++ b/src/aspnetcore/src/JSInterop/Microsoft.JSInterop/src/IJSRuntime.cs @@ -43,7 +43,8 @@ public interface IJSRuntime /// An identifier for the constructor function to invoke. For example, the value "someScope.SomeClass" will invoke the constructor window.someScope.SomeClass. /// JSON-serializable arguments. /// An instance that represents the created JS object. - ValueTask InvokeNewAsync(string identifier, object?[]? args); + ValueTask InvokeNewAsync(string identifier, object?[]? args) + => throw new NotImplementedException(); /// /// Invokes the specified JavaScript constructor function asynchronously. The function is invoked with the new operator. @@ -55,7 +56,8 @@ public interface IJSRuntime /// /// JSON-serializable arguments. /// An instance that represents the created JS object. - ValueTask InvokeNewAsync(string identifier, CancellationToken cancellationToken, object?[]? args); + ValueTask InvokeNewAsync(string identifier, CancellationToken cancellationToken, object?[]? args) + => throw new NotImplementedException(); /// /// Reads the value of the specified JavaScript property asynchronously. @@ -63,7 +65,8 @@ public interface IJSRuntime /// The JSON-serializable return type. /// An identifier for the property to read. For example, the value "someScope.someProp" will read the value of the property window.someScope.someProp. /// An instance of obtained by JSON-deserializing the return value. - ValueTask GetValueAsync<[DynamicallyAccessedMembers(JsonSerialized)] TValue>(string identifier); + ValueTask GetValueAsync<[DynamicallyAccessedMembers(JsonSerialized)] TValue>(string identifier) + => throw new NotImplementedException(); /// /// Reads the value of the specified JavaScript property asynchronously. @@ -75,7 +78,8 @@ public interface IJSRuntime /// () from being applied. /// /// An instance of obtained by JSON-deserializing the return value. - ValueTask GetValueAsync<[DynamicallyAccessedMembers(JsonSerialized)] TValue>(string identifier, CancellationToken cancellationToken); + ValueTask GetValueAsync<[DynamicallyAccessedMembers(JsonSerialized)] TValue>(string identifier, CancellationToken cancellationToken) + => throw new NotImplementedException(); /// /// Updates the value of the specified JavaScript property asynchronously. If the property is not defined on the target object, it will be created. @@ -84,7 +88,8 @@ public interface IJSRuntime /// An identifier for the property to set. For example, the value "someScope.someProp" will update the property window.someScope.someProp. /// JSON-serializable value. /// A that represents the asynchronous invocation operation. - ValueTask SetValueAsync<[DynamicallyAccessedMembers(JsonSerialized)] TValue>(string identifier, TValue value); + ValueTask SetValueAsync<[DynamicallyAccessedMembers(JsonSerialized)] TValue>(string identifier, TValue value) + => throw new NotImplementedException(); /// /// Updates the value of the specified JavaScript property asynchronously. If the property is not defined on the target object, it will be created. @@ -97,5 +102,6 @@ public interface IJSRuntime /// () from being applied. /// /// A that represents the asynchronous invocation operation. - ValueTask SetValueAsync<[DynamicallyAccessedMembers(JsonSerialized)] TValue>(string identifier, TValue value, CancellationToken cancellationToken); + ValueTask SetValueAsync<[DynamicallyAccessedMembers(JsonSerialized)] TValue>(string identifier, TValue value, CancellationToken cancellationToken) + => throw new NotImplementedException(); } diff --git a/src/aspnetcore/src/JSInterop/Microsoft.JSInterop/src/JSInProcessRuntime.cs b/src/aspnetcore/src/JSInterop/Microsoft.JSInterop/src/JSInProcessRuntime.cs index 5c8a73b29cd..2bcc5fa729b 100644 --- a/src/aspnetcore/src/JSInterop/Microsoft.JSInterop/src/JSInProcessRuntime.cs +++ b/src/aspnetcore/src/JSInterop/Microsoft.JSInterop/src/JSInProcessRuntime.cs @@ -81,7 +81,8 @@ public IJSInProcessObjectReference InvokeNew(string identifier, params object?[] => InvokeJS(identifier, argsJson, JSCallResultType.Default, WindowObjectId); /// - /// Performs a synchronous function invocation. + /// Performs a synchronous function invocation with the call type . + /// For more configuration options, use the overload . /// /// The identifier for the function to invoke. /// A JSON representation of the arguments. @@ -95,5 +96,8 @@ public IJSInProcessObjectReference InvokeNew(string identifier, params object?[] /// /// Configuration of the interop call. /// A JSON representation of the result. - protected abstract string? InvokeJS(in JSInvocationInfo invocationInfo); + protected virtual string? InvokeJS(in JSInvocationInfo invocationInfo) + { + return InvokeJS(invocationInfo.Identifier, invocationInfo.ArgsJson, invocationInfo.ResultType, invocationInfo.TargetInstanceId); + } } diff --git a/src/aspnetcore/src/JSInterop/Microsoft.JSInterop/src/JSRuntime.cs b/src/aspnetcore/src/JSInterop/Microsoft.JSInterop/src/JSRuntime.cs index a970c790097..f91746f99f5 100644 --- a/src/aspnetcore/src/JSInterop/Microsoft.JSInterop/src/JSRuntime.cs +++ b/src/aspnetcore/src/JSInterop/Microsoft.JSInterop/src/JSRuntime.cs @@ -192,7 +192,8 @@ protected virtual void BeginInvokeJS(long taskId, string identifier, [StringSynt => BeginInvokeJS(taskId, identifier, argsJson, JSCallResultType.Default, WindowObjectId); /// - /// Begins an asynchronous function invocation. + /// Begins an asynchronous function invocation with the call type . + /// For more configuration options, use the overload . /// /// The identifier for the function invocation, or zero if no async callback is required. /// The identifier for the function to invoke. @@ -205,7 +206,10 @@ protected virtual void BeginInvokeJS(long taskId, string identifier, [StringSynt /// Begins an asynchronous function invocation. /// /// Configuration of the interop call from .NET to JavaScript. - protected abstract void BeginInvokeJS(in JSInvocationInfo invocationInfo); + protected virtual void BeginInvokeJS(in JSInvocationInfo invocationInfo) + { + BeginInvokeJS(invocationInfo.AsyncHandle, invocationInfo.Identifier, invocationInfo.ArgsJson, invocationInfo.ResultType, invocationInfo.TargetInstanceId); + } /// /// Completes an async JS interop call from JavaScript to .NET diff --git a/src/aspnetcore/src/JSInterop/Microsoft.JSInterop/src/PublicAPI.Unshipped.txt b/src/aspnetcore/src/JSInterop/Microsoft.JSInterop/src/PublicAPI.Unshipped.txt index 3270d74b01a..b6c32d82699 100644 --- a/src/aspnetcore/src/JSInterop/Microsoft.JSInterop/src/PublicAPI.Unshipped.txt +++ b/src/aspnetcore/src/JSInterop/Microsoft.JSInterop/src/PublicAPI.Unshipped.txt @@ -1,6 +1,4 @@ #nullable enable -abstract Microsoft.JSInterop.JSInProcessRuntime.InvokeJS(in Microsoft.JSInterop.Infrastructure.JSInvocationInfo invocationInfo) -> string? -abstract Microsoft.JSInterop.JSRuntime.BeginInvokeJS(in Microsoft.JSInterop.Infrastructure.JSInvocationInfo invocationInfo) -> void Microsoft.JSInterop.IJSInProcessObjectReference.GetValue(string! identifier) -> TValue Microsoft.JSInterop.IJSInProcessObjectReference.InvokeNew(string! identifier, object?[]? args) -> Microsoft.JSInterop.IJSInProcessObjectReference! Microsoft.JSInterop.IJSInProcessObjectReference.SetValue(string! identifier, TValue value) -> void @@ -62,3 +60,5 @@ static Microsoft.JSInterop.JSObjectReferenceExtensions.InvokeNewAsync(this Micro static Microsoft.JSInterop.JSRuntimeExtensions.InvokeNewAsync(this Microsoft.JSInterop.IJSRuntime! jsRuntime, string! identifier, params object?[]? args) -> System.Threading.Tasks.ValueTask static Microsoft.JSInterop.JSRuntimeExtensions.InvokeNewAsync(this Microsoft.JSInterop.IJSRuntime! jsRuntime, string! identifier, System.Threading.CancellationToken cancellationToken, object?[]? args) -> System.Threading.Tasks.ValueTask static Microsoft.JSInterop.JSRuntimeExtensions.InvokeNewAsync(this Microsoft.JSInterop.IJSRuntime! jsRuntime, string! identifier, System.TimeSpan timeout, object?[]? args) -> System.Threading.Tasks.ValueTask +virtual Microsoft.JSInterop.JSInProcessRuntime.InvokeJS(in Microsoft.JSInterop.Infrastructure.JSInvocationInfo invocationInfo) -> string? +virtual Microsoft.JSInterop.JSRuntime.BeginInvokeJS(in Microsoft.JSInterop.Infrastructure.JSInvocationInfo invocationInfo) -> void diff --git a/src/aspnetcore/src/Middleware/RequestDecompression/src/RequestDecompressionMiddleware.cs b/src/aspnetcore/src/Middleware/RequestDecompression/src/RequestDecompressionMiddleware.cs index 71cd050492c..3f7c99368e8 100644 --- a/src/aspnetcore/src/Middleware/RequestDecompression/src/RequestDecompressionMiddleware.cs +++ b/src/aspnetcore/src/Middleware/RequestDecompression/src/RequestDecompressionMiddleware.cs @@ -62,7 +62,9 @@ private async Task InvokeCore(HttpContext context, Stream decompressionStream) context.GetEndpoint()?.Metadata?.GetMetadata()?.MaxRequestBodySize ?? context.Features.Get()?.MaxRequestBodySize; - context.Request.Body = new SizeLimitedStream(decompressionStream, sizeLimit); + context.Request.Body = new SizeLimitedStream(decompressionStream, sizeLimit, static (long sizeLimit) => throw new BadHttpRequestException( + $"The decompressed request body is larger than the request body size limit {sizeLimit}.", + StatusCodes.Status413PayloadTooLarge)); await _next(context); } finally diff --git a/src/aspnetcore/src/Middleware/RequestDecompression/test/RequestDecompressionMiddlewareTests.cs b/src/aspnetcore/src/Middleware/RequestDecompression/test/RequestDecompressionMiddlewareTests.cs index 0a612fca853..54e0c685adc 100644 --- a/src/aspnetcore/src/Middleware/RequestDecompression/test/RequestDecompressionMiddlewareTests.cs +++ b/src/aspnetcore/src/Middleware/RequestDecompression/test/RequestDecompressionMiddlewareTests.cs @@ -499,8 +499,8 @@ public async Task Endpoint_HasRequestSizeLimit_UsedForRequest(bool exceedsLimit) if (exceedsLimit) { Assert.NotNull(exception); - Assert.IsAssignableFrom(exception); - Assert.Equal("The maximum number of bytes have been read.", exception.Message); + Assert.IsAssignableFrom(exception); + Assert.Equal(StatusCodes.Status413PayloadTooLarge, ((BadHttpRequestException)exception).StatusCode); } else { @@ -583,8 +583,8 @@ public async Task Feature_HasRequestSizeLimit_UsedForRequest(bool exceedsLimit) if (exceedsLimit) { Assert.NotNull(exception); - Assert.IsAssignableFrom(exception); - Assert.Equal("The maximum number of bytes have been read.", exception.Message); + Assert.IsAssignableFrom(exception); + Assert.Equal(StatusCodes.Status413PayloadTooLarge, ((BadHttpRequestException)exception).StatusCode); } else { diff --git a/src/aspnetcore/src/ProjectTemplates/README.md b/src/aspnetcore/src/ProjectTemplates/README.md index 9fb481dee3e..7d34c1a26a2 100644 --- a/src/aspnetcore/src/ProjectTemplates/README.md +++ b/src/aspnetcore/src/ProjectTemplates/README.md @@ -97,7 +97,7 @@ An entire test project can be configured to skip specific platforms using the `< ```xml - $(HelixQueueArmDebian12); + $(HelixQueueArmDebian); ``` @@ -109,7 +109,7 @@ When tests are run as part of the CI infrastructure, a number of different timeo ##### Helix job timeout -When queuing test jobs to the Helix infrastructure, a timeout value is passed that the entire Helix job must complete within, i.e. that job running on a single queue. This default value is set in [eng\targets\Helix.props](/eng/targets/Helix.props): +When queuing test jobs to the Helix infrastructure, a timeout value is passed that the entire Helix job must complete within, i.e. that job running on a single queue. This default value is set in [eng\targets\Helix.props](/eng/targets/Helix.props): ```xml 00:45:00 diff --git a/src/aspnetcore/src/ProjectTemplates/Web.ProjectTemplates/Microsoft.DotNet.Web.ProjectTemplates.csproj b/src/aspnetcore/src/ProjectTemplates/Web.ProjectTemplates/Microsoft.DotNet.Web.ProjectTemplates.csproj index 01fd5e06eaf..505dff2b9a6 100644 --- a/src/aspnetcore/src/ProjectTemplates/Web.ProjectTemplates/Microsoft.DotNet.Web.ProjectTemplates.csproj +++ b/src/aspnetcore/src/ProjectTemplates/Web.ProjectTemplates/Microsoft.DotNet.Web.ProjectTemplates.csproj @@ -23,7 +23,6 @@ MicrosoftIdentityWebGraphServiceClientVersion=$(MicrosoftIdentityWebGraphServiceClientVersion); MicrosoftIdentityWebUIVersion=$(MicrosoftIdentityWebUIVersion); MicrosoftIdentityWebDownstreamApiVersion=$(MicrosoftIdentityWebDownstreamApiVersion); - MicrosoftNETCoreAppRuntimeVersion=$(MicrosoftNETCoreAppRuntimeVersion); SystemNetHttpJsonVersion=$(SystemNetHttpJsonVersion); MicrosoftGraphVersion=$(MicrosoftGraphVersion); diff --git a/src/aspnetcore/src/ProjectTemplates/test/Templates.Mvc.Tests/Templates.Mvc.Tests.csproj b/src/aspnetcore/src/ProjectTemplates/test/Templates.Mvc.Tests/Templates.Mvc.Tests.csproj index e9371e45210..e4150c38bcd 100644 --- a/src/aspnetcore/src/ProjectTemplates/test/Templates.Mvc.Tests/Templates.Mvc.Tests.csproj +++ b/src/aspnetcore/src/ProjectTemplates/test/Templates.Mvc.Tests/Templates.Mvc.Tests.csproj @@ -27,9 +27,9 @@ - $(HelixQueueArmDebian12); - $(HelixQueueDebian12); - $(HelixQueueMariner); + $(HelixQueueArmDebian); + $(HelixQueueAzureLinux); + $(HelixQueueDebian); $(SkipHelixQueues) diff --git a/src/aspnetcore/src/Shared/SizeLimitedStream.cs b/src/aspnetcore/src/Shared/SizeLimitedStream.cs index 6ee758e57de..4d249a36b36 100644 --- a/src/aspnetcore/src/Shared/SizeLimitedStream.cs +++ b/src/aspnetcore/src/Shared/SizeLimitedStream.cs @@ -1,19 +1,22 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +#nullable enable + internal sealed class SizeLimitedStream : Stream { private readonly Stream _innerStream; private readonly long? _sizeLimit; - + private readonly Action? _handleSizeLimit; private long _totalBytesRead; - public SizeLimitedStream(Stream innerStream, long? sizeLimit) + public SizeLimitedStream(Stream innerStream, long? sizeLimit, Action? handleSizeLimit = null) { ArgumentNullException.ThrowIfNull(innerStream); _innerStream = innerStream; _sizeLimit = sizeLimit; + _handleSizeLimit = handleSizeLimit; } public override bool CanRead => _innerStream.CanRead; @@ -48,7 +51,14 @@ public override int Read(byte[] buffer, int offset, int count) _totalBytesRead += bytesRead; if (_totalBytesRead > _sizeLimit) { - throw new InvalidOperationException("The maximum number of bytes have been read."); + if (_handleSizeLimit != null) + { + _handleSizeLimit(_sizeLimit.Value); + } + else + { + throw new InvalidOperationException("The maximum number of bytes have been read."); + } } return bytesRead; @@ -81,7 +91,14 @@ public override async ValueTask ReadAsync(Memory buffer, Cancellation _totalBytesRead += bytesRead; if (_totalBytesRead > _sizeLimit) { - throw new InvalidOperationException("The maximum number of bytes have been read."); + if (_handleSizeLimit != null) + { + _handleSizeLimit(_sizeLimit.Value); + } + else + { + throw new InvalidOperationException("The maximum number of bytes have been read."); + } } return bytesRead; diff --git a/src/aspnetcore/src/SiteExtensions/LoggingBranch/LB.csproj b/src/aspnetcore/src/SiteExtensions/LoggingBranch/LB.csproj index 09810fa61d3..d3308c748de 100644 --- a/src/aspnetcore/src/SiteExtensions/LoggingBranch/LB.csproj +++ b/src/aspnetcore/src/SiteExtensions/LoggingBranch/LB.csproj @@ -9,7 +9,7 @@ content Microsoft.AspNetCore.AzureAppServices.SiteExtension.$(AspNetCoreMajorMinorVersion).$(TargetArchitecture) $(TargetRuntimeIdentifier) - $(MicrosoftNETCoreAppRuntimeVersion) + $(MicrosoftNETCoreAppRefVersion) AzureSiteExtension true false diff --git a/src/aspnetcore/src/Testing/src/xunit/HelixConstants.cs b/src/aspnetcore/src/Testing/src/xunit/HelixConstants.cs index 47f938e8446..d47d10bdd02 100644 --- a/src/aspnetcore/src/Testing/src/xunit/HelixConstants.cs +++ b/src/aspnetcore/src/Testing/src/xunit/HelixConstants.cs @@ -6,8 +6,8 @@ namespace Microsoft.AspNetCore.InternalTesting; public static class HelixConstants { public const string Windows10Arm64 = "Windows.10.Arm64v8.Open;"; - public const string DebianAmd64 = "Debian.11.Amd64.Open;"; - public const string DebianArm64 = "Debian.11.Arm64.Open;"; - public const string AlmaLinuxAmd64 = "(AlmaLinux.8.Amd64.Open)Ubuntu.1804.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:almalinux-8-helix-amd64;"; + public const string DebianAmd64 = "Debian.13.Amd64.Open;"; + public const string DebianArm64 = "Debian.13.Arm64.Open;"; + public const string AlmaLinuxAmd64 = "(AlmaLinux.9.Amd64.Open)azurelinux.3.Amd64.Open@mcr.microsoft.com/dotnet-buildtools/prereqs:almalinux-9-helix-amd64;"; public const string NativeAotNotSupportedHelixQueues = "All.OSX;All.Linux;Windows.11.Amd64.Client.Open;Windows.11.Amd64.Client;Windows.Amd64.Server2022.Open;Windows.Amd64.Server2022;windows.11.arm64.open;windows.11.arm64"; } diff --git a/src/source-manifest.json b/src/source-manifest.json index b3e39904d2a..d680ead018f 100644 --- a/src/source-manifest.json +++ b/src/source-manifest.json @@ -15,11 +15,11 @@ "commitSha": "5fa9337a84a52e9bd185d04d156eccbdcf592f74" }, { - "packageVersion": "10.0.0-preview.5.25258.6", - "barId": 267506, + "packageVersion": "10.0.0-preview.5.25262.8", + "barId": 267923, "path": "aspnetcore", "remoteUri": "https://github.com/dotnet/aspnetcore", - "commitSha": "1a7ca4a8236d2930b8af2489c0c3a14eb8627544" + "commitSha": "6567ae56ec038ec9b71d3cd6098671da39bf1504" }, { "packageVersion": "0.11.5-alpha.25261.1", From 5d437e96e412b189af05abb84753996de9aa698f Mon Sep 17 00:00:00 2001 From: "dotnet-maestro[bot]" <42748379+dotnet-maestro[bot]@users.noreply.github.com> Date: Tue, 13 May 2025 16:32:17 +0200 Subject: [PATCH 32/32] [main] Source code updates from dotnet/razor (#473) Co-authored-by: dotnet-maestro[bot] Co-authored-by: Jan Jones --- prereqs/git-info/razor.props | 6 +- src/razor/eng/Version.Details.xml | 2 +- .../xlf/Resources.cs.xlf | 6 +- .../xlf/Resources.de.xlf | 6 +- .../xlf/Resources.es.xlf | 6 +- .../xlf/Resources.fr.xlf | 6 +- .../xlf/Resources.it.xlf | 6 +- .../xlf/Resources.ja.xlf | 6 +- .../xlf/Resources.ko.xlf | 6 +- .../xlf/Resources.pl.xlf | 6 +- .../xlf/Resources.pt-BR.xlf | 6 +- .../xlf/Resources.ru.xlf | 6 +- .../xlf/Resources.tr.xlf | 6 +- .../xlf/Resources.zh-Hans.xlf | 6 +- .../xlf/Resources.zh-Hant.xlf | 6 +- .../test/DirectiveTokenEditHandlerTest.cs | 4 +- .../ComponentCodeGenerationTestBase.cs | 144 +++++++++ .../test/Legacy/CodeBlockEditHandlerTest.cs | 3 +- .../TestComponent.ir.txt | 3 +- .../TestComponent.codegen.cs | 93 ++++++ .../TestComponent.ir.txt | 27 ++ .../TestComponent.mappings.txt | 37 +++ .../TestComponent.codegen.cs | 70 ++++ .../TestComponent.ir.txt | 24 ++ .../TestComponent.mappings.txt | 21 ++ .../TestComponent.codegen.cs | 70 ++++ .../TestComponent.ir.txt | 24 ++ .../TestComponent.mappings.txt | 21 ++ .../TestComponent.codegen.cs | 70 ++++ .../TestComponent.ir.txt | 24 ++ .../TestComponent.mappings.txt | 21 ++ .../TestComponent.codegen.cs | 70 ++++ .../TestComponent.ir.txt | 24 ++ .../TestComponent.mappings.txt | 21 ++ .../TestComponent.codegen.cs | 70 ++++ .../TestComponent.ir.txt | 24 ++ .../TestComponent.mappings.txt | 21 ++ .../TestComponent.codegen.cs | 92 ++++++ .../TestComponent.ir.txt | 27 ++ .../TestComponent.mappings.txt | 26 ++ .../TestComponent.codegen.cs | 10 +- .../TestComponent.mappings.txt | 17 +- .../TestComponent.codegen.cs | 10 +- .../TestComponent.mappings.txt | 17 +- .../TestComponent.codegen.cs | 10 +- .../TestComponent.mappings.txt | 17 +- .../TestComponent.codegen.cs | 10 +- .../TestComponent.mappings.txt | 17 +- .../TestComponent.codegen.cs | 10 +- .../TestComponent.mappings.txt | 11 +- .../TestComponent.codegen.cs | 20 +- .../TestComponent.mappings.txt | 16 +- .../TestComponent.codegen.cs | 10 +- .../TestComponent.mappings.txt | 11 +- .../TestComponent.codegen.cs | 10 +- .../TestComponent.mappings.txt | 9 +- .../TestComponent.codegen.cs | 10 +- .../TestComponent.mappings.txt | 9 +- .../TestComponent.codegen.cs | 10 +- .../TestComponent.mappings.txt | 11 +- .../TestComponent.codegen.cs | 10 +- .../TestComponent.mappings.txt | 11 +- .../TestComponent.codegen.cs | 2 +- .../TestComponent.mappings.txt | 2 +- .../TestComponent.codegen.cs | 10 +- .../TestComponent.ir.txt | 3 +- .../TestComponent.mappings.txt | 11 +- .../TestComponent.codegen.cs | 10 +- .../TestComponent.mappings.txt | 11 +- .../TestComponent.codegen.cs | 10 +- .../TestComponent.mappings.txt | 13 +- .../TestComponent.codegen.cs | 10 +- .../TestComponent.mappings.txt | 11 +- .../TestComponent.codegen.cs | 10 +- .../TestComponent.mappings.txt | 13 +- .../TestComponent.codegen.cs | 10 +- .../TestComponent.mappings.txt | 13 +- .../TestComponent.codegen.cs | 18 +- .../TestComponent.mappings.txt | 20 +- .../TestComponent.codegen.cs | 18 +- .../TestComponent.mappings.txt | 16 +- .../TestComponent.codegen.cs | 10 +- .../TestComponent.mappings.txt | 13 +- .../TestComponent.codegen.cs | 10 +- .../TestComponent.mappings.txt | 13 +- .../TestComponent.codegen.cs | 10 +- .../TestComponent.mappings.txt | 15 +- .../TestComponent.codegen.cs | 10 +- .../TestComponent.mappings.txt | 15 +- .../TestComponent.codegen.cs | 10 +- .../TestComponent.mappings.txt | 15 +- .../TestComponent.codegen.cs | 10 +- .../TestComponent.mappings.txt | 15 +- .../TestComponent.codegen.cs | 71 ++++ .../TestComponent.ir.txt | 16 + .../TestComponent.mappings.txt | 37 +++ .../TestComponent.codegen.cs | 52 +++ .../TestComponent.ir.txt | 14 + .../TestComponent.mappings.txt | 21 ++ .../TestComponent.codegen.cs | 52 +++ .../TestComponent.ir.txt | 14 + .../TestComponent.mappings.txt | 21 ++ .../TestComponent.codegen.cs | 52 +++ .../TestComponent.ir.txt | 14 + .../TestComponent.mappings.txt | 21 ++ .../TestComponent.codegen.cs | 52 +++ .../TestComponent.ir.txt | 14 + .../TestComponent.mappings.txt | 21 ++ .../TestComponent.codegen.cs | 52 +++ .../TestComponent.ir.txt | 14 + .../TestComponent.mappings.txt | 21 ++ .../TestComponent.codegen.cs | 72 +++++ .../TestComponent.ir.txt | 17 + .../TestComponent.mappings.txt | 26 ++ .../TestComponent.codegen.cs | 10 +- .../TestComponent.mappings.txt | 9 +- .../TestComponent.codegen.cs | 10 +- .../TestComponent.mappings.txt | 11 +- .../TestComponent.codegen.cs | 36 ++- .../TestComponent.mappings.txt | 32 +- .../TestComponent.codegen.cs | 10 +- .../TestComponent.mappings.txt | 15 +- .../TestComponent.codegen.cs | 10 +- .../TestComponent.mappings.txt | 15 +- .../src/CSharp/CompilerFeatures.cs | 2 - .../src/CSharp/DefaultTypeNameFeature.cs | 102 ------ .../src/CSharp/GenericTypeNameRewriter.cs | 34 +- .../CSharp/GlobalQualifiedTypeNameRewriter.cs | 6 + .../Components/ComponentGenericTypePass.cs | 131 +++++--- .../Components/ComponentRuntimeNodeWriter.cs | 22 +- .../src/Language/Components/TypeNameHelper.cs | 7 + ...faultRazorIntermediateNodeLoweringPhase.cs | 108 ++++--- .../Intermediate/ComponentIntermediateNode.cs | 3 + .../ComponentTypeArgumentIntermediateNode.cs | 17 +- .../Legacy/LegacySyntaxNodeExtensions.cs | 2 +- .../src/Language/Legacy/SpanEditHandler.cs | 27 +- .../Language/Legacy/SpanEditHandlerBuilder.cs | 7 +- .../Language/Legacy/TagHelperBlockRewriter.cs | 20 +- .../Legacy/TagHelperParseTreeRewriter.cs | 3 +- .../Language/Syntax/BaseMarkupEndTagSyntax.cs | 118 +++++++ .../Syntax/BaseMarkupStartTagSyntax.cs | 134 ++++++++ .../Syntax.xml.Internal.Generated.cs | 118 +++++-- .../Generated/Syntax.xml.Syntax.Generated.cs | 222 +++++++++---- .../src/Language/Syntax/GreenNode.cs | 37 +-- .../Language/Syntax/IStartTagSyntaxNode.cs | 15 - .../src/Language/Syntax/MarkupEndTagSyntax.cs | 17 - .../Language/Syntax/MarkupStartTagSyntax.cs | 19 +- .../Syntax/MarkupTagHelperEndTagSyntax.cs | 26 -- .../Syntax/MarkupTagHelperStartTagSyntax.cs | 24 -- .../src/Language/Syntax/Syntax.xml | 94 ++++-- .../Syntax/SyntaxBuilderExtensions.cs | 306 ++++++++++++++++++ .../src/Language/Syntax/SyntaxFactory.cs | 10 + .../src/Language/Syntax/SyntaxListBuilder.cs | 187 ----------- .../Syntax/SyntaxListBuilderExtensions.cs | 49 --- .../Language/Syntax/SyntaxListBuilderOfT.cs | 92 ------ .../Syntax/SyntaxListBuilderPool.Policy.cs | 28 -- .../SyntaxListBuilderPool.PooledBuilder.cs | 35 -- .../Language/Syntax/SyntaxListBuilderPool.cs | 48 --- .../src/Language/Syntax/SyntaxListOfT.cs | 13 +- .../src/Language/Syntax/SyntaxNode.cs | 32 +- .../src/Language/Syntax/SyntaxRewriter.cs | 44 ++- .../src/Language/Syntax/SyntaxUtilities.cs | 278 +++++----------- .../src/Language/TypeNameFeature.cs | 21 -- .../src/Language/TypeNameRewriter.cs | 4 + .../RazorSourceGenerator.Helpers.cs | 3 - ...=> ComponentGenericTypePassParsingTest.cs} | 5 +- .../test/GenericTypeNameRewriterTest.cs | 10 +- ...mentSynchronizer.SynchronizationRequest.cs | 14 +- .../HtmlDocumentSynchronizer.cs | 85 +++-- .../IHtmlDocumentSynchronizer.cs | 2 +- ...omponentAccessibilityCodeActionProvider.cs | 33 +- .../Cohost/HtmlDocumentRemoveListener.cs | 3 +- .../Parsing/RazorSyntaxTreePartialParser.cs | 4 +- .../Endpoints/RazorDocumentClosedEndpoint.cs | 2 +- .../Formatting_NetFx/FormattingTestBase.cs | 1 - .../RazorToolingIntegrationTestBase.cs | 2 - .../LanguageServer/LanguageServerTestBase.cs | 2 - .../Cohost/HtmlDocumentSynchronizerTest.cs | 26 +- .../Indentation/RazorIndentationFactsTest.cs | 9 +- .../IntegrationTests/IntegrationTestBase.cs | 1 - .../PooledObjects/PooledArrayBuilder`1.cs | 71 ++++ src/sdk/src/RazorSdk/Tool/GenerateCommand.cs | 1 - src/source-manifest.json | 6 +- 183 files changed, 3836 insertions(+), 1478 deletions(-) create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentMultipleTypeParamUsage/TestComponent.codegen.cs create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentMultipleTypeParamUsage/TestComponent.ir.txt create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentMultipleTypeParamUsage/TestComponent.mappings.txt create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeParamUsageWithImplicitExpression/TestComponent.codegen.cs create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeParamUsageWithImplicitExpression/TestComponent.ir.txt create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeParamUsageWithImplicitExpression/TestComponent.mappings.txt create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeParamUsageWithImplicitExpression2/TestComponent.codegen.cs create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeParamUsageWithImplicitExpression2/TestComponent.ir.txt create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeParamUsageWithImplicitExpression2/TestComponent.mappings.txt create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsage/TestComponent.codegen.cs create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsage/TestComponent.ir.txt create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsage/TestComponent.mappings.txt create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWhitespace/TestComponent.codegen.cs create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWhitespace/TestComponent.ir.txt create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWhitespace/TestComponent.mappings.txt create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWithGenericType/TestComponent.codegen.cs create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWithGenericType/TestComponent.ir.txt create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWithGenericType/TestComponent.mappings.txt create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWithInference/TestComponent.codegen.cs create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWithInference/TestComponent.ir.txt create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWithInference/TestComponent.mappings.txt create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentRuntimeCodeGenerationTest/GenericComponentMultipleTypeParamUsage/TestComponent.codegen.cs create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentRuntimeCodeGenerationTest/GenericComponentMultipleTypeParamUsage/TestComponent.ir.txt create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentRuntimeCodeGenerationTest/GenericComponentMultipleTypeParamUsage/TestComponent.mappings.txt create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentRuntimeCodeGenerationTest/GenericComponentTypeParamUsageWithImplicitExpression/TestComponent.codegen.cs create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentRuntimeCodeGenerationTest/GenericComponentTypeParamUsageWithImplicitExpression/TestComponent.ir.txt create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentRuntimeCodeGenerationTest/GenericComponentTypeParamUsageWithImplicitExpression/TestComponent.mappings.txt create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentRuntimeCodeGenerationTest/GenericComponentTypeParamUsageWithImplicitExpression2/TestComponent.codegen.cs create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentRuntimeCodeGenerationTest/GenericComponentTypeParamUsageWithImplicitExpression2/TestComponent.ir.txt create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentRuntimeCodeGenerationTest/GenericComponentTypeParamUsageWithImplicitExpression2/TestComponent.mappings.txt create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentRuntimeCodeGenerationTest/GenericComponentTypeUsage/TestComponent.codegen.cs create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentRuntimeCodeGenerationTest/GenericComponentTypeUsage/TestComponent.ir.txt create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentRuntimeCodeGenerationTest/GenericComponentTypeUsage/TestComponent.mappings.txt create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentRuntimeCodeGenerationTest/GenericComponentTypeUsageWhitespace/TestComponent.codegen.cs create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentRuntimeCodeGenerationTest/GenericComponentTypeUsageWhitespace/TestComponent.ir.txt create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentRuntimeCodeGenerationTest/GenericComponentTypeUsageWhitespace/TestComponent.mappings.txt create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentRuntimeCodeGenerationTest/GenericComponentTypeUsageWithGenericType/TestComponent.codegen.cs create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentRuntimeCodeGenerationTest/GenericComponentTypeUsageWithGenericType/TestComponent.ir.txt create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentRuntimeCodeGenerationTest/GenericComponentTypeUsageWithGenericType/TestComponent.mappings.txt create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentRuntimeCodeGenerationTest/GenericComponentTypeUsageWithInference/TestComponent.codegen.cs create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentRuntimeCodeGenerationTest/GenericComponentTypeUsageWithInference/TestComponent.ir.txt create mode 100644 src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentRuntimeCodeGenerationTest/GenericComponentTypeUsageWithInference/TestComponent.mappings.txt delete mode 100644 src/razor/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/CSharp/DefaultTypeNameFeature.cs create mode 100644 src/razor/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/Language/Syntax/BaseMarkupEndTagSyntax.cs create mode 100644 src/razor/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/Language/Syntax/BaseMarkupStartTagSyntax.cs delete mode 100644 src/razor/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/Language/Syntax/IStartTagSyntaxNode.cs delete mode 100644 src/razor/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/Language/Syntax/MarkupTagHelperEndTagSyntax.cs delete mode 100644 src/razor/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/Language/Syntax/MarkupTagHelperStartTagSyntax.cs create mode 100644 src/razor/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/Language/Syntax/SyntaxBuilderExtensions.cs delete mode 100644 src/razor/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/Language/Syntax/SyntaxListBuilder.cs delete mode 100644 src/razor/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/Language/Syntax/SyntaxListBuilderExtensions.cs delete mode 100644 src/razor/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/Language/Syntax/SyntaxListBuilderOfT.cs delete mode 100644 src/razor/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/Language/Syntax/SyntaxListBuilderPool.Policy.cs delete mode 100644 src/razor/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/Language/Syntax/SyntaxListBuilderPool.PooledBuilder.cs delete mode 100644 src/razor/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/Language/Syntax/SyntaxListBuilderPool.cs delete mode 100644 src/razor/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/Language/TypeNameFeature.cs rename src/razor/src/Compiler/Microsoft.CodeAnalysis.Razor/test/{DefaultTypeNameFeatureTest.cs => ComponentGenericTypePassParsingTest.cs} (87%) diff --git a/prereqs/git-info/razor.props b/prereqs/git-info/razor.props index eade1748e80..2db2e207720 100644 --- a/prereqs/git-info/razor.props +++ b/prereqs/git-info/razor.props @@ -1,8 +1,8 @@  - ddcd02f08f9ab3c57598550c15a7ce501341a5dd - 20250507.4 - 10.0.0-preview.25257.4 + c971e1c19e2d56f9d8a396f7a72b245495340bae + 20250512.1 + 10.0.0-preview.25262.1 \ No newline at end of file diff --git a/src/razor/eng/Version.Details.xml b/src/razor/eng/Version.Details.xml index 77986faf489..0fabe455dc6 100644 --- a/src/razor/eng/Version.Details.xml +++ b/src/razor/eng/Version.Details.xml @@ -1,6 +1,6 @@ - + https://github.com/dotnet/roslyn diff --git a/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.cs.xlf b/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.cs.xlf index 1b5f8ac33af..98658e741fc 100644 --- a/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.cs.xlf +++ b/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.cs.xlf @@ -4,17 +4,17 @@ Methods in interfaces inheriting from IRemoteJsonService should not have parameters of type RazorPinnedSolutionInfoWrapper or DocumentId as they are not Json serializable. - Methods in interfaces inheriting from IRemoteJsonService should not have parameters of type RazorPinnedSolutionInfoWrapper or DocumentId as they are not Json serializable. + Metody v rozhraních dědících z IRemoteJsonService by neměly mít parametry typu RazorPinnedSolutionInfoWrapper nebo DocumentId, protože nejsou serializovatelné do formátu JSON. '{0}' parameter in '{1}.{2}' has a parameter of type '{3}' which is not allowed in a Json service - '{0}' parameter in '{1}.{2}' has a parameter of type '{3}' which is not allowed in a Json service + Parametr {0} v {1}.{2} má parametr typu {3}, který není ve službě JSON povolen. Invalid parameter type in IRemoteJsonService method - Invalid parameter type in IRemoteJsonService method + Neplatný typ parametru v metodě IRemoteJsonService diff --git a/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.de.xlf b/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.de.xlf index abb6cc29121..7cfe04c1c41 100644 --- a/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.de.xlf +++ b/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.de.xlf @@ -4,17 +4,17 @@ Methods in interfaces inheriting from IRemoteJsonService should not have parameters of type RazorPinnedSolutionInfoWrapper or DocumentId as they are not Json serializable. - Methods in interfaces inheriting from IRemoteJsonService should not have parameters of type RazorPinnedSolutionInfoWrapper or DocumentId as they are not Json serializable. + Methoden in Schnittstellen, die von "IRemoteJsonService" erben, dürfen keine Parameter vom Typ "RazorPinnedSolutionInfoWrapper" oder "DocumentId" aufweisen, da diese nicht mit JSON serialisierbar sind. '{0}' parameter in '{1}.{2}' has a parameter of type '{3}' which is not allowed in a Json service - '{0}' parameter in '{1}.{2}' has a parameter of type '{3}' which is not allowed in a Json service + Der Parameter "{0}" in "{1}.{2}" hat einen Parameter vom Typ "{3}", der in einem JSON-Dienst nicht zulässig ist. Invalid parameter type in IRemoteJsonService method - Invalid parameter type in IRemoteJsonService method + Ungültiger Parametertyp in der IRemoteJsonService-Methode. diff --git a/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.es.xlf b/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.es.xlf index f7b07ad79e0..ac0c45506f0 100644 --- a/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.es.xlf +++ b/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.es.xlf @@ -4,17 +4,17 @@ Methods in interfaces inheriting from IRemoteJsonService should not have parameters of type RazorPinnedSolutionInfoWrapper or DocumentId as they are not Json serializable. - Methods in interfaces inheriting from IRemoteJsonService should not have parameters of type RazorPinnedSolutionInfoWrapper or DocumentId as they are not Json serializable. + Los métodos de las interfaces que heredan de IRemoteJsonService no deben tener parámetros de tipo RazorPinnedSolutionInfoWrapper o DocumentId, ya que no son serializables en JSON. '{0}' parameter in '{1}.{2}' has a parameter of type '{3}' which is not allowed in a Json service - '{0}' parameter in '{1}.{2}' has a parameter of type '{3}' which is not allowed in a Json service + El parámetro "{0}" de "{1}.{2}" tiene un parámetro de tipo "{3}" que no se permite en un servicio JSON Invalid parameter type in IRemoteJsonService method - Invalid parameter type in IRemoteJsonService method + Tipo de parámetro no válido en el método IRemoteJsonService diff --git a/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.fr.xlf b/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.fr.xlf index feaa2763671..c27845611fc 100644 --- a/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.fr.xlf +++ b/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.fr.xlf @@ -4,17 +4,17 @@ Methods in interfaces inheriting from IRemoteJsonService should not have parameters of type RazorPinnedSolutionInfoWrapper or DocumentId as they are not Json serializable. - Methods in interfaces inheriting from IRemoteJsonService should not have parameters of type RazorPinnedSolutionInfoWrapper or DocumentId as they are not Json serializable. + Les méthodes dans les interfaces héritant du service IRemoteJsonService ne doivent pas avoir de paramètres de type RazorPinnedSolutionInfoWrapper ou DocumentId, car ils ne sont pas sérialisables au format JSON. '{0}' parameter in '{1}.{2}' has a parameter of type '{3}' which is not allowed in a Json service - '{0}' parameter in '{1}.{2}' has a parameter of type '{3}' which is not allowed in a Json service + Le paramètre « {0} » dans « {1}.{2} » contient un paramètre de type « {3} » non autorisé dans un service JSON Invalid parameter type in IRemoteJsonService method - Invalid parameter type in IRemoteJsonService method + Type de paramètre non valide dans la méthode IRemoteJsonService diff --git a/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.it.xlf b/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.it.xlf index ae16576a920..cac69f10ac7 100644 --- a/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.it.xlf +++ b/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.it.xlf @@ -4,17 +4,17 @@ Methods in interfaces inheriting from IRemoteJsonService should not have parameters of type RazorPinnedSolutionInfoWrapper or DocumentId as they are not Json serializable. - Methods in interfaces inheriting from IRemoteJsonService should not have parameters of type RazorPinnedSolutionInfoWrapper or DocumentId as they are not Json serializable. + I metodi nelle interfacce che ereditano da IRemoteJsonService non devono avere parametri di tipo RazorPinnedSolutionInfoWrapper o DocumentId, poiché non sono serializzabili in Json. '{0}' parameter in '{1}.{2}' has a parameter of type '{3}' which is not allowed in a Json service - '{0}' parameter in '{1}.{2}' has a parameter of type '{3}' which is not allowed in a Json service + Il parametro '{0}' in '{1}.{2}' ha un parametro di tipo '{3}' che non è consentito in un servizio Json Invalid parameter type in IRemoteJsonService method - Invalid parameter type in IRemoteJsonService method + Tipo di parametro non valido nel metodo IRemoteJsonService diff --git a/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.ja.xlf b/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.ja.xlf index 46b4fd04fa5..6e71db75442 100644 --- a/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.ja.xlf +++ b/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.ja.xlf @@ -4,17 +4,17 @@ Methods in interfaces inheriting from IRemoteJsonService should not have parameters of type RazorPinnedSolutionInfoWrapper or DocumentId as they are not Json serializable. - Methods in interfaces inheriting from IRemoteJsonService should not have parameters of type RazorPinnedSolutionInfoWrapper or DocumentId as they are not Json serializable. + IRemoteJsonService から継承するインターフェイス内のメソッドは、Json シリアル化できないため、RazorPinnedSolutionInfoWrapper または DocumentId 型のパラメーターを持つべきではありません。 '{0}' parameter in '{1}.{2}' has a parameter of type '{3}' which is not allowed in a Json service - '{0}' parameter in '{1}.{2}' has a parameter of type '{3}' which is not allowed in a Json service + '{1}.{2}' の '{0}' パラメーターには型 '{3}' のパラメーターがあり、Json サービスでは使用できません Invalid parameter type in IRemoteJsonService method - Invalid parameter type in IRemoteJsonService method + IRemoteJsonService メソッドのパラメーターの型が無効です diff --git a/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.ko.xlf b/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.ko.xlf index 86a9cbc3ef3..d0437b0814f 100644 --- a/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.ko.xlf +++ b/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.ko.xlf @@ -4,17 +4,17 @@ Methods in interfaces inheriting from IRemoteJsonService should not have parameters of type RazorPinnedSolutionInfoWrapper or DocumentId as they are not Json serializable. - Methods in interfaces inheriting from IRemoteJsonService should not have parameters of type RazorPinnedSolutionInfoWrapper or DocumentId as they are not Json serializable. + IRemoteJsonService에서 상속되는 인터페이스의 메서드는 Json 직렬화가 불가능하므로 RazorPinnedSolutionInfoWrapper 또는 DocumentId 형식의 매개 변수를 사용할 수 없습니다. '{0}' parameter in '{1}.{2}' has a parameter of type '{3}' which is not allowed in a Json service - '{0}' parameter in '{1}.{2}' has a parameter of type '{3}' which is not allowed in a Json service + '{0}' 매개 변수는 '{1}.{2}'에서 Json 서비스에서 허용되지 않는 '{3}' 형식의 매개 변수를 가지고 있습니다. Invalid parameter type in IRemoteJsonService method - Invalid parameter type in IRemoteJsonService method + IRemoteJsonService 메서드의 매개 변수 형식이 잘못되었습니다. diff --git a/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.pl.xlf b/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.pl.xlf index b7a92fb3bf5..7d9e614e933 100644 --- a/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.pl.xlf +++ b/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.pl.xlf @@ -4,17 +4,17 @@ Methods in interfaces inheriting from IRemoteJsonService should not have parameters of type RazorPinnedSolutionInfoWrapper or DocumentId as they are not Json serializable. - Methods in interfaces inheriting from IRemoteJsonService should not have parameters of type RazorPinnedSolutionInfoWrapper or DocumentId as they are not Json serializable. + Metody w interfejsach dziedziczących po IRemoteJsonService nie powinny mieć parametrów typu RazorPinnedSolutionInfoWrapper ani DocumentId, ponieważ nie są one serializowalne w formacie JSON. '{0}' parameter in '{1}.{2}' has a parameter of type '{3}' which is not allowed in a Json service - '{0}' parameter in '{1}.{2}' has a parameter of type '{3}' which is not allowed in a Json service + Parametr „{0}” w „{1}.{2}” ma typ „{3}”, co jest niedozwolone w usłudze JSON Invalid parameter type in IRemoteJsonService method - Invalid parameter type in IRemoteJsonService method + Nieprawidłowy typ parametru w metodzie IRemoteJsonService diff --git a/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.pt-BR.xlf b/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.pt-BR.xlf index 2ac506dfd68..77cc290e754 100644 --- a/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.pt-BR.xlf +++ b/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.pt-BR.xlf @@ -4,17 +4,17 @@ Methods in interfaces inheriting from IRemoteJsonService should not have parameters of type RazorPinnedSolutionInfoWrapper or DocumentId as they are not Json serializable. - Methods in interfaces inheriting from IRemoteJsonService should not have parameters of type RazorPinnedSolutionInfoWrapper or DocumentId as they are not Json serializable. + Métodos em interfaces que herdam de IRemoteJsonService não devem ter parâmetros do tipo RazorPinnedSolutionInfoWrapper ou DocumentId, pois eles não são serializáveis em Json. '{0}' parameter in '{1}.{2}' has a parameter of type '{3}' which is not allowed in a Json service - '{0}' parameter in '{1}.{2}' has a parameter of type '{3}' which is not allowed in a Json service + O parâmetro '{0}' em '{1}.{2}' tem um parâmetro do tipo '{3}', o que não é permitido em um serviço Json Invalid parameter type in IRemoteJsonService method - Invalid parameter type in IRemoteJsonService method + Tipo de parâmetro inválido no método IRemoteJsonService diff --git a/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.ru.xlf b/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.ru.xlf index 98be70b8043..8e46174837d 100644 --- a/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.ru.xlf +++ b/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.ru.xlf @@ -4,17 +4,17 @@ Methods in interfaces inheriting from IRemoteJsonService should not have parameters of type RazorPinnedSolutionInfoWrapper or DocumentId as they are not Json serializable. - Methods in interfaces inheriting from IRemoteJsonService should not have parameters of type RazorPinnedSolutionInfoWrapper or DocumentId as they are not Json serializable. + Методы в интерфейсах, наследуемых от IRemoteJsonService, не должны иметь параметров типа RazorPinnedSolutionInfoWrapper или DocumentId, поскольку они не являются Json-сериализуемыми. '{0}' parameter in '{1}.{2}' has a parameter of type '{3}' which is not allowed in a Json service - '{0}' parameter in '{1}.{2}' has a parameter of type '{3}' which is not allowed in a Json service + Параметр «{0}» в «{1}.{2}» имеет параметр тип «{3}», который недопустим в службе JSON Invalid parameter type in IRemoteJsonService method - Invalid parameter type in IRemoteJsonService method + Недопустимый тип параметра в методе IRemoteJsonService diff --git a/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.tr.xlf b/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.tr.xlf index 6d2ded04391..8b3c307e8ea 100644 --- a/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.tr.xlf +++ b/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.tr.xlf @@ -4,17 +4,17 @@ Methods in interfaces inheriting from IRemoteJsonService should not have parameters of type RazorPinnedSolutionInfoWrapper or DocumentId as they are not Json serializable. - Methods in interfaces inheriting from IRemoteJsonService should not have parameters of type RazorPinnedSolutionInfoWrapper or DocumentId as they are not Json serializable. + IRemoteJsonService'ten devralan arabirimlerde RazorPinnedSolutionInfoWrapper veya DocumentId türünde parametreler bulunmamalıdır, çünkü bunlar Json seri hale getirilebilir değildir. '{0}' parameter in '{1}.{2}' has a parameter of type '{3}' which is not allowed in a Json service - '{0}' parameter in '{1}.{2}' has a parameter of type '{3}' which is not allowed in a Json service + '{1}.{2}' içindeki '{0}' parametresi, Json hizmetlerinde izin verilmeyen '{3}' türünde bir parametre içeriyor. Invalid parameter type in IRemoteJsonService method - Invalid parameter type in IRemoteJsonService method + IRemoteJsonService yönteminde geçersiz parametre türü diff --git a/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.zh-Hans.xlf b/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.zh-Hans.xlf index 5b4f0e1f423..46bc8dfefe7 100644 --- a/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.zh-Hans.xlf +++ b/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.zh-Hans.xlf @@ -4,17 +4,17 @@ Methods in interfaces inheriting from IRemoteJsonService should not have parameters of type RazorPinnedSolutionInfoWrapper or DocumentId as they are not Json serializable. - Methods in interfaces inheriting from IRemoteJsonService should not have parameters of type RazorPinnedSolutionInfoWrapper or DocumentId as they are not Json serializable. + 从 IRemoteJsonService 继承的接口中的方法不应具有类型为 RazorPinnedSolutionInfoWrapper 或 DocumentId 的参数,因为它们无法实现 Json 序列化。 '{0}' parameter in '{1}.{2}' has a parameter of type '{3}' which is not allowed in a Json service - '{0}' parameter in '{1}.{2}' has a parameter of type '{3}' which is not allowed in a Json service + "{1}.{2}" 中的 "{0}" 参数具有类型为 "{3}" 的参数,而该类型在 Json 服务中是不允许的 Invalid parameter type in IRemoteJsonService method - Invalid parameter type in IRemoteJsonService method + IRemoteJsonService 方法中的参数类型无效 diff --git a/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.zh-Hant.xlf b/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.zh-Hant.xlf index f5434b402c9..6a4e20d547b 100644 --- a/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.zh-Hant.xlf +++ b/src/razor/src/Analyzers/Razor.Diagnostics.Analyzers/xlf/Resources.zh-Hant.xlf @@ -4,17 +4,17 @@ Methods in interfaces inheriting from IRemoteJsonService should not have parameters of type RazorPinnedSolutionInfoWrapper or DocumentId as they are not Json serializable. - Methods in interfaces inheriting from IRemoteJsonService should not have parameters of type RazorPinnedSolutionInfoWrapper or DocumentId as they are not Json serializable. + 介面中繼承自 IRemoteJsonService 的方法不得具有 RazorPinnedSolutionInfoWrapper 或 DocumentId 類型的參數,因為它們不是 Json 可序列化的。 '{0}' parameter in '{1}.{2}' has a parameter of type '{3}' which is not allowed in a Json service - '{0}' parameter in '{1}.{2}' has a parameter of type '{3}' which is not allowed in a Json service + '{1}.{2}' 中的 '{0}' 參數具有 '{3}' 類型的參數,而 Json 服務不允許此參數 Invalid parameter type in IRemoteJsonService method - Invalid parameter type in IRemoteJsonService method + IRemoteJsonService 方法中無效的參數類型 diff --git a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/DirectiveTokenEditHandlerTest.cs b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/DirectiveTokenEditHandlerTest.cs index c06b2d354b3..9286710aeb1 100644 --- a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/DirectiveTokenEditHandlerTest.cs +++ b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/DirectiveTokenEditHandlerTest.cs @@ -7,6 +7,7 @@ using System.Linq; using Microsoft.AspNetCore.Razor.Language.Legacy; using Microsoft.AspNetCore.Razor.Language.Syntax; +using Microsoft.AspNetCore.Razor.PooledObjects; using Xunit; namespace Microsoft.AspNetCore.Razor.Language.Test; @@ -63,13 +64,14 @@ public void CanAcceptChange_RejectsWhitespaceChanges(int index, int length, stri private static CSharpStatementLiteralSyntax GetSyntaxNode(DirectiveTokenEditHandler editHandler, string content) { - using var _ = SyntaxListBuilderPool.GetPooledBuilder(out var builder); + using PooledArrayBuilder builder = []; var tokens = NativeCSharpLanguageCharacteristics.Instance.TokenizeString(content).ToArray(); foreach (var token in tokens) { builder.Add((SyntaxToken)token.CreateRed()); } + var node = SyntaxFactory.CSharpStatementLiteral(builder.ToList(), SpanChunkGenerator.Null); return node.WithEditHandler(editHandler); diff --git a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/IntegrationTests/ComponentCodeGenerationTestBase.cs b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/IntegrationTests/ComponentCodeGenerationTestBase.cs index aac19e0cefe..6552d391309 100644 --- a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/IntegrationTests/ComponentCodeGenerationTestBase.cs +++ b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/IntegrationTests/ComponentCodeGenerationTestBase.cs @@ -9339,6 +9339,150 @@ public class MyComponent : ComponentBase where T : IMyInterface CompileToAssembly(generated); } + [IntegrationTestFact, WorkItem("https://github.com/dotnet/razor/issues/11552")] + public void GenericComponentTypeUsage() + { + // Act + var generated = CompileToCSharp(""" + @typeparam TItem + @code { + [Parameter] + public TItem MyItem { get; set; } + } + + + """); + + // Assert + AssertDocumentNodeMatchesBaseline(generated.CodeDocument); + AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); + CompileToAssembly(generated); + } + + [IntegrationTestFact, WorkItem("https://github.com/dotnet/razor/issues/11552")] + public void GenericComponentTypeUsageWithInference() + { + // Act + var generated = CompileToCSharp(""" + @typeparam TItem + @code { + [Parameter] + public TItem MyItem { get; set; } + } + + + """); + + // Assert + AssertDocumentNodeMatchesBaseline(generated.CodeDocument); + AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); + CompileToAssembly(generated); + } + + [IntegrationTestFact, WorkItem("https://github.com/dotnet/razor/issues/11552")] + public void GenericComponentMultipleTypeParamUsage() + { + // Act + var generated = CompileToCSharp(""" + @typeparam TItem + @typeparam TItem2 + @code { + [Parameter] + public TItem MyItem { get; set; } + + [Parameter] + public TItem2 MyItem2 { get; set; } + } + + + """); + + // Assert + AssertDocumentNodeMatchesBaseline(generated.CodeDocument); + AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); + CompileToAssembly(generated); + } + + [IntegrationTestFact, WorkItem("https://github.com/dotnet/razor/issues/11552")] + public void GenericComponentTypeParamUsageWithImplicitExpression() + { + // Act + var generated = CompileToCSharp(""" + @typeparam TItem + @code { + [Parameter] + public TItem MyItem { get; set; } + } + + + """); + + // Assert + AssertDocumentNodeMatchesBaseline(generated.CodeDocument); + AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); + CompileToAssembly(generated); + } + + [IntegrationTestFact, WorkItem("https://github.com/dotnet/razor/issues/11552")] + public void GenericComponentTypeParamUsageWithImplicitExpression2() + { + // Act + var generated = CompileToCSharp(""" + @typeparam TItem + @code { + [Parameter] + public TItem MyItem { get; set; } + } + + + """); + + // Assert + AssertDocumentNodeMatchesBaseline(generated.CodeDocument); + AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); + CompileToAssembly(generated); + } + + [IntegrationTestFact, WorkItem("https://github.com/dotnet/razor/issues/11552")] + public void GenericComponentTypeUsageWhitespace() + { + // Act + var generated = CompileToCSharp(""" + @typeparam TItem + @code { + [Parameter] + public TItem MyItem { get; set; } + } + + + """); + + // Assert + AssertDocumentNodeMatchesBaseline(generated.CodeDocument); + AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); + CompileToAssembly(generated); + } + + [IntegrationTestFact, WorkItem("https://github.com/dotnet/razor/issues/11552")] + public void GenericComponentTypeUsageWithGenericType() + { + // Act + var generated = CompileToCSharp(""" + @typeparam TItem + @code { + [Parameter] + public TItem MyItem { get; set; } + } + + + """); + + // Assert + AssertDocumentNodeMatchesBaseline(generated.CodeDocument); + AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); + CompileToAssembly(generated); + } + #endregion #region Key diff --git a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/Legacy/CodeBlockEditHandlerTest.cs b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/Legacy/CodeBlockEditHandlerTest.cs index 4e9f7392d21..7bb8db71ab6 100644 --- a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/Legacy/CodeBlockEditHandlerTest.cs +++ b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/Legacy/CodeBlockEditHandlerTest.cs @@ -6,6 +6,7 @@ using System.Linq; using Microsoft.AspNetCore.Razor.Language.Legacy; using Microsoft.AspNetCore.Razor.Language.Syntax; +using Microsoft.AspNetCore.Razor.PooledObjects; using Xunit; namespace Microsoft.AspNetCore.Razor.Language.Test.Legacy; @@ -281,7 +282,7 @@ public void ContainsInvalidContent_ValidContent_ReturnsFalse(string content) private static SyntaxNode GetSpan(SourceLocation start, string content) { - using var _ = SyntaxListBuilderPool.GetPooledBuilder(out var builder); + using PooledArrayBuilder builder = []; var tokens = NativeCSharpLanguageCharacteristics.Instance.TokenizeString(content).ToArray(); foreach (var token in tokens) diff --git a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/ChildComponent_AtSpecifiedInRazorFileForTypeParameter/TestComponent.ir.txt b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/ChildComponent_AtSpecifiedInRazorFileForTypeParameter/TestComponent.ir.txt index e314add09ef..243880045e8 100644 --- a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/ChildComponent_AtSpecifiedInRazorFileForTypeParameter/TestComponent.ir.txt +++ b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/ChildComponent_AtSpecifiedInRazorFileForTypeParameter/TestComponent.ir.txt @@ -16,7 +16,6 @@ MethodDeclaration - - protected override - void - BuildRenderTree Component - (0:0,0 [26] x:\dir\subdir\Test\TestComponent.cshtml) - C ComponentTypeArgument - (6:0,6 [7] x:\dir\subdir\Test\TestComponent.cshtml) - T - CSharpExpression - (7:0,7 [6] x:\dir\subdir\Test\TestComponent.cshtml) - LazyIntermediateToken - (7:0,7 [6] x:\dir\subdir\Test\TestComponent.cshtml) - CSharp - string + LazyIntermediateToken - (7:0,7 [6] x:\dir\subdir\Test\TestComponent.cshtml) - CSharp - string ComponentAttribute - (21:0,21 [1] x:\dir\subdir\Test\TestComponent.cshtml) - Item - Item - AttributeStructure.DoubleQuotes LazyIntermediateToken - (21:0,21 [1] x:\dir\subdir\Test\TestComponent.cshtml) - CSharp - 1 diff --git a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentMultipleTypeParamUsage/TestComponent.codegen.cs b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentMultipleTypeParamUsage/TestComponent.codegen.cs new file mode 100644 index 00000000000..a9005f9b71d --- /dev/null +++ b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentMultipleTypeParamUsage/TestComponent.codegen.cs @@ -0,0 +1,93 @@ +// +#pragma warning disable 1591 +namespace Test +{ + #line default + using global::System; + using global::System.Collections.Generic; + using global::System.Linq; + using global::System.Threading.Tasks; + using global::Microsoft.AspNetCore.Components; + #line default + #line hidden + #nullable restore + public partial class TestComponent< +#nullable restore +#line 1 "x:\dir\subdir\Test\TestComponent.cshtml" +TItem + +#line default +#line hidden +#nullable disable + , +#nullable restore +#line 2 "x:\dir\subdir\Test\TestComponent.cshtml" +TItem2 + +#line default +#line hidden +#nullable disable + > : global::Microsoft.AspNetCore.Components.ComponentBase + #nullable disable + { + #pragma warning disable 219 + private void __RazorDirectiveTokenHelpers__() { + ((global::System.Action)(() => { + } + ))(); + ((global::System.Action)(() => { + } + ))(); + } + #pragma warning restore 219 + #pragma warning disable 0414 + private static object __o = null; + #pragma warning restore 0414 + #pragma warning disable 1998 + protected override void BuildRenderTree(global::Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder __builder) + { + __o = typeof( +#nullable restore +#line 11 "x:\dir\subdir\Test\TestComponent.cshtml" + int + +#line default +#line hidden +#nullable disable + ); + __o = typeof( +#nullable restore +#line 11 "x:\dir\subdir\Test\TestComponent.cshtml" + string + +#line default +#line hidden +#nullable disable + ); + __builder.AddAttribute(-1, "ChildContent", (global::Microsoft.AspNetCore.Components.RenderFragment)((__builder2) => { + } + )); +#nullable restore +#line 11 "x:\dir\subdir\Test\TestComponent.cshtml" +__o = typeof(global::Test.TestComponent<,>); + +#line default +#line hidden +#nullable disable + } + #pragma warning restore 1998 +#nullable restore +#line 3 "x:\dir\subdir\Test\TestComponent.cshtml" + + [Parameter] + public TItem MyItem { get; set; } + + [Parameter] + public TItem2 MyItem2 { get; set; } + +#line default +#line hidden +#nullable disable + } +} +#pragma warning restore 1591 diff --git a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentMultipleTypeParamUsage/TestComponent.ir.txt b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentMultipleTypeParamUsage/TestComponent.ir.txt new file mode 100644 index 00000000000..3ace9255615 --- /dev/null +++ b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentMultipleTypeParamUsage/TestComponent.ir.txt @@ -0,0 +1,27 @@ +Document - + NamespaceDeclaration - - Test + UsingDirective - (3:1,1 [20] ) - global::System + UsingDirective - (26:2,1 [40] ) - global::System.Collections.Generic + UsingDirective - (69:3,1 [25] ) - global::System.Linq + UsingDirective - (97:4,1 [36] ) - global::System.Threading.Tasks + UsingDirective - (136:5,1 [45] ) - global::Microsoft.AspNetCore.Components + ClassDeclaration - - public partial - TestComponent - global::Microsoft.AspNetCore.Components.ComponentBase - - TItem, TItem2 + DesignTimeDirective - + DirectiveToken - (11:0,11 [5] x:\dir\subdir\Test\TestComponent.cshtml) - TItem + DirectiveToken - (29:1,11 [6] x:\dir\subdir\Test\TestComponent.cshtml) - TItem2 + CSharpCode - + IntermediateToken - - CSharp - #pragma warning disable 0414 + CSharpCode - + IntermediateToken - - CSharp - private static object __o = null; + CSharpCode - + IntermediateToken - - CSharp - #pragma warning restore 0414 + MethodDeclaration - - protected override - void - BuildRenderTree + HtmlContent - (163:8,1 [4] x:\dir\subdir\Test\TestComponent.cshtml) + LazyIntermediateToken - (163:8,1 [4] x:\dir\subdir\Test\TestComponent.cshtml) - Html - \n\n + Component - (167:10,0 [45] x:\dir\subdir\Test\TestComponent.cshtml) - TestComponent + ComponentTypeArgument - (190:10,23 [3] x:\dir\subdir\Test\TestComponent.cshtml) - TItem2 + LazyIntermediateToken - (190:10,23 [3] x:\dir\subdir\Test\TestComponent.cshtml) - CSharp - int + ComponentTypeArgument - (202:10,35 [6] x:\dir\subdir\Test\TestComponent.cshtml) - TItem + LazyIntermediateToken - (202:10,35 [6] x:\dir\subdir\Test\TestComponent.cshtml) - CSharp - string + CSharpCode - (44:2,7 [118] x:\dir\subdir\Test\TestComponent.cshtml) + LazyIntermediateToken - (44:2,7 [118] x:\dir\subdir\Test\TestComponent.cshtml) - CSharp - \n [Parameter]\n public TItem MyItem { get; set; }\n\n [Parameter]\n public TItem2 MyItem2 { get; set; }\n diff --git a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentMultipleTypeParamUsage/TestComponent.mappings.txt b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentMultipleTypeParamUsage/TestComponent.mappings.txt new file mode 100644 index 00000000000..e69d8e6c540 --- /dev/null +++ b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentMultipleTypeParamUsage/TestComponent.mappings.txt @@ -0,0 +1,37 @@ +Source Location: (11:0,11 [5] x:\dir\subdir\Test\TestComponent.cshtml) +|TItem| +Generated Location: (462:16,0 [5] ) +|TItem| + +Source Location: (29:1,11 [6] x:\dir\subdir\Test\TestComponent.cshtml) +|TItem2| +Generated Location: (596:24,0 [6] ) +|TItem2| + +Source Location: (190:10,23 [3] x:\dir\subdir\Test\TestComponent.cshtml) +|int| +Generated Location: (1442:51,23 [3] ) +|int| + +Source Location: (202:10,35 [6] x:\dir\subdir\Test\TestComponent.cshtml) +|string| +Generated Location: (1646:60,35 [6] ) +|string| + +Source Location: (44:2,7 [118] x:\dir\subdir\Test\TestComponent.cshtml) +| + [Parameter] + public TItem MyItem { get; set; } + + [Parameter] + public TItem2 MyItem2 { get; set; } +| +Generated Location: (2176:80,7 [118] ) +| + [Parameter] + public TItem MyItem { get; set; } + + [Parameter] + public TItem2 MyItem2 { get; set; } +| + diff --git a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeParamUsageWithImplicitExpression/TestComponent.codegen.cs b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeParamUsageWithImplicitExpression/TestComponent.codegen.cs new file mode 100644 index 00000000000..4929a21cbbb --- /dev/null +++ b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeParamUsageWithImplicitExpression/TestComponent.codegen.cs @@ -0,0 +1,70 @@ +// +#pragma warning disable 1591 +namespace Test +{ + #line default + using global::System; + using global::System.Collections.Generic; + using global::System.Linq; + using global::System.Threading.Tasks; + using global::Microsoft.AspNetCore.Components; + #line default + #line hidden + #nullable restore + public partial class TestComponent< +#nullable restore +#line 1 "x:\dir\subdir\Test\TestComponent.cshtml" +TItem + +#line default +#line hidden +#nullable disable + > : global::Microsoft.AspNetCore.Components.ComponentBase + #nullable disable + { + #pragma warning disable 219 + private void __RazorDirectiveTokenHelpers__() { + ((global::System.Action)(() => { + } + ))(); + } + #pragma warning restore 219 + #pragma warning disable 0414 + private static object __o = null; + #pragma warning restore 0414 + #pragma warning disable 1998 + protected override void BuildRenderTree(global::Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder __builder) + { + __o = typeof( +#nullable restore +#line 7 "x:\dir\subdir\Test\TestComponent.cshtml" + string + +#line default +#line hidden +#nullable disable + ); + __builder.AddAttribute(-1, "ChildContent", (global::Microsoft.AspNetCore.Components.RenderFragment)((__builder2) => { + } + )); +#nullable restore +#line 7 "x:\dir\subdir\Test\TestComponent.cshtml" +__o = typeof(global::Test.TestComponent<>); + +#line default +#line hidden +#nullable disable + } + #pragma warning restore 1998 +#nullable restore +#line 2 "x:\dir\subdir\Test\TestComponent.cshtml" + + [Parameter] + public TItem MyItem { get; set; } + +#line default +#line hidden +#nullable disable + } +} +#pragma warning restore 1591 diff --git a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeParamUsageWithImplicitExpression/TestComponent.ir.txt b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeParamUsageWithImplicitExpression/TestComponent.ir.txt new file mode 100644 index 00000000000..dd648495fd8 --- /dev/null +++ b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeParamUsageWithImplicitExpression/TestComponent.ir.txt @@ -0,0 +1,24 @@ +Document - + NamespaceDeclaration - - Test + UsingDirective - (3:1,1 [20] ) - global::System + UsingDirective - (26:2,1 [40] ) - global::System.Collections.Generic + UsingDirective - (69:3,1 [25] ) - global::System.Linq + UsingDirective - (97:4,1 [36] ) - global::System.Threading.Tasks + UsingDirective - (136:5,1 [45] ) - global::Microsoft.AspNetCore.Components + ClassDeclaration - - public partial - TestComponent - global::Microsoft.AspNetCore.Components.ComponentBase - - TItem + DesignTimeDirective - + DirectiveToken - (11:0,11 [5] x:\dir\subdir\Test\TestComponent.cshtml) - TItem + CSharpCode - + IntermediateToken - - CSharp - #pragma warning disable 0414 + CSharpCode - + IntermediateToken - - CSharp - private static object __o = null; + CSharpCode - + IntermediateToken - - CSharp - #pragma warning restore 0414 + MethodDeclaration - - protected override - void - BuildRenderTree + HtmlContent - (84:4,1 [4] x:\dir\subdir\Test\TestComponent.cshtml) + LazyIntermediateToken - (84:4,1 [4] x:\dir\subdir\Test\TestComponent.cshtml) - Html - \n\n + Component - (88:6,0 [33] x:\dir\subdir\Test\TestComponent.cshtml) - TestComponent + ComponentTypeArgument - (110:6,22 [7] x:\dir\subdir\Test\TestComponent.cshtml) - TItem + LazyIntermediateToken - (111:6,23 [6] x:\dir\subdir\Test\TestComponent.cshtml) - CSharp - string + CSharpCode - (25:1,7 [58] x:\dir\subdir\Test\TestComponent.cshtml) + LazyIntermediateToken - (25:1,7 [58] x:\dir\subdir\Test\TestComponent.cshtml) - CSharp - \n [Parameter]\n public TItem MyItem { get; set; }\n diff --git a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeParamUsageWithImplicitExpression/TestComponent.mappings.txt b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeParamUsageWithImplicitExpression/TestComponent.mappings.txt new file mode 100644 index 00000000000..dd02cc0b7e7 --- /dev/null +++ b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeParamUsageWithImplicitExpression/TestComponent.mappings.txt @@ -0,0 +1,21 @@ +Source Location: (11:0,11 [5] x:\dir\subdir\Test\TestComponent.cshtml) +|TItem| +Generated Location: (462:16,0 [5] ) +|TItem| + +Source Location: (111:6,23 [6] x:\dir\subdir\Test\TestComponent.cshtml) +|string| +Generated Location: (1238:40,23 [6] ) +|string| + +Source Location: (25:1,7 [58] x:\dir\subdir\Test\TestComponent.cshtml) +| + [Parameter] + public TItem MyItem { get; set; } +| +Generated Location: (1766:60,7 [58] ) +| + [Parameter] + public TItem MyItem { get; set; } +| + diff --git a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeParamUsageWithImplicitExpression2/TestComponent.codegen.cs b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeParamUsageWithImplicitExpression2/TestComponent.codegen.cs new file mode 100644 index 00000000000..ec7c1c46786 --- /dev/null +++ b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeParamUsageWithImplicitExpression2/TestComponent.codegen.cs @@ -0,0 +1,70 @@ +// +#pragma warning disable 1591 +namespace Test +{ + #line default + using global::System; + using global::System.Collections.Generic; + using global::System.Linq; + using global::System.Threading.Tasks; + using global::Microsoft.AspNetCore.Components; + #line default + #line hidden + #nullable restore + public partial class TestComponent< +#nullable restore +#line 1 "x:\dir\subdir\Test\TestComponent.cshtml" +TItem + +#line default +#line hidden +#nullable disable + > : global::Microsoft.AspNetCore.Components.ComponentBase + #nullable disable + { + #pragma warning disable 219 + private void __RazorDirectiveTokenHelpers__() { + ((global::System.Action)(() => { + } + ))(); + } + #pragma warning restore 219 + #pragma warning disable 0414 + private static object __o = null; + #pragma warning restore 0414 + #pragma warning disable 1998 + protected override void BuildRenderTree(global::Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder __builder) + { + __o = typeof( +#nullable restore +#line 7 "x:\dir\subdir\Test\TestComponent.cshtml" + string + +#line default +#line hidden +#nullable disable + ); + __builder.AddAttribute(-1, "ChildContent", (global::Microsoft.AspNetCore.Components.RenderFragment)((__builder2) => { + } + )); +#nullable restore +#line 7 "x:\dir\subdir\Test\TestComponent.cshtml" +__o = typeof(global::Test.TestComponent<>); + +#line default +#line hidden +#nullable disable + } + #pragma warning restore 1998 +#nullable restore +#line 2 "x:\dir\subdir\Test\TestComponent.cshtml" + + [Parameter] + public TItem MyItem { get; set; } + +#line default +#line hidden +#nullable disable + } +} +#pragma warning restore 1591 diff --git a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeParamUsageWithImplicitExpression2/TestComponent.ir.txt b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeParamUsageWithImplicitExpression2/TestComponent.ir.txt new file mode 100644 index 00000000000..fae50c6b495 --- /dev/null +++ b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeParamUsageWithImplicitExpression2/TestComponent.ir.txt @@ -0,0 +1,24 @@ +Document - + NamespaceDeclaration - - Test + UsingDirective - (3:1,1 [20] ) - global::System + UsingDirective - (26:2,1 [40] ) - global::System.Collections.Generic + UsingDirective - (69:3,1 [25] ) - global::System.Linq + UsingDirective - (97:4,1 [36] ) - global::System.Threading.Tasks + UsingDirective - (136:5,1 [45] ) - global::Microsoft.AspNetCore.Components + ClassDeclaration - - public partial - TestComponent - global::Microsoft.AspNetCore.Components.ComponentBase - - TItem + DesignTimeDirective - + DirectiveToken - (11:0,11 [5] x:\dir\subdir\Test\TestComponent.cshtml) - TItem + CSharpCode - + IntermediateToken - - CSharp - #pragma warning disable 0414 + CSharpCode - + IntermediateToken - - CSharp - private static object __o = null; + CSharpCode - + IntermediateToken - - CSharp - #pragma warning restore 0414 + MethodDeclaration - - protected override - void - BuildRenderTree + HtmlContent - (84:4,1 [4] x:\dir\subdir\Test\TestComponent.cshtml) + LazyIntermediateToken - (84:4,1 [4] x:\dir\subdir\Test\TestComponent.cshtml) - Html - \n\n + Component - (88:6,0 [35] x:\dir\subdir\Test\TestComponent.cshtml) - TestComponent + ComponentTypeArgument - (110:6,22 [9] x:\dir\subdir\Test\TestComponent.cshtml) - TItem + LazyIntermediateToken - (112:6,24 [6] x:\dir\subdir\Test\TestComponent.cshtml) - CSharp - string + CSharpCode - (25:1,7 [58] x:\dir\subdir\Test\TestComponent.cshtml) + LazyIntermediateToken - (25:1,7 [58] x:\dir\subdir\Test\TestComponent.cshtml) - CSharp - \n [Parameter]\n public TItem MyItem { get; set; }\n diff --git a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeParamUsageWithImplicitExpression2/TestComponent.mappings.txt b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeParamUsageWithImplicitExpression2/TestComponent.mappings.txt new file mode 100644 index 00000000000..f15a96017d8 --- /dev/null +++ b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeParamUsageWithImplicitExpression2/TestComponent.mappings.txt @@ -0,0 +1,21 @@ +Source Location: (11:0,11 [5] x:\dir\subdir\Test\TestComponent.cshtml) +|TItem| +Generated Location: (462:16,0 [5] ) +|TItem| + +Source Location: (112:6,24 [6] x:\dir\subdir\Test\TestComponent.cshtml) +|string| +Generated Location: (1239:40,24 [6] ) +|string| + +Source Location: (25:1,7 [58] x:\dir\subdir\Test\TestComponent.cshtml) +| + [Parameter] + public TItem MyItem { get; set; } +| +Generated Location: (1767:60,7 [58] ) +| + [Parameter] + public TItem MyItem { get; set; } +| + diff --git a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsage/TestComponent.codegen.cs b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsage/TestComponent.codegen.cs new file mode 100644 index 00000000000..de248f96cc5 --- /dev/null +++ b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsage/TestComponent.codegen.cs @@ -0,0 +1,70 @@ +// +#pragma warning disable 1591 +namespace Test +{ + #line default + using global::System; + using global::System.Collections.Generic; + using global::System.Linq; + using global::System.Threading.Tasks; + using global::Microsoft.AspNetCore.Components; + #line default + #line hidden + #nullable restore + public partial class TestComponent< +#nullable restore +#line 1 "x:\dir\subdir\Test\TestComponent.cshtml" +TItem + +#line default +#line hidden +#nullable disable + > : global::Microsoft.AspNetCore.Components.ComponentBase + #nullable disable + { + #pragma warning disable 219 + private void __RazorDirectiveTokenHelpers__() { + ((global::System.Action)(() => { + } + ))(); + } + #pragma warning restore 219 + #pragma warning disable 0414 + private static object __o = null; + #pragma warning restore 0414 + #pragma warning disable 1998 + protected override void BuildRenderTree(global::Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder __builder) + { + __o = typeof( +#nullable restore +#line 7 "x:\dir\subdir\Test\TestComponent.cshtml" + string + +#line default +#line hidden +#nullable disable + ); + __builder.AddAttribute(-1, "ChildContent", (global::Microsoft.AspNetCore.Components.RenderFragment)((__builder2) => { + } + )); +#nullable restore +#line 7 "x:\dir\subdir\Test\TestComponent.cshtml" +__o = typeof(global::Test.TestComponent<>); + +#line default +#line hidden +#nullable disable + } + #pragma warning restore 1998 +#nullable restore +#line 2 "x:\dir\subdir\Test\TestComponent.cshtml" + + [Parameter] + public TItem MyItem { get; set; } + +#line default +#line hidden +#nullable disable + } +} +#pragma warning restore 1591 diff --git a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsage/TestComponent.ir.txt b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsage/TestComponent.ir.txt new file mode 100644 index 00000000000..dea31c376c0 --- /dev/null +++ b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsage/TestComponent.ir.txt @@ -0,0 +1,24 @@ +Document - + NamespaceDeclaration - - Test + UsingDirective - (3:1,1 [20] ) - global::System + UsingDirective - (26:2,1 [40] ) - global::System.Collections.Generic + UsingDirective - (69:3,1 [25] ) - global::System.Linq + UsingDirective - (97:4,1 [36] ) - global::System.Threading.Tasks + UsingDirective - (136:5,1 [45] ) - global::Microsoft.AspNetCore.Components + ClassDeclaration - - public partial - TestComponent - global::Microsoft.AspNetCore.Components.ComponentBase - - TItem + DesignTimeDirective - + DirectiveToken - (11:0,11 [5] x:\dir\subdir\Test\TestComponent.cshtml) - TItem + CSharpCode - + IntermediateToken - - CSharp - #pragma warning disable 0414 + CSharpCode - + IntermediateToken - - CSharp - private static object __o = null; + CSharpCode - + IntermediateToken - - CSharp - #pragma warning restore 0414 + MethodDeclaration - - protected override - void - BuildRenderTree + HtmlContent - (84:4,1 [4] x:\dir\subdir\Test\TestComponent.cshtml) + LazyIntermediateToken - (84:4,1 [4] x:\dir\subdir\Test\TestComponent.cshtml) - Html - \n\n + Component - (88:6,0 [32] x:\dir\subdir\Test\TestComponent.cshtml) - TestComponent + ComponentTypeArgument - (110:6,22 [6] x:\dir\subdir\Test\TestComponent.cshtml) - TItem + LazyIntermediateToken - (110:6,22 [6] x:\dir\subdir\Test\TestComponent.cshtml) - CSharp - string + CSharpCode - (25:1,7 [58] x:\dir\subdir\Test\TestComponent.cshtml) + LazyIntermediateToken - (25:1,7 [58] x:\dir\subdir\Test\TestComponent.cshtml) - CSharp - \n [Parameter]\n public TItem MyItem { get; set; }\n diff --git a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsage/TestComponent.mappings.txt b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsage/TestComponent.mappings.txt new file mode 100644 index 00000000000..a1a0c53fcc2 --- /dev/null +++ b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsage/TestComponent.mappings.txt @@ -0,0 +1,21 @@ +Source Location: (11:0,11 [5] x:\dir\subdir\Test\TestComponent.cshtml) +|TItem| +Generated Location: (462:16,0 [5] ) +|TItem| + +Source Location: (110:6,22 [6] x:\dir\subdir\Test\TestComponent.cshtml) +|string| +Generated Location: (1237:40,22 [6] ) +|string| + +Source Location: (25:1,7 [58] x:\dir\subdir\Test\TestComponent.cshtml) +| + [Parameter] + public TItem MyItem { get; set; } +| +Generated Location: (1765:60,7 [58] ) +| + [Parameter] + public TItem MyItem { get; set; } +| + diff --git a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWhitespace/TestComponent.codegen.cs b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWhitespace/TestComponent.codegen.cs new file mode 100644 index 00000000000..023528f8450 --- /dev/null +++ b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWhitespace/TestComponent.codegen.cs @@ -0,0 +1,70 @@ +// +#pragma warning disable 1591 +namespace Test +{ + #line default + using global::System; + using global::System.Collections.Generic; + using global::System.Linq; + using global::System.Threading.Tasks; + using global::Microsoft.AspNetCore.Components; + #line default + #line hidden + #nullable restore + public partial class TestComponent< +#nullable restore +#line 1 "x:\dir\subdir\Test\TestComponent.cshtml" +TItem + +#line default +#line hidden +#nullable disable + > : global::Microsoft.AspNetCore.Components.ComponentBase + #nullable disable + { + #pragma warning disable 219 + private void __RazorDirectiveTokenHelpers__() { + ((global::System.Action)(() => { + } + ))(); + } + #pragma warning restore 219 + #pragma warning disable 0414 + private static object __o = null; + #pragma warning restore 0414 + #pragma warning disable 1998 + protected override void BuildRenderTree(global::Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder __builder) + { + __o = typeof( +#nullable restore +#line 7 "x:\dir\subdir\Test\TestComponent.cshtml" + string + +#line default +#line hidden +#nullable disable + ); + __builder.AddAttribute(-1, "ChildContent", (global::Microsoft.AspNetCore.Components.RenderFragment)((__builder2) => { + } + )); +#nullable restore +#line 7 "x:\dir\subdir\Test\TestComponent.cshtml" +__o = typeof(global::Test.TestComponent<>); + +#line default +#line hidden +#nullable disable + } + #pragma warning restore 1998 +#nullable restore +#line 2 "x:\dir\subdir\Test\TestComponent.cshtml" + + [Parameter] + public TItem MyItem { get; set; } + +#line default +#line hidden +#nullable disable + } +} +#pragma warning restore 1591 diff --git a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWhitespace/TestComponent.ir.txt b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWhitespace/TestComponent.ir.txt new file mode 100644 index 00000000000..8fe91441092 --- /dev/null +++ b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWhitespace/TestComponent.ir.txt @@ -0,0 +1,24 @@ +Document - + NamespaceDeclaration - - Test + UsingDirective - (3:1,1 [20] ) - global::System + UsingDirective - (26:2,1 [40] ) - global::System.Collections.Generic + UsingDirective - (69:3,1 [25] ) - global::System.Linq + UsingDirective - (97:4,1 [36] ) - global::System.Threading.Tasks + UsingDirective - (136:5,1 [45] ) - global::Microsoft.AspNetCore.Components + ClassDeclaration - - public partial - TestComponent - global::Microsoft.AspNetCore.Components.ComponentBase - - TItem + DesignTimeDirective - + DirectiveToken - (11:0,11 [5] x:\dir\subdir\Test\TestComponent.cshtml) - TItem + CSharpCode - + IntermediateToken - - CSharp - #pragma warning disable 0414 + CSharpCode - + IntermediateToken - - CSharp - private static object __o = null; + CSharpCode - + IntermediateToken - - CSharp - #pragma warning restore 0414 + MethodDeclaration - - protected override - void - BuildRenderTree + HtmlContent - (84:4,1 [4] x:\dir\subdir\Test\TestComponent.cshtml) + LazyIntermediateToken - (84:4,1 [4] x:\dir\subdir\Test\TestComponent.cshtml) - Html - \n\n + Component - (88:6,0 [36] x:\dir\subdir\Test\TestComponent.cshtml) - TestComponent + ComponentTypeArgument - (110:6,22 [10] x:\dir\subdir\Test\TestComponent.cshtml) - TItem + LazyIntermediateToken - (110:6,22 [10] x:\dir\subdir\Test\TestComponent.cshtml) - CSharp - string + CSharpCode - (25:1,7 [58] x:\dir\subdir\Test\TestComponent.cshtml) + LazyIntermediateToken - (25:1,7 [58] x:\dir\subdir\Test\TestComponent.cshtml) - CSharp - \n [Parameter]\n public TItem MyItem { get; set; }\n diff --git a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWhitespace/TestComponent.mappings.txt b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWhitespace/TestComponent.mappings.txt new file mode 100644 index 00000000000..46719e0dca1 --- /dev/null +++ b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWhitespace/TestComponent.mappings.txt @@ -0,0 +1,21 @@ +Source Location: (11:0,11 [5] x:\dir\subdir\Test\TestComponent.cshtml) +|TItem| +Generated Location: (462:16,0 [5] ) +|TItem| + +Source Location: (110:6,22 [10] x:\dir\subdir\Test\TestComponent.cshtml) +| string | +Generated Location: (1237:40,22 [10] ) +| string | + +Source Location: (25:1,7 [58] x:\dir\subdir\Test\TestComponent.cshtml) +| + [Parameter] + public TItem MyItem { get; set; } +| +Generated Location: (1769:60,7 [58] ) +| + [Parameter] + public TItem MyItem { get; set; } +| + diff --git a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWithGenericType/TestComponent.codegen.cs b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWithGenericType/TestComponent.codegen.cs new file mode 100644 index 00000000000..62e51f5ed6d --- /dev/null +++ b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWithGenericType/TestComponent.codegen.cs @@ -0,0 +1,70 @@ +// +#pragma warning disable 1591 +namespace Test +{ + #line default + using global::System; + using global::System.Collections.Generic; + using global::System.Linq; + using global::System.Threading.Tasks; + using global::Microsoft.AspNetCore.Components; + #line default + #line hidden + #nullable restore + public partial class TestComponent< +#nullable restore +#line 1 "x:\dir\subdir\Test\TestComponent.cshtml" +TItem + +#line default +#line hidden +#nullable disable + > : global::Microsoft.AspNetCore.Components.ComponentBase + #nullable disable + { + #pragma warning disable 219 + private void __RazorDirectiveTokenHelpers__() { + ((global::System.Action)(() => { + } + ))(); + } + #pragma warning restore 219 + #pragma warning disable 0414 + private static object __o = null; + #pragma warning restore 0414 + #pragma warning disable 1998 + protected override void BuildRenderTree(global::Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder __builder) + { + __o = typeof( +#nullable restore +#line 7 "x:\dir\subdir\Test\TestComponent.cshtml" + TestComponent + +#line default +#line hidden +#nullable disable + ); + __builder.AddAttribute(-1, "ChildContent", (global::Microsoft.AspNetCore.Components.RenderFragment)((__builder2) => { + } + )); +#nullable restore +#line 7 "x:\dir\subdir\Test\TestComponent.cshtml" +__o = typeof(global::Test.TestComponent<>); + +#line default +#line hidden +#nullable disable + } + #pragma warning restore 1998 +#nullable restore +#line 2 "x:\dir\subdir\Test\TestComponent.cshtml" + + [Parameter] + public TItem MyItem { get; set; } + +#line default +#line hidden +#nullable disable + } +} +#pragma warning restore 1591 diff --git a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWithGenericType/TestComponent.ir.txt b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWithGenericType/TestComponent.ir.txt new file mode 100644 index 00000000000..c6f596faa5e --- /dev/null +++ b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWithGenericType/TestComponent.ir.txt @@ -0,0 +1,24 @@ +Document - + NamespaceDeclaration - - Test + UsingDirective - (3:1,1 [20] ) - global::System + UsingDirective - (26:2,1 [40] ) - global::System.Collections.Generic + UsingDirective - (69:3,1 [25] ) - global::System.Linq + UsingDirective - (97:4,1 [36] ) - global::System.Threading.Tasks + UsingDirective - (136:5,1 [45] ) - global::Microsoft.AspNetCore.Components + ClassDeclaration - - public partial - TestComponent - global::Microsoft.AspNetCore.Components.ComponentBase - - TItem + DesignTimeDirective - + DirectiveToken - (11:0,11 [5] x:\dir\subdir\Test\TestComponent.cshtml) - TItem + CSharpCode - + IntermediateToken - - CSharp - #pragma warning disable 0414 + CSharpCode - + IntermediateToken - - CSharp - private static object __o = null; + CSharpCode - + IntermediateToken - - CSharp - #pragma warning restore 0414 + MethodDeclaration - - protected override - void - BuildRenderTree + HtmlContent - (84:4,1 [4] x:\dir\subdir\Test\TestComponent.cshtml) + LazyIntermediateToken - (84:4,1 [4] x:\dir\subdir\Test\TestComponent.cshtml) - Html - \n\n + Component - (88:6,0 [47] x:\dir\subdir\Test\TestComponent.cshtml) - TestComponent + ComponentTypeArgument - (110:6,22 [21] x:\dir\subdir\Test\TestComponent.cshtml) - TItem + LazyIntermediateToken - (110:6,22 [21] x:\dir\subdir\Test\TestComponent.cshtml) - CSharp - TestComponent + CSharpCode - (25:1,7 [58] x:\dir\subdir\Test\TestComponent.cshtml) + LazyIntermediateToken - (25:1,7 [58] x:\dir\subdir\Test\TestComponent.cshtml) - CSharp - \n [Parameter]\n public TItem MyItem { get; set; }\n diff --git a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWithGenericType/TestComponent.mappings.txt b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWithGenericType/TestComponent.mappings.txt new file mode 100644 index 00000000000..1358f89cd24 --- /dev/null +++ b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWithGenericType/TestComponent.mappings.txt @@ -0,0 +1,21 @@ +Source Location: (11:0,11 [5] x:\dir\subdir\Test\TestComponent.cshtml) +|TItem| +Generated Location: (462:16,0 [5] ) +|TItem| + +Source Location: (110:6,22 [21] x:\dir\subdir\Test\TestComponent.cshtml) +|TestComponent| +Generated Location: (1237:40,22 [21] ) +|TestComponent| + +Source Location: (25:1,7 [58] x:\dir\subdir\Test\TestComponent.cshtml) +| + [Parameter] + public TItem MyItem { get; set; } +| +Generated Location: (1780:60,7 [58] ) +| + [Parameter] + public TItem MyItem { get; set; } +| + diff --git a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWithInference/TestComponent.codegen.cs b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWithInference/TestComponent.codegen.cs new file mode 100644 index 00000000000..1846e6159af --- /dev/null +++ b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWithInference/TestComponent.codegen.cs @@ -0,0 +1,92 @@ +// +#pragma warning disable 1591 +namespace Test +{ + #line default + using global::System; + using global::System.Collections.Generic; + using global::System.Linq; + using global::System.Threading.Tasks; + using global::Microsoft.AspNetCore.Components; + #line default + #line hidden + #nullable restore + public partial class TestComponent< +#nullable restore +#line 1 "x:\dir\subdir\Test\TestComponent.cshtml" +TItem + +#line default +#line hidden +#nullable disable + > : global::Microsoft.AspNetCore.Components.ComponentBase + #nullable disable + { + #pragma warning disable 219 + private void __RazorDirectiveTokenHelpers__() { + ((global::System.Action)(() => { + } + ))(); + } + #pragma warning restore 219 + #pragma warning disable 0414 + private static object __o = null; + #pragma warning restore 0414 + #pragma warning disable 1998 + protected override void BuildRenderTree(global::Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder __builder) + { + var __typeInference_CreateTestComponent_0 = global::__Blazor.Test.TestComponent.TypeInference.CreateTestComponent_0(__builder, -1, -1, +#nullable restore +#line 7 "x:\dir\subdir\Test\TestComponent.cshtml" + 1 + +#line default +#line hidden +#nullable disable + ); + #pragma warning disable BL0005 + __typeInference_CreateTestComponent_0. +#nullable restore +#line 7 "x:\dir\subdir\Test\TestComponent.cshtml" + MyItem + +#line default +#line hidden +#nullable disable + = default; + #pragma warning restore BL0005 +#nullable restore +#line 7 "x:\dir\subdir\Test\TestComponent.cshtml" +__o = typeof(global::Test.TestComponent<>); + +#line default +#line hidden +#nullable disable + } + #pragma warning restore 1998 +#nullable restore +#line 2 "x:\dir\subdir\Test\TestComponent.cshtml" + + [Parameter] + public TItem MyItem { get; set; } + +#line default +#line hidden +#nullable disable + } +} +namespace __Blazor.Test.TestComponent +{ + #line hidden + internal static class TypeInference + { + public static global::Test.TestComponent CreateTestComponent_0(global::Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder __builder, int seq, int __seq0, TItem __arg0) + { + __builder.OpenComponent>(seq); + __builder.AddAttribute(__seq0, "MyItem", (object)__arg0); + __builder.CloseComponent(); + return default; + } + } +} +#pragma warning restore 1591 diff --git a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWithInference/TestComponent.ir.txt b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWithInference/TestComponent.ir.txt new file mode 100644 index 00000000000..10c17dcf1df --- /dev/null +++ b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWithInference/TestComponent.ir.txt @@ -0,0 +1,27 @@ +Document - + NamespaceDeclaration - - Test + UsingDirective - (3:1,1 [20] ) - global::System + UsingDirective - (26:2,1 [40] ) - global::System.Collections.Generic + UsingDirective - (69:3,1 [25] ) - global::System.Linq + UsingDirective - (97:4,1 [36] ) - global::System.Threading.Tasks + UsingDirective - (136:5,1 [45] ) - global::Microsoft.AspNetCore.Components + ClassDeclaration - - public partial - TestComponent - global::Microsoft.AspNetCore.Components.ComponentBase - - TItem + DesignTimeDirective - + DirectiveToken - (11:0,11 [5] x:\dir\subdir\Test\TestComponent.cshtml) - TItem + CSharpCode - + IntermediateToken - - CSharp - #pragma warning disable 0414 + CSharpCode - + IntermediateToken - - CSharp - private static object __o = null; + CSharpCode - + IntermediateToken - - CSharp - #pragma warning restore 0414 + MethodDeclaration - - protected override - void - BuildRenderTree + HtmlContent - (84:4,1 [4] x:\dir\subdir\Test\TestComponent.cshtml) + LazyIntermediateToken - (84:4,1 [4] x:\dir\subdir\Test\TestComponent.cshtml) - Html - \n\n + Component - (88:6,0 [28] x:\dir\subdir\Test\TestComponent.cshtml) - TestComponent + ComponentAttribute - (111:6,23 [1] x:\dir\subdir\Test\TestComponent.cshtml) - MyItem - MyItem - AttributeStructure.DoubleQuotes + LazyIntermediateToken - (111:6,23 [1] x:\dir\subdir\Test\TestComponent.cshtml) - CSharp - 1 + CSharpCode - (25:1,7 [58] x:\dir\subdir\Test\TestComponent.cshtml) + LazyIntermediateToken - (25:1,7 [58] x:\dir\subdir\Test\TestComponent.cshtml) - CSharp - \n [Parameter]\n public TItem MyItem { get; set; }\n + NamespaceDeclaration - - __Blazor.Test.TestComponent + ClassDeclaration - - internal static - TypeInference - - + ComponentTypeInferenceMethod - - __Blazor.Test.TestComponent.TypeInference - CreateTestComponent_0 diff --git a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWithInference/TestComponent.mappings.txt b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWithInference/TestComponent.mappings.txt new file mode 100644 index 00000000000..737f49fb41a --- /dev/null +++ b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentDesignTimeCodeGenerationTest/GenericComponentTypeUsageWithInference/TestComponent.mappings.txt @@ -0,0 +1,26 @@ +Source Location: (11:0,11 [5] x:\dir\subdir\Test\TestComponent.cshtml) +|TItem| +Generated Location: (462:16,0 [5] ) +|TItem| + +Source Location: (111:6,23 [1] x:\dir\subdir\Test\TestComponent.cshtml) +|1| +Generated Location: (1360:40,23 [1] ) +|1| + +Source Location: (103:6,15 [6] x:\dir\subdir\Test\TestComponent.cshtml) +|MyItem| +Generated Location: (1610:50,15 [6] ) +|MyItem| + +Source Location: (25:1,7 [58] x:\dir\subdir\Test\TestComponent.cshtml) +| + [Parameter] + public TItem MyItem { get; set; } +| +Generated Location: (2028:68,7 [58] ) +| + [Parameter] + public TItem MyItem { get; set; } +| + diff --git a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentRuntimeCodeGenerationTest/BindToGenericComponent_ExplicitType_WithAfter_Action/TestComponent.codegen.cs b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentRuntimeCodeGenerationTest/BindToGenericComponent_ExplicitType_WithAfter_Action/TestComponent.codegen.cs index ab08e5ff407..4d080a4798e 100644 --- a/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentRuntimeCodeGenerationTest/BindToGenericComponent_ExplicitType_WithAfter_Action/TestComponent.codegen.cs +++ b/src/razor/src/Compiler/Microsoft.AspNetCore.Razor.Language/test/TestFiles/IntegrationTests/ComponentRuntimeCodeGenerationTest/BindToGenericComponent_ExplicitType_WithAfter_Action/TestComponent.codegen.cs @@ -17,7 +17,15 @@ public partial class TestComponent : global::Microsoft.AspNetCore.Components.Com #pragma warning disable 1998 protected override void BuildRenderTree(global::Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder __builder) { - __builder.OpenComponent>(0); + __builder.OpenComponent