Skip to content

Commit

Permalink
Add DOLLAR token to FsTokenType. Fixes fsprojects#1598.
Browse files Browse the repository at this point in the history
  • Loading branch information
nojaf committed Apr 4, 2021
1 parent c044cdf commit 00be0f6
Show file tree
Hide file tree
Showing 3 changed files with 101 additions and 80 deletions.
19 changes: 19 additions & 0 deletions src/Fantomas.Tests/OperatorTests.fs
Original file line number Diff line number Diff line change
Expand Up @@ -1068,3 +1068,22 @@ let expected =
| None -> 0
|> id
"""
[<Test>]
let ``dollar in custom operator, 1598`` () =
formatSourceString
false
"""
/// Destructure and apply a tuple to an arbitrary value.
/// E.g. `myFn $ (arg1, arg2)` in JS becomes `myFn(arg1, arg2)`
let ($) (callee: obj) (args: obj): 'a = jsNative
"""
config
|> prepend newline
|> should
equal
"""
/// Destructure and apply a tuple to an arbitrary value.
/// E.g. `myFn $ (arg1, arg2)` in JS becomes `myFn(arg1, arg2)`
let ($) (callee: obj) (args: obj) : 'a = jsNative
"""
81 changes: 41 additions & 40 deletions src/Fantomas/TokenParser.fs
Original file line number Diff line number Diff line change
Expand Up @@ -1027,55 +1027,56 @@ let private tokenKinds = [ FSharpTokenCharKind.Operator ]

let internal getFsToken tokenName =
match tokenName with
| "LBRACE" -> LBRACE
| "RBRACE" -> RBRACE
| "LPAREN" -> LPAREN
| "RPAREN" -> RPAREN
| "LBRACK" -> LBRACK
| "RBRACK" -> RBRACK
| "LBRACK_BAR" -> LBRACK_BAR
| "AMP" -> AMP
| "AMP_AMP" -> AMP_AMP
| "AND_BANG" -> AND_BANG
| "BAR" -> BAR
| "BAR_BAR" -> BAR_BAR
| "BAR_RBRACK" -> BAR_RBRACK
| "EQUALS" -> EQUALS
| "IF" -> IF
| "THEN" -> THEN
| "ELSE" -> ELSE
| "COLON_COLON" -> COLON_COLON
| "COLON_EQUALS" -> COLON_EQUALS
| "COLON_GREATER" -> COLON_GREATER
| "COLON_QMARK" -> COLON_QMARK
| "COLON_QMARK_GREATER" -> COLON_QMARK_GREATER
| "DELAYED" -> DELAYED
| "DO" -> DO
| "DOLLAR" -> DOLLAR
| "DOT_DOT" -> DOT_DOT
| "DOT_DOT_HAT" -> DOT_DOT_HAT
| "ELIF" -> ELIF
| "BAR" -> BAR
| "RARROW" -> RARROW
| "TRY" -> TRY
| "ELSE" -> ELSE
| "EQUALS" -> EQUALS
| "FINALLY" -> FINALLY
| "WITH" -> WITH
| "MEMBER" -> MEMBER
| "AND_BANG" -> AND_BANG
| "PERCENT_OP" -> PERCENT_OP
| "AMP" -> AMP
| "FUNCTION" -> FUNCTION
| "GREATER" -> GREATER
| "IF" -> IF
| "IN" -> IN
| "INFIX_AMP_OP" -> INFIX_AMP_OP
| "INFIX_BAR_OP" -> INFIX_BAR_OP
| "INFIX_COMPARE_OP" -> INFIX_COMPARE_OP
| "LESS" -> LESS
| "AMP_AMP" -> AMP_AMP
| "GREATER" -> GREATER
| "INFIX_STAR_DIV_MOD_OP" -> INFIX_STAR_DIV_MOD_OP
| "DELAYED" -> DELAYED
| "PLUS_MINUS_OP" -> PLUS_MINUS_OP
| "QMARK" -> QMARK
| "MINUS" -> MINUS
| "COLON_QMARK" -> COLON_QMARK
| "DOT_DOT" -> DOT_DOT
| "INT32_DOT_DOT" -> INT32_DOT_DOT
| "COLON_EQUALS" -> COLON_EQUALS
| "PREFIX_OP" -> PREFIX_OP
| "INFIX_AMP_OP" -> INFIX_AMP_OP
| "COLON_QMARK_GREATER" -> COLON_QMARK_GREATER
| "COLON_COLON" -> COLON_COLON
| "COLON_GREATER" -> COLON_GREATER
| "DOT_DOT_HAT" -> DOT_DOT_HAT
| "BAR_BAR" -> BAR_BAR
| "INFIX_STAR_STAR_OP" -> INFIX_STAR_STAR_OP
| "FUNCTION" -> FUNCTION
| "INT32_DOT_DOT" -> INT32_DOT_DOT
| "LBRACE" -> LBRACE
| "LBRACK" -> LBRACK
| "LBRACK_BAR" -> LBRACK_BAR
| "LESS" -> LESS
| "LPAREN" -> LPAREN
| "LPAREN_STAR_RPAREN" -> LPAREN_STAR_RPAREN
| "IN" -> IN
| "DO" -> DO
| "MEMBER" -> MEMBER
| "MINUS" -> MINUS
| "PERCENT_OP" -> PERCENT_OP
| "PLUS_MINUS_OP" -> PLUS_MINUS_OP
| "PREFIX_OP" -> PREFIX_OP
| "QMARK" -> QMARK
| "QMARK_QMARK" -> QMARK_QMARK
| "RARROW" -> RARROW
| "RBRACE" -> RBRACE
| "RBRACK" -> RBRACK
| "RPAREN" -> RPAREN
| "THEN" -> THEN
| "TRY" -> TRY
| "WITH" -> WITH
| _ -> failwithf "was not expecting token %s" tokenName

let getTriviaNodesFromTokens (mkRange: MkRange) (tokens: Token list) =
Expand Down
81 changes: 41 additions & 40 deletions src/Fantomas/TriviaTypes.fs
Original file line number Diff line number Diff line change
Expand Up @@ -4,55 +4,56 @@ open FSharp.Compiler.SourceCodeServices
open FSharp.Compiler.Text

type FsTokenType =
| LBRACE
| RBRACE
| LPAREN
| RPAREN
| LBRACK
| RBRACK
| LBRACK_BAR
| AMP
| AMP_AMP
| AND_BANG
| BAR
| BAR_BAR
| BAR_RBRACK
| EQUALS
| IF
| THEN
| ELSE
| COLON_COLON
| COLON_EQUALS
| COLON_GREATER
| COLON_QMARK
| COLON_QMARK_GREATER
| DELAYED
| DO
| DOLLAR
| DOT_DOT
| DOT_DOT_HAT
| ELIF
| BAR
| RARROW
| TRY
| ELSE
| EQUALS
| FINALLY
| WITH
| MEMBER
| AND_BANG
| PERCENT_OP
| AMP
| FUNCTION
| GREATER
| IF
| IN
| INFIX_AMP_OP
| INFIX_BAR_OP
| INFIX_COMPARE_OP
| LESS
| AMP_AMP
| GREATER
| INFIX_STAR_DIV_MOD_OP
| DELAYED
| PLUS_MINUS_OP
| QMARK
| MINUS
| COLON_QMARK
| DOT_DOT
| INT32_DOT_DOT
| COLON_EQUALS
| PREFIX_OP
| INFIX_AMP_OP
| COLON_QMARK_GREATER
| COLON_COLON
| COLON_GREATER
| DOT_DOT_HAT
| BAR_BAR
| INFIX_STAR_STAR_OP
| FUNCTION
| INT32_DOT_DOT
| LBRACE
| LBRACK
| LBRACK_BAR
| LESS
| LPAREN
| LPAREN_STAR_RPAREN
| IN
| DO
| MEMBER
| MINUS
| PERCENT_OP
| PLUS_MINUS_OP
| PREFIX_OP
| QMARK
| QMARK_QMARK
| RARROW
| RBRACE
| RBRACK
| RPAREN
| THEN
| TRY
| WITH

type Token =
{ TokenInfo: FSharpTokenInfo
Expand Down

0 comments on commit 00be0f6

Please sign in to comment.