1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
// slang-content-assist-info.h
#pragma once
#include "slang-syntax.h"
#include "slang.h"
namespace Slang
{
struct CompletionSuggestions
{
enum class ScopeKind
{
Invalid,
Member,
Swizzle,
Decl,
Stmt,
Expr,
Attribute,
HLSLSemantics,
Capabilities
};
enum class FormatMode
{
Name,
FullSignature,
FuncSignatureWithoutReturnType
};
ScopeKind scopeKind = ScopeKind::Invalid;
FormatMode formatMode = FormatMode::Name;
Decl* currentPartialDecl = nullptr;
List<LookupResultItem> candidateItems;
Type* swizzleBaseType = nullptr;
IntegerLiteralValue elementCount[2] = {0, 0};
void clear()
{
scopeKind = ScopeKind::Invalid;
formatMode = FormatMode::Name;
candidateItems.clear();
elementCount[0] = 0;
elementCount[1] = 0;
swizzleBaseType = nullptr;
currentPartialDecl = nullptr;
}
};
struct MacroDefinitionContentAssistInfo
{
struct Param
{
Name* name;
bool isVariadic;
};
Name* name;
SourceLoc loc;
List<Param> params;
List<Token> tokenList;
};
struct MacroInvocationContentAssistInfo
{
Name* name;
SourceLoc loc;
};
struct FileIncludeContentAssistInfo
{
SourceLoc loc;
int length;
String path;
};
struct PreprocessorContentAssistInfo
{
List<MacroDefinitionContentAssistInfo> macroDefinitions;
List<MacroInvocationContentAssistInfo> macroInvocations;
List<FileIncludeContentAssistInfo> fileIncludes;
};
enum class ContentAssistCheckingMode
{
// Language server not enabled.
None,
// General full checking for semantic token/document symbol/goto-defintion features.
General,
// Checking for completion request only. Will ignore checking all function bodies
// except for the function the user is editing.
Completion
};
// This struct wraps all input/output data that is used by the language server to provide
// content assist support.
struct ContentAssistInfo
{
// The mode the semantics checking should be operating on. Provided by the
// language server.
ContentAssistCheckingMode checkingMode = ContentAssistCheckingMode::None;
// The primary module from which the current content assist request is made. Provided by the
// language server.
Name* primaryModuleName = nullptr;
// The primary module path from which the current content assist request is made. Provided by
// the language server.
String primaryModulePath;
// The cursor location at which a completion request is made. Provided by the language server.
Index cursorLine = 0;
// The cursor location at which a completion request is made. Provided by the language server.
Index cursorCol = 0;
// The result candidate items for a completion request. Filled in during semantics checking.
CompletionSuggestions completionSuggestions;
// The preprocessors definitions and invocations found during preprocessing. Filled in during
// preprocessing.
PreprocessorContentAssistInfo preprocessorInfo;
};
} // namespace Slang
|