From 701404c794f32ae794f722aec26299586d2daab2 Mon Sep 17 00:00:00 2001 From: Bart Koelman Date: Fri, 13 May 2016 21:09:24 +0200 Subject: [PATCH] Add InternalImplementationOnly and doc-comments on IOperation (#11246) This supports running an analyzer that warns when a user implements these interfaces. A prerequisite to fix https://github.com/dotnet/roslyn-analyzers/issues/863. - Copied the remark from `ISymbol` derivations on all public interfaces that derive from `IOperation` - Added remark and `[InternalImplementationOnly]` on `IOperation` - Removed `[InternalImplementationOnly]` from `ISourceAssemblySymbol` because it was only there, unneeded --- .../Core/Portable/Compilation/IExpression.cs | 207 +++++++++++++++++- .../Core/Portable/Compilation/IOperation.cs | 6 + .../Core/Portable/Compilation/IStatement.cs | 124 ++++++++++- .../Portable/Symbols/ISourceAssemblySymbol.cs | 1 - 4 files changed, 331 insertions(+), 7 deletions(-) diff --git a/src/Compilers/Core/Portable/Compilation/IExpression.cs b/src/Compilers/Core/Portable/Compilation/IExpression.cs index 98eb2db52eb24..4cf6988a2218f 100644 --- a/src/Compilers/Core/Portable/Compilation/IExpression.cs +++ b/src/Compilers/Core/Portable/Compilation/IExpression.cs @@ -4,6 +4,10 @@ namespace Microsoft.CodeAnalysis.Semantics { + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IHasArgumentsExpression : IOperation { /// @@ -23,6 +27,10 @@ public interface IHasArgumentsExpression : IOperation /// /// Represents a C# or VB method invocation. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IInvocationExpression : IHasArgumentsExpression { /// @@ -48,6 +56,10 @@ public interface IInvocationExpression : IHasArgumentsExpression /// /// Represents an argument in a method invocation. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IArgument : IOperation { /// @@ -100,6 +112,10 @@ public enum ArgumentKind /// /// Represents a reference to an array element. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IArrayElementReferenceExpression : IOperation { /// @@ -115,6 +131,10 @@ public interface IArrayElementReferenceExpression : IOperation /// /// Represents a reference through a pointer. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IPointerIndirectionReferenceExpression : IOperation { /// @@ -126,6 +146,10 @@ public interface IPointerIndirectionReferenceExpression : IOperation /// /// Represents a reference to a declared local variable. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface ILocalReferenceExpression : IOperation { /// @@ -137,6 +161,10 @@ public interface ILocalReferenceExpression : IOperation /// /// Represents a reference to a parameter. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IParameterReferenceExpression : IOperation { /// @@ -148,6 +176,10 @@ public interface IParameterReferenceExpression : IOperation /// /// Represents a reference to a local variable synthesized by language analysis. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface ISyntheticLocalReferenceExpression : IOperation { /// @@ -180,6 +212,10 @@ public enum SyntheticLocalKind /// /// Represents a C# this or base expression, or a VB Me, MyClass, or MyBase expression. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IInstanceReferenceExpression : IOperation { /// @@ -201,10 +237,14 @@ public enum InstanceReferenceKind /// Indicates an explicit MyClass expression. ThisClass = 0x4 } - + /// /// Represents a reference to a member of a class, struct, or interface. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IMemberReferenceExpression : IOperation { /// @@ -213,14 +253,18 @@ public interface IMemberReferenceExpression : IOperation IOperation Instance { get; } /// - /// Referenced member. - /// + /// Referenced member. + /// ISymbol Member { get; } } /// /// Represents a reference to a field. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IFieldReferenceExpression : IMemberReferenceExpression { /// @@ -232,6 +276,10 @@ public interface IFieldReferenceExpression : IMemberReferenceExpression /// /// Represents a reference to a method other than as the target of an invocation. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IMethodBindingExpression : IMemberReferenceExpression { /// @@ -248,6 +296,10 @@ public interface IMethodBindingExpression : IMemberReferenceExpression /// /// Represents a reference to a property. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IPropertyReferenceExpression : IMemberReferenceExpression { /// @@ -259,6 +311,10 @@ public interface IPropertyReferenceExpression : IMemberReferenceExpression /// /// Represents a reference to an indexed property. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IIndexedPropertyReferenceExpression : IPropertyReferenceExpression, IHasArgumentsExpression { } @@ -266,6 +322,10 @@ public interface IIndexedPropertyReferenceExpression : IPropertyReferenceExpress /// /// Represents a reference to an event. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IEventReferenceExpression : IMemberReferenceExpression { /// @@ -277,6 +337,10 @@ public interface IEventReferenceExpression : IMemberReferenceExpression /// /// Represents a binding of an event. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IEventAssignmentExpression : IOperation { /// @@ -303,6 +367,10 @@ public interface IEventAssignmentExpression : IOperation /// /// Represents an expression that includes a ? or ?. conditional access instance expression. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IConditionalAccessExpression : IOperation { /// @@ -318,6 +386,10 @@ public interface IConditionalAccessExpression : IOperation /// /// Represents the value of a conditionally-accessed expression within an expression containing a conditional access. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IConditionalAccessInstanceExpression : IOperation { } @@ -326,6 +398,10 @@ public interface IConditionalAccessInstanceExpression : IOperation /// Represents a general placeholder when no more specific kind of placeholder is available. /// A placeholder is an expression whose meaning is inferred from context. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IPlaceholderExpression : IOperation { } @@ -333,6 +409,10 @@ public interface IPlaceholderExpression : IOperation /// /// Represents a unary, binary, relational, or conversion operation that can use an operator method. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IHasOperatorMethodExpression : IOperation { /// @@ -348,6 +428,10 @@ public interface IHasOperatorMethodExpression : IOperation /// /// Represents an operation with one operand. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IUnaryOperatorExpression : IHasOperatorMethodExpression { /// @@ -473,10 +557,13 @@ public enum UnaryOperationKind Invalid = UnaryOperandKind.Invalid | SimpleUnaryOperationKind.Invalid } - /// /// Represents an operation with two operands that produces a result with the same type as at least one of the operands. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IBinaryOperatorExpression : IHasOperatorMethodExpression { /// @@ -831,6 +918,10 @@ public static BinaryOperandsKind GetBinaryOperandsKind(BinaryOperationKind kind) /// /// Represents a conversion operation. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IConversionExpression : IHasOperatorMethodExpression { /// @@ -882,6 +973,10 @@ public enum ConversionKind /// /// Represents a C# ?: or VB If expression. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IConditionalChoiceExpression : IOperation { /// @@ -901,6 +996,10 @@ public interface IConditionalChoiceExpression : IOperation /// /// Represents a null-coalescing expression. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface INullCoalescingExpression : IOperation { /// @@ -916,6 +1015,10 @@ public interface INullCoalescingExpression : IOperation /// /// Represents an expression that tests if a value is of a specific type. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IIsTypeExpression : IOperation { /// @@ -931,6 +1034,10 @@ public interface IIsTypeExpression : IOperation /// /// Represents an expression operating on a type. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface ITypeOperationExpression : IOperation { /// @@ -942,6 +1049,10 @@ public interface ITypeOperationExpression : IOperation /// /// Represents a SizeOf expression. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface ISizeOfExpression : ITypeOperationExpression { } @@ -949,6 +1060,10 @@ public interface ISizeOfExpression : ITypeOperationExpression /// /// Represents a TypeOf expression. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface ITypeOfExpression : ITypeOperationExpression { } @@ -956,6 +1071,10 @@ public interface ITypeOfExpression : ITypeOperationExpression /// /// Represents a lambda expression. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface ILambdaExpression : IOperation { /// @@ -971,6 +1090,10 @@ public interface ILambdaExpression : IOperation /// /// Represents a textual literal numeric, string, etc. expression. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface ILiteralExpression : IOperation { /// @@ -982,6 +1105,10 @@ public interface ILiteralExpression : IOperation /// /// Represents an await expression. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IAwaitExpression : IOperation { /// @@ -993,6 +1120,10 @@ public interface IAwaitExpression : IOperation /// /// Represents an expression that creates a pointer value by taking the address of a reference. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IAddressOfExpression : IOperation { /// @@ -1004,6 +1135,10 @@ public interface IAddressOfExpression : IOperation /// /// Represents a new/New expression. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IObjectCreationExpression : IHasArgumentsExpression { /// @@ -1019,6 +1154,10 @@ public interface IObjectCreationExpression : IHasArgumentsExpression /// /// Represents an initializer for a field, property, or parameter. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface ISymbolInitializer : IOperation { IOperation Value { get; } @@ -1027,6 +1166,10 @@ public interface ISymbolInitializer : IOperation /// /// Represents an initialization of a field. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IFieldInitializer : ISymbolInitializer { /// @@ -1038,6 +1181,10 @@ public interface IFieldInitializer : ISymbolInitializer /// /// Represents an initialization of a property. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IPropertyInitializer : ISymbolInitializer { /// @@ -1049,6 +1196,10 @@ public interface IPropertyInitializer : ISymbolInitializer /// /// Represents an initialization of a parameter at the point of declaration. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IParameterInitializer : ISymbolInitializer { /// @@ -1060,6 +1211,10 @@ public interface IParameterInitializer : ISymbolInitializer /// /// Represents the creation of an array instance. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IArrayCreationExpression : IOperation { /// @@ -1079,6 +1234,10 @@ public interface IArrayCreationExpression : IOperation /// /// Represents the initialization of an array instance. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IArrayInitializer : IOperation { /// @@ -1090,6 +1249,10 @@ public interface IArrayInitializer : IOperation /// /// Represents an assignment expression. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IAssignmentExpression : IOperation { /// @@ -1105,6 +1268,10 @@ public interface IAssignmentExpression : IOperation /// /// Represents an assignment expression that includes a binary operation. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface ICompoundAssignmentExpression : IAssignmentExpression, IHasOperatorMethodExpression { /// @@ -1116,6 +1283,10 @@ public interface ICompoundAssignmentExpression : IAssignmentExpression, IHasOper /// /// Represents an increment expression. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IIncrementExpression : ICompoundAssignmentExpression { /// @@ -1127,6 +1298,10 @@ public interface IIncrementExpression : ICompoundAssignmentExpression /// /// Represents a parenthesized expression. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IParenthesizedExpression : IOperation { /// @@ -1138,6 +1313,10 @@ public interface IParenthesizedExpression : IOperation /// /// Represents a late-bound reference to a member of a class or struct. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface ILateBoundMemberReferenceExpression : IOperation { /// @@ -1153,22 +1332,42 @@ public interface ILateBoundMemberReferenceExpression : IOperation /// /// Represents an argument value that has been omitted in an invocation. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IOmittedArgumentExpression : IOperation { } + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IUnboundLambdaExpression : IOperation { } + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IDefaultValueExpression : IOperation { } + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface ITypeParameterObjectCreationExpression : IOperation { } + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IInvalidExpression : IOperation { } diff --git a/src/Compilers/Core/Portable/Compilation/IOperation.cs b/src/Compilers/Core/Portable/Compilation/IOperation.cs index cf2b14b1a5650..6855b081bf3e4 100644 --- a/src/Compilers/Core/Portable/Compilation/IOperation.cs +++ b/src/Compilers/Core/Portable/Compilation/IOperation.cs @@ -1,5 +1,6 @@ // Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. +using System.Runtime.CompilerServices; using Microsoft.CodeAnalysis.Semantics; namespace Microsoft.CodeAnalysis @@ -7,6 +8,11 @@ namespace Microsoft.CodeAnalysis /// /// Root type for representing the abstract semantics of C# and VB statements and expressions. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// + [InternalImplementationOnly] public interface IOperation { /// diff --git a/src/Compilers/Core/Portable/Compilation/IStatement.cs b/src/Compilers/Core/Portable/Compilation/IStatement.cs index 22f72ccbc8518..41a2ce90e7326 100644 --- a/src/Compilers/Core/Portable/Compilation/IStatement.cs +++ b/src/Compilers/Core/Portable/Compilation/IStatement.cs @@ -7,6 +7,10 @@ namespace Microsoft.CodeAnalysis.Semantics /// /// Represents a block scope. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IBlockStatement : IOperation { /// @@ -22,6 +26,10 @@ public interface IBlockStatement : IOperation /// /// Represents a local variable declaration statement. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IVariableDeclarationStatement : IOperation { /// @@ -33,6 +41,10 @@ public interface IVariableDeclarationStatement : IOperation /// /// Represents a local variable declaration. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IVariableDeclaration : IOperation { /// @@ -48,6 +60,10 @@ public interface IVariableDeclaration : IOperation /// /// Represents a C# switch or VB Select Case statement. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface ISwitchStatement : IOperation { /// @@ -63,6 +79,10 @@ public interface ISwitchStatement : IOperation /// /// Represents a C# case or VB Case statement. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface ISwitchCase : IOperation { /// @@ -78,6 +98,10 @@ public interface ISwitchCase : IOperation /// /// Represents a clause of a C# case or a VB Case. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface ICaseClause : IOperation { /// @@ -114,6 +138,10 @@ public enum CaseKind /// /// Represents case x in C# or Case x in VB. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface ISingleValueCaseClause : ICaseClause { /// @@ -129,6 +157,10 @@ public interface ISingleValueCaseClause : ICaseClause /// /// Represents Case Is op x in VB. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IRelationalCaseClause : ICaseClause { /// @@ -136,7 +168,7 @@ public interface IRelationalCaseClause : ICaseClause /// IOperation Value { get; } /// - /// Relational operator used to compare the switch value with the case value. + /// Relational operator used to compare the switch value with the case value. /// BinaryOperationKind Relation { get; } } @@ -144,6 +176,10 @@ public interface IRelationalCaseClause : ICaseClause /// /// Represents Case x To y in VB. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IRangeCaseClause : ICaseClause { /// @@ -159,6 +195,10 @@ public interface IRangeCaseClause : ICaseClause /// /// Represents an if statement in C# or an If statement in VB. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IIfStatement : IOperation { /// @@ -178,6 +218,10 @@ public interface IIfStatement : IOperation /// /// Represents a C# while, for, foreach, or do statement, or a VB While, For, For Each, or Do statement. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface ILoopStatement : IOperation { /// @@ -214,6 +258,10 @@ public enum LoopKind /// /// Represents a C# while, for, or do statement, or a VB While, For, or Do statement. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IForWhileUntilLoopStatement : ILoopStatement { /// @@ -225,6 +273,10 @@ public interface IForWhileUntilLoopStatement : ILoopStatement /// /// Represents a C# while or do statement, or a VB While or Do statement. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IWhileUntilLoopStatement : IForWhileUntilLoopStatement { /// @@ -240,6 +292,10 @@ public interface IWhileUntilLoopStatement : IForWhileUntilLoopStatement /// /// Represents a C# for statement or a VB For statement. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IForLoopStatement : IForWhileUntilLoopStatement { /// @@ -259,6 +315,10 @@ public interface IForLoopStatement : IForWhileUntilLoopStatement /// /// Represents a C# foreach statement or a VB For Each staement. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IForEachLoopStatement : ILoopStatement { /// @@ -274,6 +334,10 @@ public interface IForEachLoopStatement : ILoopStatement /// /// Represents a C# or VB label statement. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface ILabelStatement : IOperation { /// @@ -289,6 +353,10 @@ public interface ILabelStatement : IOperation /// /// Represents a C# goto, break, or continue statement, or a VB GoTo, Exit ***, or Continue *** statement /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IBranchStatement : IOperation { /// @@ -312,6 +380,10 @@ public enum BranchKind /// /// Represents a C# throw or a VB Throw statement. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IThrowStatement : IOperation { /// @@ -323,6 +395,10 @@ public interface IThrowStatement : IOperation /// /// Represents a C# return or a VB Return statement. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IReturnStatement : IOperation { /// @@ -334,6 +410,10 @@ public interface IReturnStatement : IOperation /// /// Represents a C# lock or a VB SyncLock statement. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface ILockStatement : IOperation { /// @@ -349,6 +429,10 @@ public interface ILockStatement : IOperation /// /// Represents a C# try or a VB Try statement. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface ITryStatement : IOperation { /// @@ -368,6 +452,10 @@ public interface ITryStatement : IOperation /// /// Represents a C# catch or VB Catch clause. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface ICatchClause : IOperation { /// @@ -391,6 +479,10 @@ public interface ICatchClause : IOperation /// /// Represents a C# using or VB Using statement. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IUsingStatement : IOperation { /// @@ -408,10 +500,14 @@ public interface IUsingStatement : IOperation /// IOperation Value { get; } } - + /// /// Represents a C# fixed staement. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IFixedStatement : IOperation { /// @@ -427,6 +523,10 @@ public interface IFixedStatement : IOperation /// /// Represents a C# or VB statement that consists solely of an expression. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IExpressionStatement : IOperation { /// @@ -438,6 +538,10 @@ public interface IExpressionStatement : IOperation /// /// Represents a VB With statement. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IWithStatement : IOperation { /// @@ -453,6 +557,10 @@ public interface IWithStatement : IOperation /// /// Reprsents an empty statement. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IEmptyStatement : IOperation { } @@ -460,6 +568,10 @@ public interface IEmptyStatement : IOperation /// /// Represents a VB Stop statement. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IStopStatement : IOperation { } @@ -467,6 +579,10 @@ public interface IStopStatement : IOperation /// /// Represents a VB End statemnt. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IEndStatement : IOperation { } @@ -474,6 +590,10 @@ public interface IEndStatement : IOperation /// /// Represents a syntactically or semantically invalid C# or VB statement. /// + /// + /// This interface is reserved for implementation by its associated APIs. We reserve the right to + /// change it in the future. + /// public interface IInvalidStatement : IOperation { } diff --git a/src/Compilers/Core/Portable/Symbols/ISourceAssemblySymbol.cs b/src/Compilers/Core/Portable/Symbols/ISourceAssemblySymbol.cs index 6245d1c136fed..d7b2bd79bf137 100644 --- a/src/Compilers/Core/Portable/Symbols/ISourceAssemblySymbol.cs +++ b/src/Compilers/Core/Portable/Symbols/ISourceAssemblySymbol.cs @@ -16,7 +16,6 @@ namespace Microsoft.CodeAnalysis /// This interface is reserved for implementation by its associated APIs. We reserve the right to /// change it in the future. /// - [InternalImplementationOnly] public interface ISourceAssemblySymbol : IAssemblySymbol { Compilation Compilation { get; }