From 9506bbf7f7fec1e6ee053be7c58c01f9f205ec43 Mon Sep 17 00:00:00 2001 From: Eliot Date: Sat, 22 Jun 2024 18:05:56 +0200 Subject: [PATCH] Move `ModifierFlags` to its own file; this is necessary to avoid recursive dependency import issues, when using the enum as a value. --- server/src/UC/SymbolTagsBuilderVisitor.ts | 3 +- server/src/UC/Symbols/ArchetypeSymbol.ts | 4 +- server/src/UC/Symbols/ArrayOperations.ts | 2 +- server/src/UC/Symbols/ClassSymbol.ts | 2 +- server/src/UC/Symbols/ConstSymbol.ts | 3 +- server/src/UC/Symbols/CoreSymbols.ts | 2 +- .../src/UC/Symbols/DefaultPropertiesBlock.ts | 3 +- server/src/UC/Symbols/EnumMemberSymbol.ts | 5 +- server/src/UC/Symbols/FieldSymbol.ts | 93 +------------------ server/src/UC/Symbols/InterfaceSymbol.ts | 3 +- .../src/UC/Symbols/IntrinsicArrayIterator.ts | 2 +- server/src/UC/Symbols/IntrinsicSymbols.ts | 6 +- server/src/UC/Symbols/LocalSymbol.ts | 5 +- server/src/UC/Symbols/MethodSymbol.ts | 4 +- server/src/UC/Symbols/ModifierFlags.ts | 89 ++++++++++++++++++ server/src/UC/Symbols/ParamSymbol.ts | 5 +- server/src/UC/Symbols/PropertySymbol.ts | 2 +- server/src/UC/Symbols/ReplicationBlock.ts | 3 +- server/src/UC/Symbols/ScriptStructSymbol.ts | 3 +- server/src/UC/Symbols/StateSymbol.ts | 3 +- server/src/UC/Symbols/StructSymbol.ts | 3 +- server/src/UC/Symbols/TypeSymbol.ts | 2 +- server/src/UC/Symbols/index.ts | 2 +- server/src/UC/diagnostics/documentAnalyzer.ts | 2 +- server/src/UC/documentASTWalker.ts | 2 +- server/src/UC/documentSemanticsBuilder.ts | 4 +- server/src/UC/expressions.ts | 2 +- server/src/UC/helpers.ts | 3 +- server/src/completion.ts | 2 +- server/src/server.ts | 4 +- 30 files changed, 137 insertions(+), 131 deletions(-) create mode 100644 server/src/UC/Symbols/ModifierFlags.ts diff --git a/server/src/UC/SymbolTagsBuilderVisitor.ts b/server/src/UC/SymbolTagsBuilderVisitor.ts index 67a74829..bf856177 100644 --- a/server/src/UC/SymbolTagsBuilderVisitor.ts +++ b/server/src/UC/SymbolTagsBuilderVisitor.ts @@ -1,6 +1,7 @@ import { SymbolTag } from 'vscode-languageserver'; -import { ModifierFlags, UCClassSymbol, UCFieldSymbol, UCMethodSymbol, UCPropertySymbol } from './Symbols'; +import { UCClassSymbol, UCFieldSymbol, UCMethodSymbol, UCPropertySymbol } from './Symbols'; +import { ModifierFlags } from './Symbols/ModifierFlags'; import { DumbSymbolWalker } from './symbolWalker'; // Transform field modifiers to their corresponding SymbolTag counter-part. diff --git a/server/src/UC/Symbols/ArchetypeSymbol.ts b/server/src/UC/Symbols/ArchetypeSymbol.ts index 31cf4d79..715cf5e2 100644 --- a/server/src/UC/Symbols/ArchetypeSymbol.ts +++ b/server/src/UC/Symbols/ArchetypeSymbol.ts @@ -1,8 +1,7 @@ -import { UCDocument } from 'UC/document'; +import { UCDocument } from '../document'; import { Name } from '../name'; import { SymbolWalker } from '../symbolWalker'; import { - ModifierFlags, UCClassSymbol, UCFieldSymbol, UCObjectSymbol, @@ -10,6 +9,7 @@ import { UCSymbolKind, UCTypeKind, } from './'; +import { ModifierFlags } from './ModifierFlags'; /** * Represents an instanced Archetype found within a defaultproperties block e.g. "begin object class=classID name=objectName". diff --git a/server/src/UC/Symbols/ArrayOperations.ts b/server/src/UC/Symbols/ArrayOperations.ts index 8273ca43..f3fcec37 100644 --- a/server/src/UC/Symbols/ArrayOperations.ts +++ b/server/src/UC/Symbols/ArrayOperations.ts @@ -3,13 +3,13 @@ import { toName } from '../name'; import { NAME_ARRAY } from '../names'; import { DEFAULT_RANGE, - ModifierFlags, StaticIntType, StaticMetaType, UCMethodLikeSymbol, UCParamSymbol, UCStructSymbol, } from './'; +import { ModifierFlags } from './ModifierFlags'; /** (defaultproperties) Acts as a template for array operations such as MyArray.Replace(item1, item2) etc. */ export const DefaultArray = new UCStructSymbol({ name: NAME_ARRAY, range: DEFAULT_RANGE }, DEFAULT_RANGE); diff --git a/server/src/UC/Symbols/ClassSymbol.ts b/server/src/UC/Symbols/ClassSymbol.ts index 61ff0399..b128b916 100644 --- a/server/src/UC/Symbols/ClassSymbol.ts +++ b/server/src/UC/Symbols/ClassSymbol.ts @@ -6,7 +6,6 @@ import { SymbolWalker } from '../symbolWalker'; import { ISymbol, ITypeSymbol, - ModifierFlags, UCArchetypeSymbol, UCFieldSymbol, UCObjectTypeSymbol, @@ -16,6 +15,7 @@ import { UCSymbolKind, UCTypeKind, } from './'; +import { ModifierFlags } from './ModifierFlags'; export enum ClassModifierFlags { None, diff --git a/server/src/UC/Symbols/ConstSymbol.ts b/server/src/UC/Symbols/ConstSymbol.ts index 81e38c8b..a454a465 100644 --- a/server/src/UC/Symbols/ConstSymbol.ts +++ b/server/src/UC/Symbols/ConstSymbol.ts @@ -3,7 +3,8 @@ import { Position } from 'vscode-languageserver-types'; import { UCDocument } from '../document'; import { IExpression } from '../expressions'; import { SymbolWalker } from '../symbolWalker'; -import { ModifierFlags, UCFieldSymbol, UCStructSymbol, UCSymbolKind, UCTypeKind } from './'; +import { UCFieldSymbol, UCStructSymbol, UCSymbolKind, UCTypeKind } from './'; +import { ModifierFlags } from './ModifierFlags'; export class UCConstSymbol extends UCFieldSymbol { override kind = UCSymbolKind.Const; diff --git a/server/src/UC/Symbols/CoreSymbols.ts b/server/src/UC/Symbols/CoreSymbols.ts index a5dad232..7b433d82 100644 --- a/server/src/UC/Symbols/CoreSymbols.ts +++ b/server/src/UC/Symbols/CoreSymbols.ts @@ -36,7 +36,6 @@ import { } from '../names'; import { DEFAULT_RANGE, - ModifierFlags, StaticIntType, StaticNameType, StaticObjectType, @@ -49,6 +48,7 @@ import { addHashedSymbol, getSymbolOuterHash, } from './'; +import { ModifierFlags } from './ModifierFlags'; export const CORE_PACKAGE = new UCPackage(NAME_CORE); diff --git a/server/src/UC/Symbols/DefaultPropertiesBlock.ts b/server/src/UC/Symbols/DefaultPropertiesBlock.ts index 76ad8024..99591a0e 100644 --- a/server/src/UC/Symbols/DefaultPropertiesBlock.ts +++ b/server/src/UC/Symbols/DefaultPropertiesBlock.ts @@ -3,8 +3,9 @@ import { SymbolWalker } from '../symbolWalker'; import { ContextKind, getContext, - isArchetypeSymbol, ISymbol, ModifierFlags, UCClassSymbol, UCStructSymbol, UCSymbolKind + isArchetypeSymbol, ISymbol, UCClassSymbol, UCStructSymbol, UCSymbolKind } from './'; +import { ModifierFlags } from './ModifierFlags'; export class UCDefaultPropertiesBlock extends UCStructSymbol { override kind = UCSymbolKind.DefaultPropertiesBlock; diff --git a/server/src/UC/Symbols/EnumMemberSymbol.ts b/server/src/UC/Symbols/EnumMemberSymbol.ts index ccf4e11d..0453e04f 100644 --- a/server/src/UC/Symbols/EnumMemberSymbol.ts +++ b/server/src/UC/Symbols/EnumMemberSymbol.ts @@ -1,5 +1,6 @@ import { SymbolWalker } from '../symbolWalker'; -import { ModifierFlags, UCFieldSymbol, UCSymbolKind, UCTypeKind } from './'; +import { UCFieldSymbol, UCSymbolKind, UCTypeKind } from './'; +import { ModifierFlags } from './ModifierFlags'; export class UCEnumMemberSymbol extends UCFieldSymbol { override kind = UCSymbolKind.EnumTag; @@ -34,4 +35,4 @@ export class UCEnumMemberSymbol extends UCFieldSymbol { override accept(visitor: SymbolWalker): Result | void { return visitor.visitEnumMember(this); } -} \ No newline at end of file +} diff --git a/server/src/UC/Symbols/FieldSymbol.ts b/server/src/UC/Symbols/FieldSymbol.ts index 94073629..c8869929 100644 --- a/server/src/UC/Symbols/FieldSymbol.ts +++ b/server/src/UC/Symbols/FieldSymbol.ts @@ -3,97 +3,8 @@ import { Position } from 'vscode-languageserver-types'; import { UCDocument } from '../document'; import { config, indexDeclarationReference } from '../indexer'; import { UCGeneration } from '../settings'; -import { ISymbol, ITypeSymbol, UCObjectSymbol, UCStructSymbol, isParamSymbol } from './'; - -export enum ModifierFlags { - None = 0x0000, - - // FieldFlags - - /** The field is marked as 'protected' */ - Protected = 1 << 0, - - /** The field is marked as 'private' */ - Private = 1 << 1, - - NotPublic = Protected | Private, - - /** The field is marked as 'native' or 'intrinsic' */ - Native = 1 << 2, - - /** The field is marked as 'const' or treated as readonly (for intrinsics) */ - ReadOnly = 1 << 3, // aka Const - - /** The field has a specified element size. e.g. `var int MyVar[2];` */ - WithDimension = 1 << 4, // A multiple dimension property - - /** The field is marked as 'transient' */ - Transient = 1 << 6, - - // ParamFlags - - /** The field is a parameter of a function. */ - Param = 1 << 7, - - /** The field is a return parameter (generated) of a function. */ - ReturnParam = 1 << 8, - - /** The field is marked as 'out' */ - Out = 1 << 9, - - /** The field is marked as 'optional' */ - Optional = 1 << 10, - - /** The field is marked as 'init' */ - Init = 1 << 11, // NOT SUPPORTED - - /** The field is marked as 'skip' */ - Skip = 1 << 12, // NOT SUPPORTED - - /** The field is marked as 'coerce' */ - Coerce = 1 << 13, - - // XCom - - /** The field is marked as 'ref' */ - Ref = 1 << 14, // NOT SUPPORTED - - // LocalFlags - - /** The field is a local field of a function or state. */ - Local = 1 << 15, - - // ClassFlags - - /** The field is marked as 'abstract' */ - Abstract = 1 << 16, // TODO: Unify with ClassModifiers? - - // InternalFlags - /** - * Field is an intrisic symbol, not to be confused with the older 'intrinsic' native keyword. - * That means the symbol was not contructed from an UnrealScript counter part or is not designed in a way that it ever could be. - * For instance: - * - 'ArrayIterator' an iterator function symbol to deal with a `foreach` loop on a dynamic array. - * - 'IntrinsicVectLiteral' a function to represent a `vect(...)` literal. - * - 'Core.Class' a class with no UnrealScript counter part (a Class.uc file) - **/ - Intrinsic = 1 << 17, - - /** The field is a generated symbol, such as the return type of a function. */ - Generated = 1 << 18, - - /** The field is a keyword symbol, such as `Vect` */ - Keyword = 1 << 19, - - /** The field should not index a declaration reference. */ - NoDeclaration = 1 << 20, - - /** The field is marked as 'deprecated' */ - Deprecated = 1 << 21, - - // A private method can however be re-defined! - NonOverridable = Private | Intrinsic, -} +import { ITypeSymbol, UCObjectSymbol, UCStructSymbol, isParamSymbol } from './'; +import { ModifierFlags } from './ModifierFlags'; export abstract class UCFieldSymbol extends UCObjectSymbol { declare outer: UCObjectSymbol; diff --git a/server/src/UC/Symbols/InterfaceSymbol.ts b/server/src/UC/Symbols/InterfaceSymbol.ts index 255245ab..49cc380e 100644 --- a/server/src/UC/Symbols/InterfaceSymbol.ts +++ b/server/src/UC/Symbols/InterfaceSymbol.ts @@ -1,5 +1,6 @@ import { SymbolWalker } from '../symbolWalker'; -import { ClassModifierFlags, ModifierFlags, UCClassSymbol, UCSymbolKind, UCTypeKind } from './'; +import { ClassModifierFlags, UCClassSymbol, UCSymbolKind, UCTypeKind } from './'; +import { ModifierFlags } from './ModifierFlags'; export class UCInterfaceSymbol extends UCClassSymbol { static override readonly allowedKindsMask = 1 << UCSymbolKind.Enum diff --git a/server/src/UC/Symbols/IntrinsicArrayIterator.ts b/server/src/UC/Symbols/IntrinsicArrayIterator.ts index f429b3d7..c191e6ff 100644 --- a/server/src/UC/Symbols/IntrinsicArrayIterator.ts +++ b/server/src/UC/Symbols/IntrinsicArrayIterator.ts @@ -1,13 +1,13 @@ import { DEFAULT_RANGE, MethodFlags, - ModifierFlags, StaticIntType, StaticMetaType, UCMethodLikeSymbol, UCParamSymbol, } from '.'; import { toName } from '../name'; +import { ModifierFlags } from './ModifierFlags'; export const ArrayIterator = new UCMethodLikeSymbol(toName('Iterator')); ArrayIterator.modifiers |= ModifierFlags.Intrinsic | ModifierFlags.ReadOnly | ModifierFlags.NoDeclaration; diff --git a/server/src/UC/Symbols/IntrinsicSymbols.ts b/server/src/UC/Symbols/IntrinsicSymbols.ts index 9abeb4c0..1b0251bd 100644 --- a/server/src/UC/Symbols/IntrinsicSymbols.ts +++ b/server/src/UC/Symbols/IntrinsicSymbols.ts @@ -3,7 +3,6 @@ import { toName } from '../name'; import { NAME_ARRAY, NAME_RETURNVALUE } from '../names'; import { DEFAULT_RANGE, - ModifierFlags, StaticDelegateType, StaticFloatType, StaticIntType, @@ -21,6 +20,7 @@ import { UCStructSymbol, UCSymbolKind, } from './'; +import { ModifierFlags } from './ModifierFlags'; export * from './CoreSymbols'; export * from './EngineSymbols'; @@ -163,7 +163,7 @@ IntrinsicNewConstructor.kind = UCSymbolKind.Operator; IntrinsicNewConstructor.modifiers |= ModifierFlags.Keyword; IntrinsicNewConstructor.description = createToken(` Creates a new instanced object of the specified class. - + Syntax: ${'`new [( [outer [, name [, flags]]] )] class [( template )]`'} @@ -171,7 +171,7 @@ IntrinsicNewConstructor.description = createToken(` ${'```unrealscript'} ${`new (None, "MyObject", RF_Transient) Class'MyClass' (MyClass'MyTemplateObject')`} ${'```'} - + ${'For *Unreal Engine 2* the event `Object.Created()` will be instigated during the construction.'} `); diff --git a/server/src/UC/Symbols/LocalSymbol.ts b/server/src/UC/Symbols/LocalSymbol.ts index 3c2eeb7e..2fee4759 100644 --- a/server/src/UC/Symbols/LocalSymbol.ts +++ b/server/src/UC/Symbols/LocalSymbol.ts @@ -1,5 +1,6 @@ import { SymbolWalker } from '../symbolWalker'; -import { ModifierFlags, UCPropertySymbol, UCSymbolKind } from './'; +import { UCPropertySymbol, UCSymbolKind } from './'; +import { ModifierFlags } from './ModifierFlags'; export class UCLocalSymbol extends UCPropertySymbol { override kind = UCSymbolKind.Local; @@ -16,4 +17,4 @@ export class UCLocalSymbol extends UCPropertySymbol { override accept(visitor: SymbolWalker): Result | void { return visitor.visitLocal(this); } -} \ No newline at end of file +} diff --git a/server/src/UC/Symbols/MethodSymbol.ts b/server/src/UC/Symbols/MethodSymbol.ts index aff1fd67..811c1922 100644 --- a/server/src/UC/Symbols/MethodSymbol.ts +++ b/server/src/UC/Symbols/MethodSymbol.ts @@ -4,14 +4,13 @@ import { Token } from 'antlr4ts/Token'; import { UCDocument } from '../document'; import { config } from '../indexer'; import { Name } from '../name'; -import { NAME_ACTOR, NAME_CREATEDATAOBJECT, NAME_ENGINE, NAME_LOADDATAOBJECT, NAME_SPAWN } from '../names'; +import { NAME_CREATEDATAOBJECT, NAME_LOADDATAOBJECT, NAME_SPAWN } from '../names'; import { UCGeneration } from '../settings'; import { SymbolWalker } from '../symbolWalker'; import { ContextKind, DEFAULT_RANGE, ISymbol, - ModifierFlags, SymbolReferenceFlags, UCFieldSymbol, UCObjectSymbol, @@ -21,6 +20,7 @@ import { UCTypeKind, isFunction, } from './'; +import { ModifierFlags } from './ModifierFlags'; export enum MethodFlags { None = 0x0000, diff --git a/server/src/UC/Symbols/ModifierFlags.ts b/server/src/UC/Symbols/ModifierFlags.ts new file mode 100644 index 00000000..4e4d6755 --- /dev/null +++ b/server/src/UC/Symbols/ModifierFlags.ts @@ -0,0 +1,89 @@ +/** + * An all in one set of flags for UProperty kinds. + * + * Some flags are shared with @see MethodFlags and @see ClassModifiers. + */ +export const enum ModifierFlags { + None = 0, + + // FieldFlags + /** The field is marked as 'protected' */ + Protected = 1 << 0, + + /** The field is marked as 'private' */ + Private = 1 << 1, + + NotPublic = Protected | Private, + + /** The field is marked as 'native' or 'intrinsic' */ + Native = 1 << 2, + + /** The field is marked as 'const' or treated as readonly (for intrinsics) */ + ReadOnly = 1 << 3, // aka Const + + /** The field has a specified element size. e.g. `var int MyVar[2];` */ + WithDimension = 1 << 4, // A multiple dimension property + + /** The field is marked as 'transient' */ + Transient = 1 << 6, + + // ParamFlags + /** The field is a parameter of a function. */ + Param = 1 << 7, + + /** The field is a return parameter (generated) of a function. */ + ReturnParam = 1 << 8, + + /** The field is marked as 'out' */ + Out = 1 << 9, + + /** The field is marked as 'optional' */ + Optional = 1 << 10, + + /** The field is marked as 'init' */ + Init = 1 << 11, // NOT SUPPORTED + + /** The field is marked as 'skip' */ + Skip = 1 << 12, // NOT SUPPORTED + + /** The field is marked as 'coerce' */ + Coerce = 1 << 13, + + // XCom + /** The field is marked as 'ref' */ + Ref = 1 << 14, // NOT SUPPORTED + + // LocalFlags + /** The field is a local field of a function or state. */ + Local = 1 << 15, + + // ClassFlags + /** The field is marked as 'abstract' */ + Abstract = 1 << 16, // TODO: Unify with ClassModifiers? + + // InternalFlags + /** + * Field is an intrisic symbol, not to be confused with the older 'intrinsic' native keyword. + * That means the symbol was not contructed from an UnrealScript counter part or is not designed in a way that it ever could be. + * For instance: + * - 'ArrayIterator' an iterator function symbol to deal with a `foreach` loop on a dynamic array. + * - 'IntrinsicVectLiteral' a function to represent a `vect(...)` literal. + * - 'Core.Class' a class with no UnrealScript counter part (a Class.uc file) + **/ + Intrinsic = 1 << 17, + + /** The field is a generated symbol, such as the return type of a function. */ + Generated = 1 << 18, + + /** The field is a keyword symbol, such as `Vect` */ + Keyword = 1 << 19, + + /** The field should not index a declaration reference. */ + NoDeclaration = 1 << 20, + + /** The field is marked as 'deprecated' */ + Deprecated = 1 << 21, + + // A private method can however be re-defined! + NonOverridable = Private | Intrinsic, +} diff --git a/server/src/UC/Symbols/ParamSymbol.ts b/server/src/UC/Symbols/ParamSymbol.ts index 4aa3d07b..2749d8a2 100644 --- a/server/src/UC/Symbols/ParamSymbol.ts +++ b/server/src/UC/Symbols/ParamSymbol.ts @@ -2,7 +2,8 @@ import { Position } from 'vscode-languageserver-types'; import { IExpression } from '../expressions'; import { SymbolWalker } from '../symbolWalker'; -import { ModifierFlags, UCPropertySymbol, UCSymbolKind } from './'; +import { UCPropertySymbol, UCSymbolKind } from './'; +import { ModifierFlags } from './ModifierFlags'; export class UCParamSymbol extends UCPropertySymbol { override kind = UCSymbolKind.Parameter; @@ -72,4 +73,4 @@ export class UCParamSymbol extends UCPropertySymbol { override accept(visitor: SymbolWalker): Result | void { return visitor.visitParameter(this); } -} \ No newline at end of file +} diff --git a/server/src/UC/Symbols/PropertySymbol.ts b/server/src/UC/Symbols/PropertySymbol.ts index c6b85101..98cb1511 100644 --- a/server/src/UC/Symbols/PropertySymbol.ts +++ b/server/src/UC/Symbols/PropertySymbol.ts @@ -12,7 +12,6 @@ import { isEnumTagSymbol, ISymbol, ITypeSymbol, - ModifierFlags, UCArrayTypeSymbol, UCFieldSymbol, UCObjectSymbol, @@ -20,6 +19,7 @@ import { UCSymbolKind, UCTypeKind, } from './'; +import { ModifierFlags } from './ModifierFlags'; export class UCPropertySymbol extends UCFieldSymbol { override kind = UCSymbolKind.Property; diff --git a/server/src/UC/Symbols/ReplicationBlock.ts b/server/src/UC/Symbols/ReplicationBlock.ts index 4ffff7c4..fd2c2b20 100644 --- a/server/src/UC/Symbols/ReplicationBlock.ts +++ b/server/src/UC/Symbols/ReplicationBlock.ts @@ -1,6 +1,7 @@ import { UCDocument } from '../document'; import { SymbolWalker } from '../symbolWalker'; -import { ModifierFlags, UCStructSymbol, UCSymbolKind } from './'; +import { UCStructSymbol, UCSymbolKind } from './'; +import { ModifierFlags } from './ModifierFlags'; export class UCReplicationBlock extends UCStructSymbol { override kind = UCSymbolKind.ReplicationBlock; diff --git a/server/src/UC/Symbols/ScriptStructSymbol.ts b/server/src/UC/Symbols/ScriptStructSymbol.ts index ec0ebcc3..29de930b 100644 --- a/server/src/UC/Symbols/ScriptStructSymbol.ts +++ b/server/src/UC/Symbols/ScriptStructSymbol.ts @@ -1,7 +1,8 @@ import { UCDocument } from '../document'; import { Name } from '../name'; import { SymbolWalker } from '../symbolWalker'; -import { ContextKind, ISymbol, ModifierFlags, UCClassSymbol, UCFieldSymbol, UCStructSymbol, UCSymbolKind, UCTypeKind } from './'; +import { ContextKind, ISymbol, UCClassSymbol, UCFieldSymbol, UCStructSymbol, UCSymbolKind, UCTypeKind } from './'; +import { ModifierFlags } from './ModifierFlags'; export class UCScriptStructSymbol extends UCStructSymbol { declare outer: UCScriptStructSymbol | UCClassSymbol; diff --git a/server/src/UC/Symbols/StateSymbol.ts b/server/src/UC/Symbols/StateSymbol.ts index da2582ef..0d87de77 100644 --- a/server/src/UC/Symbols/StateSymbol.ts +++ b/server/src/UC/Symbols/StateSymbol.ts @@ -5,8 +5,9 @@ import { UCDocument } from '../document'; import { Name } from '../name'; import { SymbolWalker } from '../symbolWalker'; import { - ModifierFlags, SymbolReferenceFlags, UCFieldSymbol, UCObjectTypeSymbol, UCStructSymbol, UCSymbolKind, UCTypeKind + SymbolReferenceFlags, UCFieldSymbol, UCObjectTypeSymbol, UCStructSymbol, UCSymbolKind, UCTypeKind } from './'; +import { ModifierFlags } from './ModifierFlags'; export class UCStateSymbol extends UCStructSymbol { static readonly allowedKindsMask = 1 << UCSymbolKind.Const diff --git a/server/src/UC/Symbols/StructSymbol.ts b/server/src/UC/Symbols/StructSymbol.ts index 83efa943..c2651376 100644 --- a/server/src/UC/Symbols/StructSymbol.ts +++ b/server/src/UC/Symbols/StructSymbol.ts @@ -19,18 +19,17 @@ import { ISymbol, ISymbolContainer, ITypeSymbol, - ModifierFlags, UCBaseOperatorSymbol, UCBinaryOperatorSymbol, UCClassSymbol, UCConversionCost, UCFieldSymbol, - UCMatchFlags, UCObjectSymbol, UCObjectTypeSymbol, UCQualifiedTypeSymbol, UCSymbolKind, } from './'; +import { ModifierFlags } from './ModifierFlags'; export interface ISuperSymbol { super?: UCStructSymbol | undefined; diff --git a/server/src/UC/Symbols/TypeSymbol.ts b/server/src/UC/Symbols/TypeSymbol.ts index 29928e85..9e8537ed 100644 --- a/server/src/UC/Symbols/TypeSymbol.ts +++ b/server/src/UC/Symbols/TypeSymbol.ts @@ -60,7 +60,6 @@ import { Identifier, IntrinsicArray, IntrinsicClass, - ModifierFlags, ObjectsTable, SymbolReference, UCArchetypeSymbol, @@ -85,6 +84,7 @@ import { UCInterfaceSymbol, findOuterFieldSymbol } from './'; +import { ModifierFlags } from './ModifierFlags'; export const enum UCNodeKind { Expression, diff --git a/server/src/UC/Symbols/index.ts b/server/src/UC/Symbols/index.ts index 6b3937bf..488d57c8 100644 --- a/server/src/UC/Symbols/index.ts +++ b/server/src/UC/Symbols/index.ts @@ -21,4 +21,4 @@ export * from './ReplicationBlock'; export * from './MacroSymbol'; export * from './IntrinsicSymbols'; export * from './IntrinsicArrayIterator'; -export * from './ArrayOperations'; \ No newline at end of file +export * from './ArrayOperations'; diff --git a/server/src/UC/diagnostics/documentAnalyzer.ts b/server/src/UC/diagnostics/documentAnalyzer.ts index fd5f3bc0..ff6db0ef 100644 --- a/server/src/UC/diagnostics/documentAnalyzer.ts +++ b/server/src/UC/diagnostics/documentAnalyzer.ts @@ -10,7 +10,6 @@ import { IntrinsicEnum, IntrinsicNewConstructor, MethodFlags, - ModifierFlags, StaticBoolType, StaticDelegateType, StaticIntType, @@ -56,6 +55,7 @@ import { typeKindToDisplayString, typesMatch, } from '../Symbols'; +import { ModifierFlags } from '../Symbols/ModifierFlags'; import { UCDocument } from '../document'; import { IExpression, diff --git a/server/src/UC/documentASTWalker.ts b/server/src/UC/documentASTWalker.ts index d5b5cbe9..c46f2801 100644 --- a/server/src/UC/documentASTWalker.ts +++ b/server/src/UC/documentASTWalker.ts @@ -97,7 +97,6 @@ import { ISymbolContainer, ITypeSymbol, MethodFlags, - ModifierFlags, Object_ClassProperty, Object_ClassPropertyHash, Object_NameProperty, @@ -137,6 +136,7 @@ import { UCTypeKind, UCTypeSymbol, } from './Symbols'; +import { ModifierFlags } from './Symbols/ModifierFlags'; function createIdentifier(ctx: ParserRuleContext) { const identifier: Identifier = { diff --git a/server/src/UC/documentSemanticsBuilder.ts b/server/src/UC/documentSemanticsBuilder.ts index 197e5ebd..dca9e5d3 100644 --- a/server/src/UC/documentSemanticsBuilder.ts +++ b/server/src/UC/documentSemanticsBuilder.ts @@ -34,12 +34,10 @@ import { UCBlock, UCGotoStatement, UCLabeledStatement, UCRepIfStatement } from ' import { DEFAULT_RANGE, Identifier, - isClass, isField, isFunction, ISymbol, MethodFlags, - ModifierFlags, UCClassSymbol, UCConstSymbol, UCEnumSymbol, @@ -47,7 +45,6 @@ import { UCInterfaceSymbol, UCMethodSymbol, UCObjectTypeSymbol, - UCParamSymbol, UCPropertySymbol, UCScriptStructSymbol, UCStateSymbol, @@ -55,6 +52,7 @@ import { UCSymbolKind, UCTypeKind, } from './Symbols'; +import { ModifierFlags } from './Symbols/ModifierFlags'; import { DefaultSymbolWalker } from './symbolWalker'; export const TokenTypes = [ diff --git a/server/src/UC/expressions.ts b/server/src/UC/expressions.ts index e80c2519..f45f399a 100644 --- a/server/src/UC/expressions.ts +++ b/server/src/UC/expressions.ts @@ -21,7 +21,6 @@ import { IntrinsicVectLiteral, IntrinsicVector, IntrinsicVectorHash, - ModifierFlags, ObjectsTable, OuterObjectsTable, StaticBoolType, @@ -77,6 +76,7 @@ import { intersectsWith } from './helpers'; import { config, getConstSymbol, getEnumMember } from './indexer'; import { NAME_CLASS, NAME_OUTER, NAME_ROTATOR, NAME_STRUCT, NAME_VECTOR } from './names'; import { SymbolWalker } from './symbolWalker'; +import { ModifierFlags } from './Symbols/ModifierFlags'; export interface IExpression extends INode, IWithInnerSymbols { /** diff --git a/server/src/UC/helpers.ts b/server/src/UC/helpers.ts index ca7362c4..a923686d 100644 --- a/server/src/UC/helpers.ts +++ b/server/src/UC/helpers.ts @@ -5,7 +5,6 @@ import { DocumentUri } from 'vscode-languageserver-textdocument'; import { commentTokensToStrings } from './Parser/TokenStream'; import { ISymbol, - ModifierFlags, UCClassSymbol, UCObjectSymbol, UCStructSymbol, @@ -13,7 +12,6 @@ import { getContext, hasModifiers, isArchetypeSymbol, - isClass, isField, isStruct, supportsRef, @@ -21,6 +19,7 @@ import { import { UCLexer } from './antlr/generated/UCLexer'; import { UCDocument } from './document'; import { getDocumentById, getDocumentByURI } from './indexer'; +import { ModifierFlags } from './Symbols/ModifierFlags'; export const VALID_ID_REGEXP = RegExp(/^([a-zA-Z_][a-zA-Z_0-9]*)$/); diff --git a/server/src/completion.ts b/server/src/completion.ts index 02815c48..9590a2a4 100644 --- a/server/src/completion.ts +++ b/server/src/completion.ts @@ -17,7 +17,6 @@ import { IntrinsicRotator, IntrinsicVector, MethodFlags, - ModifierFlags, Object_ClassProperty, ObjectsTable, OuterObjectsTable, @@ -81,6 +80,7 @@ import { NAME_CLASS } from './UC/names'; import { UCGeneration } from './UC/settings'; import { ActiveTextDocuments } from './activeTextDocuments'; import { UCLanguageServerSettings } from './configuration'; +import { ModifierFlags } from 'UC/Symbols/ModifierFlags'; /** If the candidates collector hits any these it'll stop at the first occurance. */ const PreferredRulesSet = new Set([ diff --git a/server/src/server.ts b/server/src/server.ts index 7482493d..58d77e26 100644 --- a/server/src/server.ts +++ b/server/src/server.ts @@ -20,6 +20,7 @@ import { WorkspaceFolder, } from 'vscode-languageserver/node'; +import { executeCommand, getCommand, getCommands } from 'commands'; import { getDocumentRenameEdit } from 'rename'; import { ActiveTextDocuments } from './activeTextDocuments'; import { getDocumentCodeActions } from './codeActions'; @@ -73,7 +74,6 @@ import { IntrinsicArray, isClass, isField, - ModifierFlags, ObjectsTable, tryFindClassSymbol, tryFindSymbolInPackage, @@ -87,10 +87,10 @@ import { UCSymbolKind, UCTypeKind, } from './UC/Symbols'; +import { ModifierFlags } from './UC/Symbols/ModifierFlags'; import { UnrealPackage } from './UPK/UnrealPackage'; import { getFiles, isDocumentFileName } from './workspace'; import { getWorkspaceSymbols } from './workspaceSymbol'; -import { CommandIdentifier, executeCommand, getCommand, getCommands } from 'commands'; /** * Emits true when the workspace is prepared and ready for indexing.