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
3 changes: 2 additions & 1 deletion src/fsharp/TastOps.fs
Original file line number Diff line number Diff line change
Expand Up @@ -2517,7 +2517,8 @@ let fullNameOfEntityRef nmF xref =
| Some pathText -> pathText +.+ nmF xref

let tagEntityRefName (xref: EntityRef) name =
if xref.IsNamespace then tagNamespace name
if Set.contains name Lexhelp.Keywords.keywordTypes then tagKeyword name
else if xref.IsNamespace then tagNamespace name
else if xref.IsModule then tagModule name
else if xref.IsTypeAbbrev then tagAlias name
else if xref.IsFSharpDelegateTycon then tagDelegate name
Expand Down
2 changes: 2 additions & 0 deletions src/fsharp/lexhelp.fs
Original file line number Diff line number Diff line change
Expand Up @@ -298,6 +298,8 @@ module Keywords =
let keywordNames =
keywordList |> List.map (fun (_, w, _) -> w)

let keywordTypes = StructuredFormat.TaggedTextOps.keywordTypes

let keywordTable =
let tab = System.Collections.Generic.Dictionary<string,token>(100)
for _,keyword,token in keywordList do
Expand Down
1 change: 1 addition & 0 deletions src/fsharp/lexhelp.fsi
Original file line number Diff line number Diff line change
Expand Up @@ -68,3 +68,4 @@ module Keywords =
val IdentifierToken : lexargs -> UnicodeLexing.Lexbuf -> string -> Parser.token
val QuoteIdentifierIfNeeded : string -> string
val keywordNames : string list
val keywordTypes : Set<string>
31 changes: 1 addition & 30 deletions src/fsharp/vs/service.fs
Original file line number Diff line number Diff line change
Expand Up @@ -1112,36 +1112,7 @@ type TypeCheckInfo
else
items

let keywordTypes =
[
"array";
"bigint";
"bool";
"byref";
"byte";
"char";
"decimal";
"double";
"float";
"float32";
"int";
"int16";
"int32";
"int64";
"list";
"nativeint";
"obj";
"sbyte";
"seq";
"single";
"string";
"unit";
"uint";
"uint16";
"uint32";
"uint64";
"unativeint"
] |> Set.ofSeq
static let keywordTypes = Lexhelp.Keywords.keywordTypes

/// Get the auto-complete items at a location
member x.GetDeclarations (parseResultsOpt, line, lineStr, colAtEndOfNamesAndResidue, qualifyingNames, partialName, hasTextChangedSinceLastTypecheck) =
Expand Down
36 changes: 33 additions & 3 deletions src/utils/sformat.fs
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,37 @@ namespace Microsoft.FSharp.Text.StructuredFormat
module TaggedTextOps =
#endif
let tagAlias = TaggedText.Alias
let tagClass = TaggedText.Class
let keywordTypes =
[
"array";
"bigint";
"bool";
"byref";
"byte";
"char";
"decimal";
"double";
"float";
"float32";
"int";
"int16";
"int32";
"int64";
"list";
"nativeint";
"obj";
"sbyte";
"seq";
"single";
"string";
"unit";
"uint";
"uint16";
"uint32";
"uint64";
"unativeint";
] |> Set.ofList
let tagClass name = if Set.contains name keywordTypes then TaggedText.Keyword name else TaggedText.Class name
let tagUnionCase = TaggedText.UnionCase
let tagDelegate = TaggedText.Delegate
let tagEnum = TaggedText.Enum
Expand All @@ -216,7 +246,7 @@ namespace Microsoft.FSharp.Text.StructuredFormat
let tagProperty = TaggedText.Property
let tagSpace = TaggedText.Space
let tagStringLiteral = TaggedText.StringLiteral
let tagStruct = TaggedText.Struct
let tagStruct name = if Set.contains name keywordTypes then TaggedText.Keyword name else TaggedText.Struct name
let tagTypeParameter = TaggedText.TypeParameter
let tagText = TaggedText.Text
let tagPunctuation = TaggedText.Punctuation
Expand Down Expand Up @@ -1390,5 +1420,5 @@ namespace Microsoft.FSharp.Text.StructuredFormat

#if COMPILER
/// Called
let fsi_any_to_layout opts x = anyL ShowTopLevelBinding BindingFlags.Public opts x
let fsi_any_to_layout opts x = anyL ShowTopLevelBinding BindingFlags.Public opts x
#endif
1 change: 1 addition & 0 deletions src/utils/sformat.fsi
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ namespace Microsoft.FSharp.Text.StructuredFormat
#else
#endif
TaggedTextOps =
val keywordTypes : Set<string>
val tagAlias : string -> TaggedText
val tagClass : string -> TaggedText
val tagUnionCase : string -> TaggedText
Expand Down