@bscotch/gml-parser 1.14.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +29 -0
- package/README.md +151 -0
- package/assets/GmlSpec.xml +11419 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/jsdoc.d.ts +79 -0
- package/dist/jsdoc.d.ts.map +1 -0
- package/dist/jsdoc.feather.d.ts +23 -0
- package/dist/jsdoc.feather.d.ts.map +1 -0
- package/dist/jsdoc.feather.js +143 -0
- package/dist/jsdoc.feather.js.map +1 -0
- package/dist/jsdoc.js +468 -0
- package/dist/jsdoc.js.map +1 -0
- package/dist/jsdoc.test.d.ts +2 -0
- package/dist/jsdoc.test.d.ts.map +1 -0
- package/dist/jsdoc.test.js +185 -0
- package/dist/jsdoc.test.js.map +1 -0
- package/dist/lexer.d.ts +3 -0
- package/dist/lexer.d.ts.map +1 -0
- package/dist/lexer.js +14 -0
- package/dist/lexer.js.map +1 -0
- package/dist/lexer.test.d.ts +2 -0
- package/dist/lexer.test.d.ts.map +1 -0
- package/dist/lexer.test.js +78 -0
- package/dist/lexer.test.js.map +1 -0
- package/dist/lib.objects.d.ts +190 -0
- package/dist/lib.objects.d.ts.map +1 -0
- package/dist/lib.objects.js +242 -0
- package/dist/lib.objects.js.map +1 -0
- package/dist/logger.d.ts +13 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +14 -0
- package/dist/logger.js.map +1 -0
- package/dist/modules.d.ts +19 -0
- package/dist/modules.d.ts.map +1 -0
- package/dist/modules.js +320 -0
- package/dist/modules.js.map +1 -0
- package/dist/modules.test.d.ts +2 -0
- package/dist/modules.test.d.ts.map +1 -0
- package/dist/modules.test.js +57 -0
- package/dist/modules.test.js.map +1 -0
- package/dist/modules.types.d.ts +78 -0
- package/dist/modules.types.d.ts.map +1 -0
- package/dist/modules.types.js +2 -0
- package/dist/modules.types.js.map +1 -0
- package/dist/modules.util.d.ts +5 -0
- package/dist/modules.util.d.ts.map +1 -0
- package/dist/modules.util.js +13 -0
- package/dist/modules.util.js.map +1 -0
- package/dist/parser.d.ts +121 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +571 -0
- package/dist/parser.js.map +1 -0
- package/dist/parser.test.d.ts +2 -0
- package/dist/parser.test.d.ts.map +1 -0
- package/dist/parser.test.js +143 -0
- package/dist/parser.test.js.map +1 -0
- package/dist/parser.utility.d.ts +29 -0
- package/dist/parser.utility.d.ts.map +1 -0
- package/dist/parser.utility.js +125 -0
- package/dist/parser.utility.js.map +1 -0
- package/dist/project.asset.d.ts +115 -0
- package/dist/project.asset.d.ts.map +1 -0
- package/dist/project.asset.js +802 -0
- package/dist/project.asset.js.map +1 -0
- package/dist/project.code.d.ts +130 -0
- package/dist/project.code.d.ts.map +1 -0
- package/dist/project.code.js +570 -0
- package/dist/project.code.js.map +1 -0
- package/dist/project.d.ts +533 -0
- package/dist/project.d.ts.map +1 -0
- package/dist/project.diagnostics.d.ts +32 -0
- package/dist/project.diagnostics.d.ts.map +1 -0
- package/dist/project.diagnostics.js +23 -0
- package/dist/project.diagnostics.js.map +1 -0
- package/dist/project.js +1216 -0
- package/dist/project.js.map +1 -0
- package/dist/project.location.d.ts +133 -0
- package/dist/project.location.d.ts.map +1 -0
- package/dist/project.location.js +219 -0
- package/dist/project.location.js.map +1 -0
- package/dist/project.native.d.ts +26 -0
- package/dist/project.native.d.ts.map +1 -0
- package/dist/project.native.js +321 -0
- package/dist/project.native.js.map +1 -0
- package/dist/project.spec.d.ts +1298 -0
- package/dist/project.spec.d.ts.map +1 -0
- package/dist/project.spec.js +263 -0
- package/dist/project.spec.js.map +1 -0
- package/dist/project.test.d.ts +2 -0
- package/dist/project.test.d.ts.map +1 -0
- package/dist/project.test.js +633 -0
- package/dist/project.test.js.map +1 -0
- package/dist/shaderDefaults.d.ts +3 -0
- package/dist/shaderDefaults.d.ts.map +1 -0
- package/dist/shaderDefaults.js +32 -0
- package/dist/shaderDefaults.js.map +1 -0
- package/dist/signifiers.d.ts +54 -0
- package/dist/signifiers.d.ts.map +1 -0
- package/dist/signifiers.flags.d.ts +38 -0
- package/dist/signifiers.flags.d.ts.map +1 -0
- package/dist/signifiers.flags.js +131 -0
- package/dist/signifiers.flags.js.map +1 -0
- package/dist/signifiers.js +117 -0
- package/dist/signifiers.js.map +1 -0
- package/dist/spine.d.ts +28 -0
- package/dist/spine.d.ts.map +1 -0
- package/dist/spine.js +64 -0
- package/dist/spine.js.map +1 -0
- package/dist/spine.test.d.ts +2 -0
- package/dist/spine.test.d.ts.map +1 -0
- package/dist/spine.test.js +420 -0
- package/dist/spine.test.js.map +1 -0
- package/dist/spine.types.d.ts +89 -0
- package/dist/spine.types.d.ts.map +1 -0
- package/dist/spine.types.js +2 -0
- package/dist/spine.types.js.map +1 -0
- package/dist/test.lib.d.ts +3 -0
- package/dist/test.lib.d.ts.map +1 -0
- package/dist/test.lib.js +16 -0
- package/dist/test.lib.js.map +1 -0
- package/dist/tokens.categories.d.ts +22 -0
- package/dist/tokens.categories.d.ts.map +1 -0
- package/dist/tokens.categories.js +78 -0
- package/dist/tokens.categories.js.map +1 -0
- package/dist/tokens.code.d.ts +2 -0
- package/dist/tokens.code.d.ts.map +1 -0
- package/dist/tokens.code.js +523 -0
- package/dist/tokens.code.js.map +1 -0
- package/dist/tokens.d.ts +130 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +13 -0
- package/dist/tokens.js.map +1 -0
- package/dist/tokens.lib.d.ts +15 -0
- package/dist/tokens.lib.d.ts.map +1 -0
- package/dist/tokens.lib.js +12 -0
- package/dist/tokens.lib.js.map +1 -0
- package/dist/tokens.shared.d.ts +4 -0
- package/dist/tokens.shared.d.ts.map +1 -0
- package/dist/tokens.shared.js +35 -0
- package/dist/tokens.shared.js.map +1 -0
- package/dist/tokens.strings.d.ts +5 -0
- package/dist/tokens.strings.d.ts.map +1 -0
- package/dist/tokens.strings.js +111 -0
- package/dist/tokens.strings.js.map +1 -0
- package/dist/types.checks.d.ts +50 -0
- package/dist/types.checks.d.ts.map +1 -0
- package/dist/types.checks.js +246 -0
- package/dist/types.checks.js.map +1 -0
- package/dist/types.d.ts +152 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.feather.d.ts +21 -0
- package/dist/types.feather.d.ts.map +1 -0
- package/dist/types.feather.js +156 -0
- package/dist/types.feather.js.map +1 -0
- package/dist/types.hover.d.ts +4 -0
- package/dist/types.hover.d.ts.map +1 -0
- package/dist/types.hover.js +99 -0
- package/dist/types.hover.js.map +1 -0
- package/dist/types.js +457 -0
- package/dist/types.js.map +1 -0
- package/dist/types.primitives.d.ts +10 -0
- package/dist/types.primitives.d.ts.map +1 -0
- package/dist/types.primitives.js +88 -0
- package/dist/types.primitives.js.map +1 -0
- package/dist/types.sprites.d.ts +8 -0
- package/dist/types.sprites.d.ts.map +1 -0
- package/dist/types.sprites.js +417 -0
- package/dist/types.sprites.js.map +1 -0
- package/dist/types.test.d.ts +2 -0
- package/dist/types.test.d.ts.map +1 -0
- package/dist/types.test.js +62 -0
- package/dist/types.test.js.map +1 -0
- package/dist/util.d.ts +50 -0
- package/dist/util.d.ts.map +1 -0
- package/dist/util.js +168 -0
- package/dist/util.js.map +1 -0
- package/dist/util.test.d.ts +3 -0
- package/dist/util.test.d.ts.map +1 -0
- package/dist/util.test.js +63 -0
- package/dist/util.test.js.map +1 -0
- package/dist/visitor.assign.d.ts +24 -0
- package/dist/visitor.assign.d.ts.map +1 -0
- package/dist/visitor.assign.js +112 -0
- package/dist/visitor.assign.js.map +1 -0
- package/dist/visitor.d.ts +89 -0
- package/dist/visitor.d.ts.map +1 -0
- package/dist/visitor.functionExpression.d.ts +7 -0
- package/dist/visitor.functionExpression.d.ts.map +1 -0
- package/dist/visitor.functionExpression.js +216 -0
- package/dist/visitor.functionExpression.js.map +1 -0
- package/dist/visitor.globals.d.ts +59 -0
- package/dist/visitor.globals.d.ts.map +1 -0
- package/dist/visitor.globals.js +271 -0
- package/dist/visitor.globals.js.map +1 -0
- package/dist/visitor.identifierAccessor.d.ts +6 -0
- package/dist/visitor.identifierAccessor.d.ts.map +1 -0
- package/dist/visitor.identifierAccessor.js +381 -0
- package/dist/visitor.identifierAccessor.js.map +1 -0
- package/dist/visitor.js +605 -0
- package/dist/visitor.js.map +1 -0
- package/dist/visitor.processor.d.ts +66 -0
- package/dist/visitor.processor.d.ts.map +1 -0
- package/dist/visitor.processor.js +147 -0
- package/dist/visitor.processor.js.map +1 -0
- package/package.json +63 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { assert } from './util.js';
|
|
2
|
+
function typeMemberToHoverText(member) {
|
|
3
|
+
let code = member.name;
|
|
4
|
+
if (member.optional) {
|
|
5
|
+
code += '?';
|
|
6
|
+
}
|
|
7
|
+
code += ': ' + member.type.toFeatherString();
|
|
8
|
+
return code;
|
|
9
|
+
}
|
|
10
|
+
export function typeToHoverDetails(type) {
|
|
11
|
+
const lines = [];
|
|
12
|
+
if (type.isFunction) {
|
|
13
|
+
if (type.self) {
|
|
14
|
+
lines.push(`*@self* \`${type.self.toFeatherString()}\``);
|
|
15
|
+
}
|
|
16
|
+
for (const param of type.listParameters()) {
|
|
17
|
+
if (param?.def && param.description) {
|
|
18
|
+
lines.push(`*@param* \`${param.name}\` - ${param.description}`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
else if (type.kind === 'Struct') {
|
|
23
|
+
const members = type
|
|
24
|
+
.listMembers()
|
|
25
|
+
.filter((x) => x.name !== 'self' && x.def)
|
|
26
|
+
.sort((a, b) => {
|
|
27
|
+
// underscore-prefixed should be sorted last
|
|
28
|
+
const a_prefix_count = a.name?.match(/^_+/)?.[0]?.length || 0;
|
|
29
|
+
const b_prefix_count = b.name?.match(/^_+/)?.[0]?.length || 0;
|
|
30
|
+
if (a_prefix_count !== b_prefix_count) {
|
|
31
|
+
return a_prefix_count - b_prefix_count;
|
|
32
|
+
}
|
|
33
|
+
return a.name
|
|
34
|
+
?.toLocaleLowerCase?.()
|
|
35
|
+
.localeCompare(b.name?.toLocaleLowerCase?.());
|
|
36
|
+
});
|
|
37
|
+
if (members.length) {
|
|
38
|
+
let code = '```ts\n{\n';
|
|
39
|
+
let i = 0;
|
|
40
|
+
for (const member of members) {
|
|
41
|
+
code += ` ${member.name}: ${member.type.toFeatherString()},\n`;
|
|
42
|
+
i++;
|
|
43
|
+
if (i > 19) {
|
|
44
|
+
code += ' // ... and more!\n';
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
code += '}\n```';
|
|
49
|
+
lines.push(code);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
else if (type.kind === 'Enum') {
|
|
53
|
+
const members = type.listMembers().filter((x) => x.def);
|
|
54
|
+
if (members.length) {
|
|
55
|
+
let code = '```ts\n{\n';
|
|
56
|
+
let i = 0;
|
|
57
|
+
for (const member of members) {
|
|
58
|
+
code += ` ${member.name},\n`;
|
|
59
|
+
i++;
|
|
60
|
+
if (i > 19) {
|
|
61
|
+
code += ' // ... and more!\n';
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
code += '}\n```';
|
|
66
|
+
lines.push(code);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return lines.join('\n\n');
|
|
70
|
+
}
|
|
71
|
+
export function typeToHoverText(type) {
|
|
72
|
+
let code = '';
|
|
73
|
+
if (type.isFunction) {
|
|
74
|
+
code = `function ${type.name || ''}(`;
|
|
75
|
+
const params = type.listParameters();
|
|
76
|
+
for (let i = 0; i < params.length; i++) {
|
|
77
|
+
const param = params[i];
|
|
78
|
+
assert(param, 'Param is undefined');
|
|
79
|
+
if (i > 0) {
|
|
80
|
+
code += ', ';
|
|
81
|
+
}
|
|
82
|
+
code += typeMemberToHoverText(param);
|
|
83
|
+
}
|
|
84
|
+
code += ')';
|
|
85
|
+
if (type.isConstructor) {
|
|
86
|
+
code += ` constructor`;
|
|
87
|
+
}
|
|
88
|
+
code += `: ${type.isConstructor
|
|
89
|
+
? type.self.toFeatherString()
|
|
90
|
+
: type.returns?.type.length
|
|
91
|
+
? type.returns.toFeatherString()
|
|
92
|
+
: 'Undefined'}`;
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
code += type.toFeatherString();
|
|
96
|
+
}
|
|
97
|
+
return code;
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=types.hover.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.hover.js","sourceRoot":"","sources":["../src/types.hover.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1,457 @@
|
|
|
1
|
+
import { arrayWrapped } from '@bscotch/utility';
|
|
2
|
+
import { typeToFeatherString } from './jsdoc.feather.js';
|
|
3
|
+
import { Flags } from './signifiers.flags.js';
|
|
4
|
+
import { Signifier } from './signifiers.js';
|
|
5
|
+
import { getTypes, narrows } from './types.checks.js';
|
|
6
|
+
import { typeFromFeatherString, } from './types.feather.js';
|
|
7
|
+
import { typeToHoverDetails, typeToHoverText } from './types.hover.js';
|
|
8
|
+
import { assert, ok } from './util.js';
|
|
9
|
+
/**
|
|
10
|
+
* A stable entity that represents a type. It should be used
|
|
11
|
+
* as the referenced container for any type information, so
|
|
12
|
+
* that the types can be changed within the container without
|
|
13
|
+
* breaking references.
|
|
14
|
+
*/
|
|
15
|
+
export class TypeStore extends Flags {
|
|
16
|
+
$tag = 'TypeStore';
|
|
17
|
+
_types = [];
|
|
18
|
+
constructor() {
|
|
19
|
+
super();
|
|
20
|
+
}
|
|
21
|
+
/** If this store has only one type, its kind. Else throws. */
|
|
22
|
+
get kind() {
|
|
23
|
+
if (this.type.length === 0) {
|
|
24
|
+
return 'Undefined';
|
|
25
|
+
}
|
|
26
|
+
else if (this.type.length > 1) {
|
|
27
|
+
return 'Mixed';
|
|
28
|
+
}
|
|
29
|
+
return this.type[0].kind;
|
|
30
|
+
}
|
|
31
|
+
get type() {
|
|
32
|
+
return [...this._types];
|
|
33
|
+
}
|
|
34
|
+
set type(types) {
|
|
35
|
+
this._types = arrayWrapped(types);
|
|
36
|
+
}
|
|
37
|
+
get hasTypes() {
|
|
38
|
+
return this._types.length > 0;
|
|
39
|
+
}
|
|
40
|
+
get constructs() {
|
|
41
|
+
return this.type
|
|
42
|
+
.map((t) => (t.isConstructor ? t.self : undefined))
|
|
43
|
+
.filter((x) => !!x);
|
|
44
|
+
}
|
|
45
|
+
get items() {
|
|
46
|
+
return this.type.map((t) => t.items).filter((x) => !!x);
|
|
47
|
+
}
|
|
48
|
+
get returns() {
|
|
49
|
+
return this.type.map((t) => t.returns).filter((x) => !!x);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Should be used sparingly, since it means we're adding types in multiple steps instead of all at once.
|
|
53
|
+
*/
|
|
54
|
+
addType(type) {
|
|
55
|
+
this.type = [...this.type, ...arrayWrapped(type)];
|
|
56
|
+
return this;
|
|
57
|
+
}
|
|
58
|
+
narrows(other) {
|
|
59
|
+
return narrows(this, other);
|
|
60
|
+
}
|
|
61
|
+
toFeatherString() {
|
|
62
|
+
const typeStrings = [
|
|
63
|
+
...new Set(this.type.map((t) => t.toFeatherString())),
|
|
64
|
+
].sort((a, b) => a.localeCompare(b));
|
|
65
|
+
return typeStrings.join('|') || 'Any';
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
const typeFlags = {
|
|
69
|
+
READONLY: 1 << 0,
|
|
70
|
+
GENERIC: 1 << 1,
|
|
71
|
+
CONSTRUCTOR: 1 << 2,
|
|
72
|
+
};
|
|
73
|
+
export class Type {
|
|
74
|
+
_kind;
|
|
75
|
+
$tag = 'Type';
|
|
76
|
+
// Some types have names. It only counts as a name if it
|
|
77
|
+
// cannot be parsed into types given the name alone.
|
|
78
|
+
// E.g. `Array<String>` is not a name, but `Struct.MyStruct`
|
|
79
|
+
// results in the name `MyStruct`.
|
|
80
|
+
name = undefined;
|
|
81
|
+
description = undefined;
|
|
82
|
+
/** Signifiers associated with this type. */
|
|
83
|
+
_signifier = undefined;
|
|
84
|
+
/**
|
|
85
|
+
* If set, then this Type is treated as a subset of the parent.
|
|
86
|
+
* It will only "match" another type if that type is in its
|
|
87
|
+
* parent somewhere. Useful for struct/constructor inheritence, as well
|
|
88
|
+
* as for e.g. representing a subset of Real constants in a type. */
|
|
89
|
+
_extends = undefined;
|
|
90
|
+
_derived = undefined;
|
|
91
|
+
flags = 0;
|
|
92
|
+
/** Named members of Structs and Enums */
|
|
93
|
+
_members = undefined;
|
|
94
|
+
/** Types of the items found in arrays and various ds types, or the fallback type found in Structs */
|
|
95
|
+
items = undefined;
|
|
96
|
+
// Applicable to Functions
|
|
97
|
+
/**
|
|
98
|
+
* For functions, the local variables declared within the function.
|
|
99
|
+
* A subset of these will be parameters, which are also signifiers.
|
|
100
|
+
*/
|
|
101
|
+
local = undefined;
|
|
102
|
+
/**
|
|
103
|
+
* If this is a constructor function, then this is the
|
|
104
|
+
* type of the struct that it constructs.
|
|
105
|
+
* Otherwise it's the self-context of the function */
|
|
106
|
+
self = undefined;
|
|
107
|
+
returns = undefined;
|
|
108
|
+
constructor(_kind) {
|
|
109
|
+
this._kind = _kind;
|
|
110
|
+
}
|
|
111
|
+
setFlag(flag, value) {
|
|
112
|
+
if (value) {
|
|
113
|
+
this.flags |= flag;
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
this.flags &= ~flag;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
getFlag(flag) {
|
|
120
|
+
return !!(this.flags & flag);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Native and primitive types are typically read-only once
|
|
124
|
+
* they've been defined. This property should be set once a type
|
|
125
|
+
* is intended to be immutable.
|
|
126
|
+
*/
|
|
127
|
+
get isReadonly() {
|
|
128
|
+
return this.getFlag(typeFlags.READONLY);
|
|
129
|
+
}
|
|
130
|
+
set isReadonly(value) {
|
|
131
|
+
this.setFlag(typeFlags.READONLY, value);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* If this is a type used as a generic, then this will be true
|
|
135
|
+
*/
|
|
136
|
+
get isGeneric() {
|
|
137
|
+
return this.getFlag(typeFlags.GENERIC);
|
|
138
|
+
}
|
|
139
|
+
set isGeneric(value) {
|
|
140
|
+
this.setFlag(typeFlags.GENERIC, value);
|
|
141
|
+
}
|
|
142
|
+
get isConstructor() {
|
|
143
|
+
return this.getFlag(typeFlags.CONSTRUCTOR);
|
|
144
|
+
}
|
|
145
|
+
set isConstructor(value) {
|
|
146
|
+
this.setFlag(typeFlags.CONSTRUCTOR, value);
|
|
147
|
+
}
|
|
148
|
+
get kind() {
|
|
149
|
+
return this._kind;
|
|
150
|
+
}
|
|
151
|
+
set kind(newKind) {
|
|
152
|
+
ok(this._kind === 'Unknown' || this._kind === newKind, 'Cannot change type kind');
|
|
153
|
+
this._kind = newKind;
|
|
154
|
+
}
|
|
155
|
+
get signifier() {
|
|
156
|
+
return this._signifier || this.extends?.signifier;
|
|
157
|
+
}
|
|
158
|
+
set signifier(signifier) {
|
|
159
|
+
// assert(!this._signifier, 'Cannot change type signifier');
|
|
160
|
+
this._signifier = signifier;
|
|
161
|
+
}
|
|
162
|
+
get extends() {
|
|
163
|
+
return this._extends;
|
|
164
|
+
}
|
|
165
|
+
set extends(type) {
|
|
166
|
+
const oldParent = this._extends;
|
|
167
|
+
this._extends = type;
|
|
168
|
+
oldParent?._derived?.delete(this);
|
|
169
|
+
if (this._extends) {
|
|
170
|
+
this._extends._derived ||= new Set();
|
|
171
|
+
this._extends._derived.add(this);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
listDerived(recursive = false) {
|
|
175
|
+
if (!this._derived) {
|
|
176
|
+
return [];
|
|
177
|
+
}
|
|
178
|
+
const derived = [...this._derived];
|
|
179
|
+
if (recursive) {
|
|
180
|
+
for (const child of this._derived) {
|
|
181
|
+
derived.push(...child.listDerived(true));
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return derived;
|
|
185
|
+
}
|
|
186
|
+
get canBeSelf() {
|
|
187
|
+
return ['Struct', 'Id.Instance', 'Asset.GMObject'].includes(this.kind);
|
|
188
|
+
}
|
|
189
|
+
/** If this type narrows `other` type, returns `true` */
|
|
190
|
+
narrows(other) {
|
|
191
|
+
return narrows(this, other);
|
|
192
|
+
}
|
|
193
|
+
/** Get this type as a Feather-compatible string */
|
|
194
|
+
toFeatherString() {
|
|
195
|
+
return typeToFeatherString(this);
|
|
196
|
+
}
|
|
197
|
+
get code() {
|
|
198
|
+
return typeToHoverText(this);
|
|
199
|
+
}
|
|
200
|
+
get details() {
|
|
201
|
+
return typeToHoverDetails(this);
|
|
202
|
+
}
|
|
203
|
+
get isFunction() {
|
|
204
|
+
return this.kind === 'Function';
|
|
205
|
+
}
|
|
206
|
+
setReturnType(type) {
|
|
207
|
+
this.returns ||= new TypeStore();
|
|
208
|
+
const types = getTypes(type);
|
|
209
|
+
this.returns.type = types;
|
|
210
|
+
return this;
|
|
211
|
+
}
|
|
212
|
+
/** Prefer `setReturnType` where possible */
|
|
213
|
+
addReturnType(type) {
|
|
214
|
+
ok(this.isFunction, `Cannot add return type to ${this.kind}`);
|
|
215
|
+
this.returns ||= new TypeStore();
|
|
216
|
+
this.returns.addType(type);
|
|
217
|
+
return this;
|
|
218
|
+
}
|
|
219
|
+
listParameters() {
|
|
220
|
+
// Get the subset of local members that are parameters,
|
|
221
|
+
// and sort them by their index.
|
|
222
|
+
const params = this.local
|
|
223
|
+
?.listMembers(true)
|
|
224
|
+
.filter((m) => m.parameter && typeof m.idx === 'number') || [];
|
|
225
|
+
// Instead of sorting by index, we want to guarantee that the index positions
|
|
226
|
+
// *actually match*.
|
|
227
|
+
const sorted = Array(params.length);
|
|
228
|
+
for (const param of params) {
|
|
229
|
+
sorted[param.idx] = param;
|
|
230
|
+
}
|
|
231
|
+
return sorted;
|
|
232
|
+
}
|
|
233
|
+
getParameter(nameOrIdx) {
|
|
234
|
+
const params = this.listParameters();
|
|
235
|
+
if (typeof nameOrIdx === 'string') {
|
|
236
|
+
return params.find((p) => p?.name === nameOrIdx);
|
|
237
|
+
}
|
|
238
|
+
return params[nameOrIdx];
|
|
239
|
+
}
|
|
240
|
+
/** A parameter is a special type of local variable. */
|
|
241
|
+
addParameter(idx, nameOrParam, options) {
|
|
242
|
+
assert(this.isFunction, `Cannot add param to ${this.kind} type`);
|
|
243
|
+
const name = typeof nameOrParam === 'string' ? nameOrParam : nameOrParam.name;
|
|
244
|
+
let param = this.local?.getMember(name, true);
|
|
245
|
+
const existingAtThisIndex = this.getParameter(idx);
|
|
246
|
+
// Create the signifier if we need to
|
|
247
|
+
if (!param) {
|
|
248
|
+
this.local ||= Type.Struct;
|
|
249
|
+
param = this.local.addMember(nameOrParam);
|
|
250
|
+
assert(param.parent === this.local, 'Param incorrectly added -- has the wrong parent');
|
|
251
|
+
}
|
|
252
|
+
// Handle positional conflicts. If there is a param at this index already,
|
|
253
|
+
// unset its index so that it doesn't conflict with this one.
|
|
254
|
+
if (existingAtThisIndex && existingAtThisIndex !== param) {
|
|
255
|
+
existingAtThisIndex.idx = undefined;
|
|
256
|
+
}
|
|
257
|
+
param.idx = idx;
|
|
258
|
+
param.local = true;
|
|
259
|
+
param.parameter = true;
|
|
260
|
+
param.optional = options?.optional || name === '...';
|
|
261
|
+
if (options?.type) {
|
|
262
|
+
param.setType(options.type);
|
|
263
|
+
}
|
|
264
|
+
return param;
|
|
265
|
+
}
|
|
266
|
+
truncateParameters(count) {
|
|
267
|
+
this.listParameters().forEach((p) => {
|
|
268
|
+
if (p?.idx !== undefined && p.idx >= count) {
|
|
269
|
+
p.idx = undefined;
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
totalMembers(excludeParents = false) {
|
|
274
|
+
if (this.kind === 'Id.Instance' || this.kind === 'Asset.GMObject') {
|
|
275
|
+
return this.extends?.totalMembers(excludeParents) || 0;
|
|
276
|
+
}
|
|
277
|
+
if (excludeParents || !this.extends) {
|
|
278
|
+
return this._members?.size || 0;
|
|
279
|
+
}
|
|
280
|
+
return ((this._members?.size || 0) + this.extends.totalMembers(excludeParents));
|
|
281
|
+
}
|
|
282
|
+
listMembers(excludeParents = false) {
|
|
283
|
+
// Handle pass-through types
|
|
284
|
+
if (this.kind === 'Id.Instance' || this.kind === 'Asset.GMObject') {
|
|
285
|
+
return this.extends?.listMembers(excludeParents) || [];
|
|
286
|
+
}
|
|
287
|
+
const members = this._members?.values() || [];
|
|
288
|
+
if (excludeParents || !this.extends) {
|
|
289
|
+
return [...members];
|
|
290
|
+
}
|
|
291
|
+
return [...members, ...this.extends.listMembers()];
|
|
292
|
+
}
|
|
293
|
+
getMember(name, excludeParents = false) {
|
|
294
|
+
// Handle pass-through types
|
|
295
|
+
if (this.kind === 'Id.Instance' || this.kind === 'Asset.GMObject') {
|
|
296
|
+
return this.extends?.getMember(name, excludeParents);
|
|
297
|
+
}
|
|
298
|
+
if (excludeParents) {
|
|
299
|
+
return this._members?.get(name);
|
|
300
|
+
}
|
|
301
|
+
return this._members?.get(name) || this.extends?.getMember(name);
|
|
302
|
+
}
|
|
303
|
+
/** For container types that have named members, like Structs and Enums */
|
|
304
|
+
addMember(newMember, options) {
|
|
305
|
+
// If this is a Id.Instance or Asset.GMObject type, then we want to add
|
|
306
|
+
// the member to the parent Struct instead.
|
|
307
|
+
if (this.kind === 'Id.Instance' || this.kind === 'Asset.GMObject') {
|
|
308
|
+
return this.extends?.addMember(newMember, options);
|
|
309
|
+
}
|
|
310
|
+
// If this is an immutable type, then we can't add members to it.
|
|
311
|
+
if (this.isReadonly) {
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
const type = options?.type;
|
|
315
|
+
const name = typeof newMember === 'string' ? newMember : newMember.name;
|
|
316
|
+
const signifierArg = typeof newMember === 'string' ? undefined : newMember;
|
|
317
|
+
// Only add if this doesn't exist on *any parent*
|
|
318
|
+
const existing = this.getMember(name, false);
|
|
319
|
+
assert(!existing ||
|
|
320
|
+
!signifierArg ||
|
|
321
|
+
existing === signifierArg ||
|
|
322
|
+
signifierArg.override ||
|
|
323
|
+
options?.override, `Cannot replace existing member "${name}" with new member of the same name`);
|
|
324
|
+
const existingOnThis = this.getMember(name, true);
|
|
325
|
+
let member;
|
|
326
|
+
if (signifierArg?.override || (signifierArg && options?.override)) {
|
|
327
|
+
// Then we want to override the existing member
|
|
328
|
+
member = signifierArg;
|
|
329
|
+
}
|
|
330
|
+
else {
|
|
331
|
+
// Then we want to preferentially use the existing member
|
|
332
|
+
member = existing || signifierArg;
|
|
333
|
+
if (!member) {
|
|
334
|
+
member = new Signifier(this, name);
|
|
335
|
+
member.override = !!options?.override;
|
|
336
|
+
member.writable = options?.writable ?? true;
|
|
337
|
+
if (type) {
|
|
338
|
+
member.setType(type);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
if (member !== existing) {
|
|
343
|
+
this._members ??= new Map();
|
|
344
|
+
// If the existing member has no def, then replace it
|
|
345
|
+
// and transfer its refs
|
|
346
|
+
if (existingOnThis) {
|
|
347
|
+
for (const ref of existingOnThis.refs) {
|
|
348
|
+
ref.item = member;
|
|
349
|
+
ref.isDef = false; // Definition must come from rootmost
|
|
350
|
+
member.refs.add(ref);
|
|
351
|
+
ref.file.dirty = true;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
this._members.set(member.name, member);
|
|
355
|
+
// Ensure that all children of this parent are referencing
|
|
356
|
+
// the same root-most member.
|
|
357
|
+
this.replaceMemberInChildren(member);
|
|
358
|
+
}
|
|
359
|
+
return member;
|
|
360
|
+
}
|
|
361
|
+
replaceMemberInChildren(member) {
|
|
362
|
+
for (const child of this.listDerived()) {
|
|
363
|
+
const toReplace = child._members?.get(member.name);
|
|
364
|
+
if (toReplace?.override) {
|
|
365
|
+
// Then we skip this and all descendents of it
|
|
366
|
+
continue;
|
|
367
|
+
}
|
|
368
|
+
if (toReplace) {
|
|
369
|
+
// Remove from the child
|
|
370
|
+
child._members.delete(member.name);
|
|
371
|
+
// Inherit its refs
|
|
372
|
+
for (const ref of toReplace.refs) {
|
|
373
|
+
ref.item = member;
|
|
374
|
+
ref.isDef = false; // Definition must come from rootmost
|
|
375
|
+
member.refs.add(ref);
|
|
376
|
+
ref.file.dirty = true;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
// Continue down the tree
|
|
380
|
+
child.replaceMemberInChildren(member);
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
removeMember(name) {
|
|
384
|
+
const member = this.getMember(name, true);
|
|
385
|
+
if (!member) {
|
|
386
|
+
return;
|
|
387
|
+
}
|
|
388
|
+
this._members.delete(name);
|
|
389
|
+
// Flag all referencing files as dirty
|
|
390
|
+
for (const ref of member.refs) {
|
|
391
|
+
ref.file.dirty = true;
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* For container types that have non-named members, like arrays and DsTypes.
|
|
396
|
+
* Can also be used for default Struct values. */
|
|
397
|
+
addItemType(type) {
|
|
398
|
+
this.items ||= new TypeStore();
|
|
399
|
+
this.items.addType(type);
|
|
400
|
+
return this;
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* For container types that have non-named members, like arrays and DsTypes.
|
|
404
|
+
* Can also be used for default Struct values. */
|
|
405
|
+
setItemType(type) {
|
|
406
|
+
this.items ||= new TypeStore();
|
|
407
|
+
this.items.type = type;
|
|
408
|
+
return this;
|
|
409
|
+
}
|
|
410
|
+
/**
|
|
411
|
+
* Create a derived type: of the same kind, pointing to
|
|
412
|
+
* this type as its parent. */
|
|
413
|
+
derive() {
|
|
414
|
+
const derived = new Type(this.kind);
|
|
415
|
+
derived.extends = this;
|
|
416
|
+
derived.name = this.name;
|
|
417
|
+
return derived;
|
|
418
|
+
}
|
|
419
|
+
named(name) {
|
|
420
|
+
this.name = name;
|
|
421
|
+
return this;
|
|
422
|
+
}
|
|
423
|
+
describe(description) {
|
|
424
|
+
this.description = description;
|
|
425
|
+
return this;
|
|
426
|
+
}
|
|
427
|
+
genericize() {
|
|
428
|
+
this.isGeneric = true;
|
|
429
|
+
return this;
|
|
430
|
+
}
|
|
431
|
+
/** Given a Feather-compatible type string, get a fully parsed type. */
|
|
432
|
+
static fromFeatherString(typeString, knownTypes, addMissing) {
|
|
433
|
+
return typeFromFeatherString(typeString, knownTypes, addMissing);
|
|
434
|
+
}
|
|
435
|
+
static get Any() {
|
|
436
|
+
return new Type('Any');
|
|
437
|
+
}
|
|
438
|
+
static get Real() {
|
|
439
|
+
return new Type('Real');
|
|
440
|
+
}
|
|
441
|
+
static get String() {
|
|
442
|
+
return new Type('String');
|
|
443
|
+
}
|
|
444
|
+
static get Bool() {
|
|
445
|
+
return new Type('Bool');
|
|
446
|
+
}
|
|
447
|
+
static get Undefined() {
|
|
448
|
+
return new Type('Undefined');
|
|
449
|
+
}
|
|
450
|
+
static get Struct() {
|
|
451
|
+
return new Type('Struct');
|
|
452
|
+
}
|
|
453
|
+
static get Function() {
|
|
454
|
+
return new Type('Function');
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type WithablePrimitiveName = (typeof withableTypes)[number];
|
|
2
|
+
export declare const withableTypes: readonly ["Struct", "Asset.GMObject", "Id.Instance"];
|
|
3
|
+
export declare const utilityTypes: readonly ["InstanceType", "ObjectType", "StaticType"];
|
|
4
|
+
export declare const withableTypesLower: Lowercase<WithablePrimitiveName>[];
|
|
5
|
+
/** Base types, like Array, Real, Struct, etc */
|
|
6
|
+
export type BaseName = (typeof baseNames)[number];
|
|
7
|
+
export declare const baseNames: readonly ["Array", "Bool", "Enum", "Function", "Pointer", "Real", "String", "Struct", "Undefined", "ArgumentIdentity"];
|
|
8
|
+
export type PrimitiveName = (typeof primitiveNames)[number];
|
|
9
|
+
export declare const primitiveNames: readonly ["Array", "Bool", "Enum", "Function", "Pointer", "Real", "String", "Struct", "Undefined", "ArgumentIdentity", "Any", "Asset.GMAnimCurve", "Asset.GMAudioGroup", "Asset.GMFont", "Asset.GMObject", "Asset.GMParticleSystem", "Asset.GMPath", "Asset.GMRoom", "Asset.GMScript", "Asset.GMSequence", "Asset.GMShader", "Asset.GMSound", "Asset.GMSprite", "Asset.GMTileSet", "Asset.GMTimeline", "Asset.Script", "Id.AudioEmitter", "Id.AudioListener", "Id.AudioSyncGroup", "Id.BackgroundElement", "Id.BinaryFile", "Id.Buffer", "Id.Camera", "Id.DsGrid", "Id.DsList", "Id.DsMap", "Id.DsPriority", "Id.DsQueue", "Id.DsStack", "Id.ExternalCall", "Id.Gif", "Id.Instance", "Id.Layer", "Id.MpGrid", "Id.ParticleEmitter", "Id.ParticleSystem", "Id.ParticleType", "Id.PhysicsIndex", "Id.PhysicsParticleGroup", "Id.Sampler", "Id.SequenceElement", "Id.Socket", "Id.Sound", "Id.SpriteElement", "Id.Surface", "Id.TextFile", "Id.Texture", "Id.TileElementId", "Id.TileMapElement", "Id.TimeSource", "Id.Uniform", "Id.VertexBuffer", "Id.VertexFormat", "Mixed", "EnumMember", "Unknown", "Never", "InstanceType", "ObjectType", "StaticType"];
|
|
10
|
+
//# sourceMappingURL=types.primitives.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.primitives.d.ts","sourceRoot":"","sources":["../src/types.primitives.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AACnE,eAAO,MAAM,aAAa,sDAIhB,CAAC;AAEX,eAAO,MAAM,YAAY,uDAIf,CAAC;AAEX,eAAO,MAAM,kBAAkB,EAE1B,SAAS,CAAC,qBAAqB,CAAC,EAAE,CAAC;AAExC,gDAAgD;AAChD,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAClD,eAAO,MAAM,SAAS,wHAWZ,CAAC;AAGX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAC5D,eAAO,MAAM,cAAc,4lCA6DjB,CAAC"}
|