diff --git a/ReSharper.FSharp/src/FSharp.Psi/src/Resolve/FSharpFileResolvedSymbols.cs b/ReSharper.FSharp/src/FSharp.Psi/src/Resolve/FSharpFileResolvedSymbols.cs index a8daeb0939..566ebbe655 100644 --- a/ReSharper.FSharp/src/FSharp.Psi/src/Resolve/FSharpFileResolvedSymbols.cs +++ b/ReSharper.FSharp/src/FSharp.Psi/src/Resolve/FSharpFileResolvedSymbols.cs @@ -243,7 +243,7 @@ private ResolvedSymbols CreateFileResolvedSymbols() private static bool CanIgnoreSymbol([NotNull] FSharpSymbol symbol) => symbol is FSharpEntity || - symbol is FSharpMemberOrFunctionOrValue mfv && mfv.LogicalName == "op_RangeStep"; + symbol is FSharpMemberOrFunctionOrValue mfv && (mfv.LogicalName == "op_RangeStep" || mfv.IsConstructor); private TextRange FixRange(int startOffset, int endOffset, [CanBeNull] string logicalName, IBuffer buffer, CachingLexer lexer) @@ -268,7 +268,7 @@ private ResolvedSymbols CreateFileResolvedSymbols() return new TextRange(startOffset, endOffset); // todo: use lexer buffer - if (lexer.FindTokenAt(endOffset - 1) && lexer.TokenType is TokenNodeType tokenType) + if (lexer.FindTokenAt(endOffset - 1) && lexer.TokenType is { } tokenType) { var opText = tokenType == FSharpTokenType.SYMBOLIC_OP ? sourceName : logicalName; return new TextRange(endOffset - opText.Length, endOffset); diff --git a/ReSharper.FSharp/test/data/features/daemon/identifierHighlighting/Method - Parameters - Optional 01.fs b/ReSharper.FSharp/test/data/features/daemon/identifierHighlighting/Method - Parameters - Optional 01.fs new file mode 100644 index 0000000000..a7b1a96705 --- /dev/null +++ b/ReSharper.FSharp/test/data/features/daemon/identifierHighlighting/Method - Parameters - Optional 01.fs @@ -0,0 +1,2 @@ +type T() = + static member M1(?a) = () diff --git a/ReSharper.FSharp/test/data/features/daemon/identifierHighlighting/Method - Parameters - Optional 01.fs.gold b/ReSharper.FSharp/test/data/features/daemon/identifierHighlighting/Method - Parameters - Optional 01.fs.gold new file mode 100644 index 0000000000..3fcd16ce7e --- /dev/null +++ b/ReSharper.FSharp/test/data/features/daemon/identifierHighlighting/Method - Parameters - Optional 01.fs.gold @@ -0,0 +1,7 @@ +type |T|(0)() = + static member |M1|(1)(?|a|(2)) = () + +--------------------------------------------------------- +(0): ReSharper F# Class Identifier: +(1): ReSharper F# Method Identifier: +(2): ReSharper F# Value Identifier: diff --git a/ReSharper.FSharp/test/data/features/daemon/identifierHighlighting/Method - Parameters - Optional 02 - Private.fs b/ReSharper.FSharp/test/data/features/daemon/identifierHighlighting/Method - Parameters - Optional 02 - Private.fs new file mode 100644 index 0000000000..a042be25fc --- /dev/null +++ b/ReSharper.FSharp/test/data/features/daemon/identifierHighlighting/Method - Parameters - Optional 02 - Private.fs @@ -0,0 +1,2 @@ +type T() = + static member private M1(?a) = () diff --git a/ReSharper.FSharp/test/data/features/daemon/identifierHighlighting/Method - Parameters - Optional 02 - Private.fs.gold b/ReSharper.FSharp/test/data/features/daemon/identifierHighlighting/Method - Parameters - Optional 02 - Private.fs.gold new file mode 100644 index 0000000000..7f7057e8a5 --- /dev/null +++ b/ReSharper.FSharp/test/data/features/daemon/identifierHighlighting/Method - Parameters - Optional 02 - Private.fs.gold @@ -0,0 +1,7 @@ +type |T|(0)() = + static member private |M1|(1)(?|a|(2)) = () + +--------------------------------------------------------- +(0): ReSharper F# Class Identifier: +(1): ReSharper F# Method Identifier: +(2): ReSharper F# Value Identifier: diff --git a/ReSharper.FSharp/test/data/parsing/Type member - Member - Method - Parameters 03 - Optional.fs b/ReSharper.FSharp/test/data/parsing/Type member - Member - Method - Parameters - Optional 01.fs similarity index 100% rename from ReSharper.FSharp/test/data/parsing/Type member - Member - Method - Parameters 03 - Optional.fs rename to ReSharper.FSharp/test/data/parsing/Type member - Member - Method - Parameters - Optional 01.fs diff --git a/ReSharper.FSharp/test/data/parsing/Type member - Member - Method - Parameters 03 - Optional.fs.gold b/ReSharper.FSharp/test/data/parsing/Type member - Member - Method - Parameters - Optional 01.fs.gold similarity index 100% rename from ReSharper.FSharp/test/data/parsing/Type member - Member - Method - Parameters 03 - Optional.fs.gold rename to ReSharper.FSharp/test/data/parsing/Type member - Member - Method - Parameters - Optional 01.fs.gold diff --git a/ReSharper.FSharp/test/data/parsing/Type member - Member - Method - Parameters 04 - Optional.fs b/ReSharper.FSharp/test/data/parsing/Type member - Member - Method - Parameters - Optional 02.fs similarity index 100% rename from ReSharper.FSharp/test/data/parsing/Type member - Member - Method - Parameters 04 - Optional.fs rename to ReSharper.FSharp/test/data/parsing/Type member - Member - Method - Parameters - Optional 02.fs diff --git a/ReSharper.FSharp/test/data/parsing/Type member - Member - Method - Parameters 04 - Optional.fs.gold b/ReSharper.FSharp/test/data/parsing/Type member - Member - Method - Parameters - Optional 02.fs.gold similarity index 100% rename from ReSharper.FSharp/test/data/parsing/Type member - Member - Method - Parameters 04 - Optional.fs.gold rename to ReSharper.FSharp/test/data/parsing/Type member - Member - Method - Parameters - Optional 02.fs.gold diff --git a/ReSharper.FSharp/test/data/parsing/Type member - Member - Method - Parameters - Optional 03 - Private.fs b/ReSharper.FSharp/test/data/parsing/Type member - Member - Method - Parameters - Optional 03 - Private.fs new file mode 100644 index 0000000000..30429287dc --- /dev/null +++ b/ReSharper.FSharp/test/data/parsing/Type member - Member - Method - Parameters - Optional 03 - Private.fs @@ -0,0 +1,2 @@ +type T = + static member private M(?a) = () diff --git a/ReSharper.FSharp/test/data/parsing/Type member - Member - Method - Parameters - Optional 03 - Private.fs.gold b/ReSharper.FSharp/test/data/parsing/Type member - Member - Method - Parameters - Optional 03 - Private.fs.gold new file mode 100644 index 0000000000..214598e429 --- /dev/null +++ b/ReSharper.FSharp/test/data/parsing/Type member - Member - Method - Parameters - Optional 03 - Private.fs.gold @@ -0,0 +1,39 @@ +Language: PsiLanguageType:F# +IFSharpImplFile + IAnonModuleDeclaration + ITypeDeclarationGroup + FSharpTokenType+TypeTokenElement(type:TYPE, text:type) + Whitespace(type:WHITE_SPACE, text: ) spaces:" " + IFSharpTypeDeclaration + FSharpIdentifierToken(type:IDENTIFIER, text:T) + Whitespace(type:WHITE_SPACE, text: ) spaces:" " + FSharpTokenType+EqualsTokenElement(type:EQUALS, text:=) + NewLine(type:NEW_LINE, text:\n) spaces:"\n" + Whitespace(type:WHITE_SPACE, text: ) spaces:" " + ITypeMemberDeclarationList + IMemberDeclaration + FSharpTokenType+StaticTokenElement(type:STATIC, text:static) + Whitespace(type:WHITE_SPACE, text: ) spaces:" " + FSharpTokenType+MemberTokenElement(type:MEMBER, text:member) + Whitespace(type:WHITE_SPACE, text: ) spaces:" " + FSharpTokenType+PrivateTokenElement(type:PRIVATE, text:private) + Whitespace(type:WHITE_SPACE, text: ) spaces:" " + FSharpIdentifierToken(type:IDENTIFIER, text:M) + IParametersPatternDeclaration + IParenPat + FSharpTokenType+LparenTokenElement(type:LPAREN, text:() + IOptionalValPat + FSharpTokenType+QmarkTokenElement(type:QMARK, text:?) + ILocalReferencePat + IExpressionReferenceName + FSharpIdentifierToken(type:IDENTIFIER, text:a) + FSharpTokenType+RparenTokenElement(type:RPAREN, text:)) + Whitespace(type:WHITE_SPACE, text: ) spaces:" " + FSharpTokenType+EqualsTokenElement(type:EQUALS, text:=) + Whitespace(type:WHITE_SPACE, text: ) spaces:" " + IChameleonExpression + IUnitExpr + FSharpTokenType+LparenTokenElement(type:LPAREN, text:() + FSharpTokenType+RparenTokenElement(type:RPAREN, text:)) + NewLine(type:NEW_LINE, text:\n) spaces:"\n" + diff --git a/ReSharper.FSharp/test/src/FSharp.Tests/Daemon/IdentifierHighlightingTest.fs b/ReSharper.FSharp/test/src/FSharp.Tests/Daemon/IdentifierHighlightingTest.fs index 998692c199..f82097ddb4 100644 --- a/ReSharper.FSharp/test/src/FSharp.Tests/Daemon/IdentifierHighlightingTest.fs +++ b/ReSharper.FSharp/test/src/FSharp.Tests/Daemon/IdentifierHighlightingTest.fs @@ -57,3 +57,6 @@ type IdentifierHighlightingTest() = [] member x.``Type aliases 02 - Simple types without System dependence``() = x.DoNamedTest() [] member x.``Type aliases 03 - Units of Measure``() = x.DoNamedTest() [] member x.``Type aliases 04 - Core abbreviations``() = x.DoNamedTest() + + [] member x.``Method - Parameters - Optional 01``() = x.DoNamedTest() + [] member x.``Method - Parameters - Optional 02 - Private``() = x.DoNamedTest() diff --git a/ReSharper.FSharp/test/src/FSharp.Tests/Parsing/FSharpParserTest.fs b/ReSharper.FSharp/test/src/FSharp.Tests/Parsing/FSharpParserTest.fs index eab37c3258..9cbd5a50e2 100644 --- a/ReSharper.FSharp/test/src/FSharp.Tests/Parsing/FSharpParserTest.fs +++ b/ReSharper.FSharp/test/src/FSharp.Tests/Parsing/FSharpParserTest.fs @@ -368,10 +368,11 @@ type FSharpParserTest() = [] member x.``Type member - Member 01 - Wild self id``() = x.DoNamedTest() + [] member x.``Type member - Member - Method - Parameters - Optional 01``() = x.DoNamedTest() + [] member x.``Type member - Member - Method - Parameters - Optional 02``() = x.DoNamedTest() + [] member x.``Type member - Member - Method - Parameters - Optional 03 - Private``() = x.DoNamedTest() [] member x.``Type member - Member - Method - Parameters 01``() = x.DoNamedTest() [] member x.``Type member - Member - Method - Parameters 02``() = x.DoNamedTest() - [] member x.``Type member - Member - Method - Parameters 03 - Optional``() = x.DoNamedTest() - [] member x.``Type member - Member - Method - Parameters 04 - Optional``() = x.DoNamedTest() [] member x.``Type member - Member - Method - Curried Parameters 01``() = x.DoNamedTest()