Skip to content
This repository was archived by the owner on Jan 3, 2019. It is now read-only.

Commit 146ca92

Browse files
committed
Merge pull request #265 from rneatherway/issue217
Issue217
2 parents 30c4275 + 0df22af commit 146ca92

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed

FSharp.CompilerBinding/Parser.fs

+15-2
Original file line numberDiff line numberDiff line change
@@ -158,12 +158,25 @@ module Parsing =
158158
return String.ofReversedSeq (c::cs)
159159
}
160160

161+
let parseActivePatternEnd =
162+
let rec aux = parser {
163+
let! i = some (sat PrettyNaming.IsLongIdentifierPartCharacter)
164+
let! p = char '|'
165+
let! rest = parser { let! _ = char ')'
166+
return [] } <|> aux
167+
return i@p::rest }
168+
parser {
169+
let! p = optional (char '|')
170+
let! rest = aux
171+
return if p.IsSome then p.Value::rest else rest
172+
}
173+
let fsharpIdentCharacter = sat PrettyNaming.IsIdentifierPartCharacter
174+
161175
/// Parses F# short-identifier (i.e. not including '.'); also ignores active patterns
162176
let parseIdent =
163-
parseSymOpFragment <|> many (sat PrettyNaming.IsIdentifierPartCharacter)
177+
parseActivePatternEnd <|> parseSymOpFragment <|> many fsharpIdentCharacter
164178
|> map String.ofSeq
165179

166-
let fsharpIdentCharacter = sat PrettyNaming.IsIdentifierPartCharacter
167180

168181
let rawIdChar = sat (fun c -> c <> '\n' && c <> '\t' && c <> '\r' && c <> '`')
169182

0 commit comments

Comments
 (0)