Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions src/Compilers/CSharp/Portable/CSharpResources.resx
Original file line number Diff line number Diff line change
Expand Up @@ -2500,9 +2500,6 @@ A catch() block after a catch (System.Exception e) block can catch non-CLS excep
<data name="ERR_BadParameterModifiers" xml:space="preserve">
<value> The parameter modifier '{0}' cannot be used with '{1}'</value>
</data>
<data name="ERR_BadParameterModifiersOrder" xml:space="preserve">
<value> The parameter modifier '{0}' cannot follow '{1}'</value>
</data>
<data name="ERR_BadTypeforThis" xml:space="preserve">
<value>The first parameter of an extension method cannot be of type '{0}'</value>
</data>
Expand Down Expand Up @@ -7235,7 +7232,4 @@ To remove the warning, you can use /reference instead (set the Embed Interop Typ
<data name="ERR_ReadOnlyNotSuppAsParamModDidYouMeanIn" xml:space="preserve">
<value>'readonly' is not supported as a parameter modifier. Did you mean 'in'?</value>
</data>
<data name="ERR_ScopedNotBeforeType" xml:space="preserve">
<value>Invalid use of contextual keyword 'scoped'. The keyword should immediately precede the type or 'ref' keyword.</value>
</data>
</root>
4 changes: 2 additions & 2 deletions src/Compilers/CSharp/Portable/Errors/ErrorCode.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1523,7 +1523,7 @@ internal enum ErrorCode
ERR_TypeReserved = 8336,
ERR_RefExtensionMustBeValueTypeOrConstrainedToOne = 8337,
ERR_InExtensionMustBeValueType = 8338,
ERR_BadParameterModifiersOrder = 8339,
// ERR_BadParameterModifiersOrder = 8339,

ERR_FieldsInRoStruct = 8340,
ERR_AutoPropsInRoStruct = 8341,
Expand Down Expand Up @@ -2120,7 +2120,7 @@ internal enum ErrorCode
ERR_FilePathCannotBeConvertedToUtf8 = 9069,
ERR_ReadOnlyNotSuppAsParamModDidYouMeanIn = 9070,
ERR_FileLocalDuplicateNameInNS = 9071,
ERR_ScopedNotBeforeType = 9072,
// Available 9072,
WRN_ScopedMismatchInParameterOfTarget = 9073,
WRN_ScopedMismatchInParameterOfOverrideOrImplementation = 9074,

Expand Down
2 changes: 0 additions & 2 deletions src/Compilers/CSharp/Portable/Errors/ErrorFacts.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2211,7 +2211,6 @@ internal static bool IsBuildOnlyDiagnostic(ErrorCode code)
case ErrorCode.ERR_FileTypeNameDisallowed:
case ErrorCode.ERR_FeatureNotAvailableInVersion11:
case ErrorCode.ERR_RefFieldInNonRefStruct:
case ErrorCode.ERR_BadParameterModifiersOrder:
case ErrorCode.WRN_AnalyzerReferencesNewerCompiler:
case ErrorCode.ERR_CannotMatchOnINumberBase:
case ErrorCode.ERR_ScopedTypeNameDisallowed:
Expand All @@ -2223,7 +2222,6 @@ internal static bool IsBuildOnlyDiagnostic(ErrorCode code)
case ErrorCode.ERR_FilePathCannotBeConvertedToUtf8:
case ErrorCode.ERR_ReadOnlyNotSuppAsParamModDidYouMeanIn:
case ErrorCode.ERR_FileLocalDuplicateNameInNS:
case ErrorCode.ERR_ScopedNotBeforeType:
case ErrorCode.WRN_ScopedMismatchInParameterOfTarget:
case ErrorCode.WRN_ScopedMismatchInParameterOfOverrideOrImplementation:
return false;
Expand Down
243 changes: 146 additions & 97 deletions src/Compilers/CSharp/Portable/Parser/LanguageParser.cs

Large diffs are not rendered by default.

46 changes: 11 additions & 35 deletions src/Compilers/CSharp/Portable/Symbols/Source/ParameterHelpers.cs
Original file line number Diff line number Diff line change
Expand Up @@ -428,7 +428,7 @@ internal static void CheckParameterModifiers(
var seenOut = false;
var seenParams = false;
var seenIn = false;
bool scopedBeforeRef = false;
bool seenScoped = false;

foreach (var modifier in parameter.Modifiers)
{
Expand Down Expand Up @@ -582,29 +582,12 @@ internal static void CheckParameterModifiers(

case SyntaxKind.ScopedKeyword when !parsingFunctionPointerParams:
ModifierUtils.CheckScopedModifierAvailability(parameter, modifier, diagnostics);
if (seenIn)
{
addERR_BadParameterModifiersOrder(diagnostics, modifier, SyntaxKind.InKeyword);
}
else if (seenOut)
{
addERR_BadParameterModifiersOrder(diagnostics, modifier, SyntaxKind.OutKeyword);
}
else if (seenRef)
{
addERR_BadParameterModifiersOrder(diagnostics, modifier, SyntaxKind.RefKeyword);
}
else
{
if (scopedBeforeRef)
{
addERR_DupParamMod(diagnostics, modifier);
}
else
{
scopedBeforeRef = true;
}
}
Debug.Assert(!seenIn);
Debug.Assert(!seenOut);
Debug.Assert(!seenRef);
Debug.Assert(!seenScoped);

seenScoped = true;
break;

case SyntaxKind.ReadOnlyKeyword:
Expand All @@ -626,11 +609,6 @@ static void addERR_DupParamMod(BindingDiagnosticBag diagnostics, SyntaxToken mod
diagnostics.Add(ErrorCode.ERR_DupParamMod, modifier.GetLocation(), SyntaxFacts.GetText(modifier.Kind()));
}

static void addERR_BadParameterModifiersOrder(BindingDiagnosticBag diagnostics, SyntaxToken modifier, SyntaxKind otherModifierKind)
{
diagnostics.Add(ErrorCode.ERR_BadParameterModifiersOrder, modifier.GetLocation(), SyntaxFacts.GetText(modifier.Kind()), SyntaxFacts.GetText(otherModifierKind));
}

static void addERR_BadParameterModifiers(BindingDiagnosticBag diagnostics, SyntaxToken modifier, SyntaxKind otherModifierKind)
{
diagnostics.Add(ErrorCode.ERR_BadParameterModifiers, modifier.GetLocation(), SyntaxFacts.GetText(modifier.Kind()), SyntaxFacts.GetText(otherModifierKind));
Expand Down Expand Up @@ -917,7 +895,7 @@ internal static MethodSymbol FindContainingGenericMethod(Symbol symbol)
internal static RefKind GetModifiers(SyntaxTokenList modifiers, out SyntaxToken refnessKeyword, out SyntaxToken paramsKeyword, out SyntaxToken thisKeyword, out DeclarationScope scope)
{
var refKind = RefKind.None;
bool scopedBeforeRef = false;
bool isScoped = false;

refnessKeyword = default(SyntaxToken);
paramsKeyword = default(SyntaxToken);
Expand Down Expand Up @@ -955,15 +933,13 @@ internal static RefKind GetModifiers(SyntaxTokenList modifiers, out SyntaxToken
thisKeyword = modifier;
break;
case SyntaxKind.ScopedKeyword:
if (refKind == RefKind.None)
{
scopedBeforeRef = true;
}
Debug.Assert(refKind == RefKind.None);
isScoped = true;
break;
}
}

if (scopedBeforeRef)
if (isScoped)
{
scope = (refKind == RefKind.None) ? DeclarationScope.ValueScoped : DeclarationScope.RefScoped;
}
Expand Down
10 changes: 0 additions & 10 deletions src/Compilers/CSharp/Portable/xlf/CSharpResources.cs.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 0 additions & 10 deletions src/Compilers/CSharp/Portable/xlf/CSharpResources.de.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 0 additions & 10 deletions src/Compilers/CSharp/Portable/xlf/CSharpResources.es.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 0 additions & 10 deletions src/Compilers/CSharp/Portable/xlf/CSharpResources.fr.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 0 additions & 10 deletions src/Compilers/CSharp/Portable/xlf/CSharpResources.it.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 0 additions & 10 deletions src/Compilers/CSharp/Portable/xlf/CSharpResources.ja.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 0 additions & 10 deletions src/Compilers/CSharp/Portable/xlf/CSharpResources.ko.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 0 additions & 10 deletions src/Compilers/CSharp/Portable/xlf/CSharpResources.pl.xlf

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading