@idlizer/core 2.1.9-arktscgen-6 → 2.1.9-arktscgen-9
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/build/lib/src/IndentedPrinter.d.ts +2 -1
- package/build/lib/src/IndentedPrinter.js +9 -2
- package/build/lib/src/Language.d.ts +0 -1
- package/build/lib/src/Language.js +7 -8
- package/build/lib/src/LanguageWriters/ArgConvertors.d.ts +27 -40
- package/build/lib/src/LanguageWriters/ArgConvertors.js +167 -206
- package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +13 -34
- package/build/lib/src/LanguageWriters/LanguageWriter.js +31 -82
- package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +2 -2
- package/build/lib/src/LanguageWriters/convertors/KotlinConvertors.d.ts +17 -1
- package/build/lib/src/LanguageWriters/convertors/KotlinConvertors.js +121 -6
- package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +6 -0
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.d.ts +2 -3
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +9 -25
- package/build/lib/src/LanguageWriters/writers/CLikeLanguageWriter.d.ts +0 -5
- package/build/lib/src/LanguageWriters/writers/CLikeLanguageWriter.js +0 -9
- package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.d.ts +4 -6
- package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +15 -28
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.d.ts +14 -10
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +51 -74
- package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.d.ts +2 -8
- package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.js +11 -21
- package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.d.ts +12 -9
- package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.js +121 -32
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +5 -6
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +17 -33
- package/build/lib/src/config.d.ts +402 -133
- package/build/lib/src/config.js +13 -7
- package/build/lib/src/diagnosticmessages.d.ts +45 -0
- package/build/lib/src/diagnosticmessages.js +66 -0
- package/build/lib/src/diagnostictypes.d.ts +140 -0
- package/build/lib/src/diagnostictypes.js +72 -0
- package/build/lib/src/formatter.d.ts +3 -0
- package/build/lib/src/formatter.js +98 -0
- package/build/lib/src/from-idl/deserialize.d.ts +1 -0
- package/build/lib/src/from-idl/deserialize.js +107 -5
- package/build/lib/src/idl.d.ts +8 -0
- package/build/lib/src/idl.js +16 -3
- package/build/lib/src/index.d.ts +7 -1
- package/build/lib/src/index.js +7 -1
- package/build/lib/src/peer-generation/Materialized.d.ts +2 -2
- package/build/lib/src/peer-generation/Materialized.js +4 -9
- package/build/lib/src/peer-generation/PeerLibrary.js +1 -5
- package/build/lib/src/peer-generation/PeerMethod.d.ts +0 -4
- package/build/lib/src/peer-generation/PeerMethod.js +18 -36
- package/build/lib/src/peer-generation/idl/common.js +1 -1
- package/build/lib/src/peer-generation/isMaterialized.js +0 -4
- package/build/lib/src/peer-generation/modules.d.ts +1 -0
- package/build/lib/src/peer-generation/modules.js +25 -6
- package/build/lib/src/peer-generation/unions.d.ts +0 -2
- package/build/lib/src/peer-generation/unions.js +3 -23
- package/build/lib/src/transformers/FqnTransformer.d.ts +4 -0
- package/build/lib/src/transformers/FqnTransformer.js +17 -0
- package/build/lib/src/transformers/GenericTransformer.d.ts +8 -0
- package/build/lib/src/transformers/GenericTransformer.js +141 -0
- package/build/lib/src/util.d.ts +5 -2
- package/build/lib/src/util.js +26 -12
- package/package.json +2 -2
- package/build/lib/src/peer-generation/isExternalType.d.ts +0 -4
- package/build/lib/src/peer-generation/isExternalType.js +0 -15
package/build/lib/src/idl.js
CHANGED
|
@@ -65,6 +65,7 @@ export var IDLExtendedAttributes;
|
|
|
65
65
|
IDLExtendedAttributes["DtsTag"] = "DtsTag";
|
|
66
66
|
IDLExtendedAttributes["Entity"] = "Entity";
|
|
67
67
|
IDLExtendedAttributes["Extends"] = "Extends";
|
|
68
|
+
IDLExtendedAttributes["ExtensionMethod"] = "ExtensionMethod";
|
|
68
69
|
IDLExtendedAttributes["Import"] = "Import";
|
|
69
70
|
IDLExtendedAttributes["DefaultExport"] = "DefaultExport";
|
|
70
71
|
IDLExtendedAttributes["IndexSignature"] = "IndexSignature";
|
|
@@ -72,6 +73,7 @@ export var IDLExtendedAttributes;
|
|
|
72
73
|
IDLExtendedAttributes["NativeModule"] = "NativeModule";
|
|
73
74
|
IDLExtendedAttributes["Optional"] = "Optional";
|
|
74
75
|
IDLExtendedAttributes["OriginalEnumMemberName"] = "OriginalEnumMemberName";
|
|
76
|
+
IDLExtendedAttributes["OriginalGenericName"] = "OriginalGenericName";
|
|
75
77
|
IDLExtendedAttributes["Predefined"] = "Predefined";
|
|
76
78
|
IDLExtendedAttributes["Protected"] = "Protected";
|
|
77
79
|
IDLExtendedAttributes["Synthetic"] = "Synthetic";
|
|
@@ -183,11 +185,11 @@ export function forEachChild(node, cbEnter, cbLeave) {
|
|
|
183
185
|
cleanup === null || cleanup === void 0 ? void 0 : cleanup();
|
|
184
186
|
}
|
|
185
187
|
/** Updates tree in place! */
|
|
186
|
-
function updateEachChild(node, op, cbLeave) {
|
|
188
|
+
export function updateEachChild(node, op, cbLeave) {
|
|
187
189
|
var _a;
|
|
188
190
|
const old = node;
|
|
189
191
|
node = op(old);
|
|
190
|
-
if (node.kind !== old.kind) {
|
|
192
|
+
if (node.kind !== old.kind && !(isType(old) && isType(node))) {
|
|
191
193
|
throw new Error("Kinds must be the same!");
|
|
192
194
|
}
|
|
193
195
|
switch (node.kind) {
|
|
@@ -640,7 +642,18 @@ export function createConstant(name, type, value, nodeInitializer = {}) {
|
|
|
640
642
|
}
|
|
641
643
|
export function clone(node) {
|
|
642
644
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0;
|
|
643
|
-
const make = (
|
|
645
|
+
const make = (newnode) => {
|
|
646
|
+
if (node.nodeLocation) {
|
|
647
|
+
newnode.nodeLocation = node.nodeLocation;
|
|
648
|
+
}
|
|
649
|
+
if (node.nameLocation) {
|
|
650
|
+
newnode.nameLocation = node.nameLocation;
|
|
651
|
+
}
|
|
652
|
+
if (node.valueLocation) {
|
|
653
|
+
newnode.valueLocation = node.valueLocation;
|
|
654
|
+
}
|
|
655
|
+
return newnode;
|
|
656
|
+
};
|
|
644
657
|
const get = (node) => node;
|
|
645
658
|
switch (node.kind) {
|
|
646
659
|
case IDLKind.Interface: {
|
package/build/lib/src/index.d.ts
CHANGED
|
@@ -12,6 +12,9 @@ export * from "./util";
|
|
|
12
12
|
export * from "./rand_utils";
|
|
13
13
|
export * from "./IndentedPrinter";
|
|
14
14
|
export * from "./LibraryInterface";
|
|
15
|
+
export * from "./diagnostictypes";
|
|
16
|
+
export * from "./diagnosticmessages";
|
|
17
|
+
export * from "./formatter";
|
|
15
18
|
export * from "./LanguageWriters/LanguageWriter";
|
|
16
19
|
export * from "./LanguageWriters/ArgConvertors";
|
|
17
20
|
export * from "./LanguageWriters/common";
|
|
@@ -22,12 +25,14 @@ export * from "./LanguageWriters/convertors/ETSConvertors";
|
|
|
22
25
|
export * from "./LanguageWriters/convertors/JavaConvertors";
|
|
23
26
|
export * from "./LanguageWriters/convertors/CJConvertors";
|
|
24
27
|
export * from "./LanguageWriters/convertors/InteropConvertors";
|
|
28
|
+
export * from "./LanguageWriters/convertors/KotlinConvertors";
|
|
25
29
|
export * from "./LanguageWriters/writers/CJLanguageWriter";
|
|
26
30
|
export * from "./LanguageWriters/writers/CLikeLanguageWriter";
|
|
27
31
|
export * from "./LanguageWriters/writers/CppLanguageWriter";
|
|
28
32
|
export * from "./LanguageWriters/writers/JavaLanguageWriter";
|
|
29
33
|
export * from "./LanguageWriters/writers/TsLanguageWriter";
|
|
30
34
|
export * from "./LanguageWriters/writers/ETSLanguageWriter";
|
|
35
|
+
export * from "./LanguageWriters/writers/KotlinLanguageWriter";
|
|
31
36
|
export * from "./LanguageWriters/nameConvertor";
|
|
32
37
|
export * from "./peer-generation/idl/IdlNameConvertor";
|
|
33
38
|
export * from "./peer-generation/LayoutManager";
|
|
@@ -40,11 +45,12 @@ export * from "./peer-generation/BuilderClass";
|
|
|
40
45
|
export * from "./peer-generation/Materialized";
|
|
41
46
|
export * from "./peer-generation/modules";
|
|
42
47
|
export * from "./peer-generation/isMaterialized";
|
|
43
|
-
export * from "./peer-generation/isExternalType";
|
|
44
48
|
export * from "./peer-generation/isStructureType";
|
|
45
49
|
export * from "./peer-generation/isEnumType";
|
|
46
50
|
export * from "./peer-generation/unions";
|
|
47
51
|
export * from "./peer-generation/getSuperType";
|
|
52
|
+
export * from "./transformers/FqnTransformer";
|
|
53
|
+
export * from "./transformers/GenericTransformer";
|
|
48
54
|
export * from "./LanguageWriters";
|
|
49
55
|
export * from "./peer-generation/ReferenceResolver";
|
|
50
56
|
export * from "./peer-generation/idl/common";
|
package/build/lib/src/index.js
CHANGED
|
@@ -26,6 +26,9 @@ export * from "./util";
|
|
|
26
26
|
export * from "./rand_utils";
|
|
27
27
|
export * from "./IndentedPrinter";
|
|
28
28
|
export * from "./LibraryInterface";
|
|
29
|
+
export * from "./diagnostictypes";
|
|
30
|
+
export * from "./diagnosticmessages";
|
|
31
|
+
export * from "./formatter";
|
|
29
32
|
export * from "./LanguageWriters/LanguageWriter";
|
|
30
33
|
export * from "./LanguageWriters/ArgConvertors";
|
|
31
34
|
export * from "./LanguageWriters/common";
|
|
@@ -36,12 +39,14 @@ export * from "./LanguageWriters/convertors/ETSConvertors";
|
|
|
36
39
|
export * from "./LanguageWriters/convertors/JavaConvertors";
|
|
37
40
|
export * from "./LanguageWriters/convertors/CJConvertors";
|
|
38
41
|
export * from "./LanguageWriters/convertors/InteropConvertors";
|
|
42
|
+
export * from "./LanguageWriters/convertors/KotlinConvertors";
|
|
39
43
|
export * from "./LanguageWriters/writers/CJLanguageWriter";
|
|
40
44
|
export * from "./LanguageWriters/writers/CLikeLanguageWriter";
|
|
41
45
|
export * from "./LanguageWriters/writers/CppLanguageWriter";
|
|
42
46
|
export * from "./LanguageWriters/writers/JavaLanguageWriter";
|
|
43
47
|
export * from "./LanguageWriters/writers/TsLanguageWriter";
|
|
44
48
|
export * from "./LanguageWriters/writers/ETSLanguageWriter";
|
|
49
|
+
export * from "./LanguageWriters/writers/KotlinLanguageWriter";
|
|
45
50
|
export * from "./LanguageWriters/nameConvertor";
|
|
46
51
|
export * from "./peer-generation/idl/IdlNameConvertor";
|
|
47
52
|
export * from "./peer-generation/LayoutManager";
|
|
@@ -54,11 +59,12 @@ export * from "./peer-generation/BuilderClass";
|
|
|
54
59
|
export * from "./peer-generation/Materialized";
|
|
55
60
|
export * from "./peer-generation/modules";
|
|
56
61
|
export * from "./peer-generation/isMaterialized";
|
|
57
|
-
export * from "./peer-generation/isExternalType";
|
|
58
62
|
export * from "./peer-generation/isStructureType";
|
|
59
63
|
export * from "./peer-generation/isEnumType";
|
|
60
64
|
export * from "./peer-generation/unions";
|
|
61
65
|
export * from "./peer-generation/getSuperType";
|
|
66
|
+
export * from "./transformers/FqnTransformer";
|
|
67
|
+
export * from "./transformers/GenericTransformer";
|
|
62
68
|
export * from "./LanguageWriters";
|
|
63
69
|
export * from "./peer-generation/ReferenceResolver";
|
|
64
70
|
export * from "./peer-generation/idl/common";
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as idl from '../idl';
|
|
2
|
+
import { Language } from '../Language';
|
|
2
3
|
import { ArgConvertor } from '../LanguageWriters/ArgConvertors';
|
|
3
4
|
import { Field, Method } from '../LanguageWriters/LanguageWriter';
|
|
4
5
|
import { PeerClassBase } from './PeerClass';
|
|
@@ -17,7 +18,6 @@ export declare class MaterializedMethod extends PeerMethod {
|
|
|
17
18
|
tsReturnType(): idl.IDLType | undefined;
|
|
18
19
|
getPrivateMethod(): MaterializedMethod;
|
|
19
20
|
withReturnType(returnType: idl.IDLType): MaterializedMethod;
|
|
20
|
-
setOverloadIndex(index: number): void;
|
|
21
21
|
}
|
|
22
22
|
export declare function copyMaterializedMethod(method: MaterializedMethod, overrides: {
|
|
23
23
|
method?: Method;
|
|
@@ -47,6 +47,6 @@ export declare class MaterializedClass implements PeerClassBase {
|
|
|
47
47
|
}
|
|
48
48
|
export declare function createDestroyPeerMethod(clazz: MaterializedClass): MaterializedMethod | undefined;
|
|
49
49
|
export declare function getInternalClassName(name: string): string;
|
|
50
|
-
export declare function getInternalClassQualifiedName(target: idl.IDLEntry, pattern?: idl.QNPattern): string;
|
|
50
|
+
export declare function getInternalClassQualifiedName(target: idl.IDLEntry, pattern?: idl.QNPattern, language?: Language): string;
|
|
51
51
|
export declare function getMaterializedFileName(name: string): string;
|
|
52
52
|
//# sourceMappingURL=Materialized.d.ts.map
|
|
@@ -42,6 +42,7 @@ export class MaterializedMethod extends PeerMethod {
|
|
|
42
42
|
method: copyMethod(this.method, {
|
|
43
43
|
modifiers: ((_b = this.method.modifiers) !== null && _b !== void 0 ? _b : [])
|
|
44
44
|
.filter(it => it !== MethodModifier.PUBLIC)
|
|
45
|
+
.filter(it => it !== MethodModifier.OVERRIDE)
|
|
45
46
|
.concat([MethodModifier.PRIVATE])
|
|
46
47
|
})
|
|
47
48
|
});
|
|
@@ -55,15 +56,10 @@ export class MaterializedMethod extends PeerMethod {
|
|
|
55
56
|
const method = copyMethod(this.method, { signature: signature });
|
|
56
57
|
return copyMaterializedMethod(this, { method: method });
|
|
57
58
|
}
|
|
58
|
-
setOverloadIndex(index) {
|
|
59
|
-
this.overloadIndex = index;
|
|
60
|
-
}
|
|
61
59
|
}
|
|
62
60
|
export function copyMaterializedMethod(method, overrides) {
|
|
63
61
|
var _a;
|
|
64
|
-
|
|
65
|
-
copied.setSameOverloadIndex(method);
|
|
66
|
-
return copied;
|
|
62
|
+
return new MaterializedMethod(method.sig, method.originalParentName, method.implementationParentName, method.returnType, method.isCallSignature, (_a = overrides.method) !== null && _a !== void 0 ? _a : method.method);
|
|
67
63
|
}
|
|
68
64
|
export class MaterializedClass {
|
|
69
65
|
constructor(decl, className, isInterface, isStaticMaterialized, superClass, interfaces, generics, fields, ctors, // zero size when used for global functions
|
|
@@ -83,7 +79,6 @@ export class MaterializedClass {
|
|
|
83
79
|
this.needBeGenerated = needBeGenerated;
|
|
84
80
|
this.taggedMethods = taggedMethods;
|
|
85
81
|
this._isGlobal = false;
|
|
86
|
-
PeerMethod.markAndGroupOverloads(methods);
|
|
87
82
|
}
|
|
88
83
|
getImplementationName() {
|
|
89
84
|
return this.isInterface ? getInternalClassName(this.className) : this.className;
|
|
@@ -107,8 +102,8 @@ export function createDestroyPeerMethod(clazz) {
|
|
|
107
102
|
export function getInternalClassName(name) {
|
|
108
103
|
return `${name}Internal`;
|
|
109
104
|
}
|
|
110
|
-
export function getInternalClassQualifiedName(target, pattern = "package.namespace.name") {
|
|
111
|
-
return getInternalClassName(qualifiedName(target, ".", pattern));
|
|
105
|
+
export function getInternalClassQualifiedName(target, pattern = "package.namespace.name", language) {
|
|
106
|
+
return getInternalClassName(qualifiedName(target, language !== null && language !== void 0 ? language : ".", pattern));
|
|
112
107
|
}
|
|
113
108
|
export function getMaterializedFileName(name) {
|
|
114
109
|
const pascalCase = name.split('_').map(x => capitalize(x)).join('');
|
|
@@ -17,7 +17,7 @@ import * as idl from '../idl';
|
|
|
17
17
|
import { resolveNamedNode } from '../resolveNamedNode';
|
|
18
18
|
import { Language } from '../Language';
|
|
19
19
|
import { createLanguageWriter } from '../LanguageWriters';
|
|
20
|
-
import { BufferConvertor, CallbackConvertor, DateConvertor, MapConvertor, PointerConvertor, TupleConvertor, TypeAliasConvertor, AggregateConvertor, StringConvertor, ClassConvertor, ArrayConvertor, FunctionConvertor, OptionConvertor, NumberConvertor, NumericConvertor, CustomTypeConvertor, UnionConvertor, MaterializedClassConvertor, BooleanConvertor, EnumConvertor, UndefinedConvertor, VoidConvertor, ImportTypeConvertor, InterfaceConvertor, BigIntToU64Convertor, ObjectConvertor,
|
|
20
|
+
import { BufferConvertor, CallbackConvertor, DateConvertor, MapConvertor, PointerConvertor, TupleConvertor, TypeAliasConvertor, AggregateConvertor, StringConvertor, ClassConvertor, ArrayConvertor, FunctionConvertor, OptionConvertor, NumberConvertor, NumericConvertor, CustomTypeConvertor, UnionConvertor, MaterializedClassConvertor, BooleanConvertor, EnumConvertor, UndefinedConvertor, VoidConvertor, ImportTypeConvertor, InterfaceConvertor, BigIntToU64Convertor, ObjectConvertor, } from "../LanguageWriters/ArgConvertors";
|
|
21
21
|
import { CppNameConvertor } from '../LanguageWriters/convertors/CppConvertors';
|
|
22
22
|
import { CJTypeNameConvertor } from '../LanguageWriters/convertors/CJConvertors';
|
|
23
23
|
import { CppConvertor } from '../LanguageWriters/convertors/CppConvertors';
|
|
@@ -32,7 +32,6 @@ import { isMaterialized } from './isMaterialized';
|
|
|
32
32
|
import { isInIdlizeInternal } from '../idlize';
|
|
33
33
|
import { isInCurrentModule } from './modules';
|
|
34
34
|
import { generatorConfiguration } from '../config';
|
|
35
|
-
import { isExternalType } from './isExternalType';
|
|
36
35
|
import { KotlinTypeNameConvertor } from '../LanguageWriters/convertors/KotlinConvertors';
|
|
37
36
|
export const lenses = {
|
|
38
37
|
globals: lib.lens(lib.select.files())
|
|
@@ -392,9 +391,6 @@ export class PeerLibrary {
|
|
|
392
391
|
return new TypeAliasConvertor(this, param, declaration);
|
|
393
392
|
}
|
|
394
393
|
if (idl.isInterface(declaration)) {
|
|
395
|
-
if (isExternalType(declaration, this)) {
|
|
396
|
-
return new ExternalTypeConvertor(this, param, declaration);
|
|
397
|
-
}
|
|
398
394
|
if (isMaterialized(declaration, this)) {
|
|
399
395
|
return new MaterializedClassConvertor(this, param, declaration);
|
|
400
396
|
}
|
|
@@ -16,7 +16,6 @@ export declare class PeerMethodSignature {
|
|
|
16
16
|
readonly context: idl.IDLEntry | undefined;
|
|
17
17
|
readonly modifiers: (MethodModifier.FORCE_CONTEXT | MethodModifier.THROWS)[];
|
|
18
18
|
constructor(name: string, fqname: string, args: PeerMethodArg[], returnType: idl.IDLType, context?: idl.IDLEntry | undefined, modifiers?: (MethodModifier.FORCE_CONTEXT | MethodModifier.THROWS)[]);
|
|
19
|
-
static stub(): PeerMethodSignature;
|
|
20
19
|
static generateOverloadPostfix(decl: idl.IDLConstructor | idl.IDLMethod | idl.IDLCallable | idl.IDLProperty): string;
|
|
21
20
|
static get CTOR(): string;
|
|
22
21
|
static get GET_FINALIZER(): string;
|
|
@@ -28,11 +27,8 @@ export declare class PeerMethod {
|
|
|
28
27
|
returnType: IDLType;
|
|
29
28
|
isCallSignature: boolean;
|
|
30
29
|
method: Method;
|
|
31
|
-
protected overloadIndex?: number;
|
|
32
30
|
constructor(sig: PeerMethodSignature, originalParentName: string, returnType: IDLType, isCallSignature: boolean, method: Method);
|
|
33
31
|
argConvertors(library: PeerLibrary): ArgConvertor[];
|
|
34
32
|
argAndOutConvertors(library: PeerLibrary): ArgConvertor[];
|
|
35
|
-
static markAndGroupOverloads(methods: PeerMethod[]): PeerMethod[];
|
|
36
|
-
setSameOverloadIndex(copyFrom: PeerMethod): void;
|
|
37
33
|
}
|
|
38
34
|
//# sourceMappingURL=PeerMethod.d.ts.map
|
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
import * as idl from '../idl';
|
|
16
16
|
import { createOutArgConvertor } from "../LanguageWriters/ArgConvertors";
|
|
17
17
|
import { MethodModifier } from "../LanguageWriters/LanguageWriter";
|
|
18
|
-
import { isDefined } from "../util";
|
|
19
18
|
export class PeerMethodArg {
|
|
20
19
|
constructor(name, type) {
|
|
21
20
|
this.name = name;
|
|
@@ -37,32 +36,30 @@ export class PeerMethodSignature {
|
|
|
37
36
|
this.context = context;
|
|
38
37
|
this.modifiers = modifiers;
|
|
39
38
|
}
|
|
40
|
-
// whilt migration we're creating PeerMethod, but in reality we shoudnt (created method does not goes through interop and does not have representation in native)
|
|
41
|
-
static stub() {
|
|
42
|
-
return new PeerMethodSignature("%STUB$", "%STUB$", [], idl.IDLVoidType, undefined);
|
|
43
|
-
}
|
|
44
39
|
static generateOverloadPostfix(decl) {
|
|
45
|
-
if (!decl.parent
|
|
40
|
+
if (!decl.parent)
|
|
46
41
|
return ``;
|
|
42
|
+
let sameNamed = [];
|
|
47
43
|
if (idl.isMethod(decl) || idl.isProperty(decl)) {
|
|
48
|
-
let
|
|
49
|
-
|
|
50
|
-
...decl.parent.methods
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
44
|
+
let members = [];
|
|
45
|
+
if (idl.isInterface(decl.parent))
|
|
46
|
+
members = [...decl.parent.properties, ...decl.parent.methods];
|
|
47
|
+
else if (idl.isNamespace(decl.parent))
|
|
48
|
+
members = decl.parent.members;
|
|
49
|
+
else if (idl.isFile(decl.parent))
|
|
50
|
+
members = decl.parent.entries.filter(idl.isMethod);
|
|
51
|
+
sameNamed = members.filter(it => it.name === decl.name);
|
|
52
|
+
}
|
|
53
|
+
else if (idl.isConstructor(decl) && idl.isInterface(decl.parent)) {
|
|
54
|
+
sameNamed = decl.parent.constructors;
|
|
54
55
|
}
|
|
55
|
-
if (idl.
|
|
56
|
-
|
|
57
|
-
const overloadIndex = sameNamed.length > 1 ? sameNamed.indexOf(decl).toString() : '';
|
|
58
|
-
return overloadIndex;
|
|
56
|
+
else if (idl.isCallable(decl) && idl.isInterface(decl.parent)) {
|
|
57
|
+
sameNamed = decl.parent.callables;
|
|
59
58
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
const overloadIndex = sameNamed.length > 1 ? sameNamed.indexOf(decl).toString() : '';
|
|
63
|
-
return overloadIndex;
|
|
59
|
+
else {
|
|
60
|
+
throw new Error("unexpected type of declaration");
|
|
64
61
|
}
|
|
65
|
-
|
|
62
|
+
return sameNamed.length > 1 ? sameNamed.indexOf(decl).toString() : '';
|
|
66
63
|
}
|
|
67
64
|
static get CTOR() { return "construct"; }
|
|
68
65
|
static get GET_FINALIZER() { return "getFinalizer"; }
|
|
@@ -90,20 +87,5 @@ export class PeerMethod {
|
|
|
90
87
|
const outArgConvertor = createOutArgConvertor(library, this.sig.returnType, this.sig.args.map(it => it.name));
|
|
91
88
|
return outArgConvertor ? convertors.concat(outArgConvertor) : convertors;
|
|
92
89
|
}
|
|
93
|
-
static markAndGroupOverloads(methods) {
|
|
94
|
-
let groupedMethods = [];
|
|
95
|
-
for (const peerMethod of methods) {
|
|
96
|
-
if (isDefined(peerMethod.overloadIndex))
|
|
97
|
-
continue;
|
|
98
|
-
const sameNamedMethods = methods.filter(it => it.method.name === peerMethod.method.name);
|
|
99
|
-
if (sameNamedMethods.length > 1)
|
|
100
|
-
sameNamedMethods.forEach((it, index) => it.overloadIndex = index);
|
|
101
|
-
groupedMethods = groupedMethods.concat(sameNamedMethods);
|
|
102
|
-
}
|
|
103
|
-
return groupedMethods;
|
|
104
|
-
}
|
|
105
|
-
setSameOverloadIndex(copyFrom) {
|
|
106
|
-
this.overloadIndex = copyFrom.overloadIndex;
|
|
107
|
-
}
|
|
108
90
|
}
|
|
109
91
|
//# sourceMappingURL=PeerMethod.js.map
|
|
@@ -38,7 +38,7 @@ export function qualifiedName(decl, languageOrDelimiter, pattern) {
|
|
|
38
38
|
throw new Error("internal error, name required for no-named node");
|
|
39
39
|
const delimiter = typeof languageOrDelimiter === "string"
|
|
40
40
|
? languageOrDelimiter
|
|
41
|
-
: (
|
|
41
|
+
: ([Language.CPP, Language.CJ, Language.KOTLIN].includes(languageOrDelimiter) ? '_' : '.');
|
|
42
42
|
if (!idl.isEntry(decl))
|
|
43
43
|
throw new Error(`Expected to have an IDLEntry, got ${idl.IDLKind[decl.kind]}`);
|
|
44
44
|
return idl.getQualifiedName(decl, pattern).split(".").join(delimiter);
|
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
import { generatorConfiguration } from '../config';
|
|
16
16
|
import * as idl from '../idl';
|
|
17
17
|
import { isBuilderClass } from './BuilderClass';
|
|
18
|
-
import { isExternalType } from './isExternalType';
|
|
19
18
|
import { getSuper } from './getSuperType';
|
|
20
19
|
export function isMaterialized(declaration, resolver) {
|
|
21
20
|
var _a;
|
|
@@ -45,9 +44,6 @@ export function isMaterialized(declaration, resolver) {
|
|
|
45
44
|
if (generatorConfiguration().ignoreMaterialized.includes(declaration.name)) {
|
|
46
45
|
return false;
|
|
47
46
|
}
|
|
48
|
-
if (isExternalType(declaration, resolver)) {
|
|
49
|
-
return false;
|
|
50
|
-
}
|
|
51
47
|
// A materialized class is a class or an interface with methods
|
|
52
48
|
// excluding components and related classes
|
|
53
49
|
if (declaration.methods.length > 0 || declaration.constructors.length > 0)
|
|
@@ -2,6 +2,7 @@ import { ModuleConfiguration } from "../config";
|
|
|
2
2
|
import * as idl from "../idl";
|
|
3
3
|
export declare function isInModule(node: idl.IDLNode, module: ModuleConfiguration): boolean;
|
|
4
4
|
export declare function isInModule(packageName: string, module: ModuleConfiguration): boolean;
|
|
5
|
+
export declare function isInExternalModule(node: idl.IDLNode): boolean;
|
|
5
6
|
export declare function getModuleFor(node: idl.IDLNode): ModuleConfiguration;
|
|
6
7
|
export declare function getModuleFor(packageName: string): ModuleConfiguration;
|
|
7
8
|
export declare function currentModule(): ModuleConfiguration;
|
|
@@ -1,22 +1,40 @@
|
|
|
1
1
|
import { generatorConfiguration } from "../config";
|
|
2
2
|
import * as idl from "../idl";
|
|
3
|
+
const modulesCache = new Map();
|
|
3
4
|
export function isInModule(nodeOrPackage, module) {
|
|
4
5
|
if (typeof nodeOrPackage === 'object')
|
|
5
6
|
return isInModule(idl.getPackageName(nodeOrPackage), module);
|
|
6
7
|
return module.packages.some(modulePackage => nodeOrPackage.startsWith(modulePackage));
|
|
7
8
|
}
|
|
9
|
+
export function isInExternalModule(node) {
|
|
10
|
+
var _a;
|
|
11
|
+
return (_a = getModuleFor(node).external) !== null && _a !== void 0 ? _a : false;
|
|
12
|
+
}
|
|
8
13
|
export function getModuleFor(nodeOrPackage) {
|
|
9
14
|
if (typeof nodeOrPackage === "object")
|
|
10
15
|
return getModuleFor(idl.getPackageName(nodeOrPackage));
|
|
11
16
|
const packageName = nodeOrPackage;
|
|
17
|
+
let module = modulesCache.get(packageName);
|
|
18
|
+
if (module)
|
|
19
|
+
return module;
|
|
20
|
+
module = getApplicableModuleFor(packageName);
|
|
21
|
+
modulesCache.set(packageName, module);
|
|
22
|
+
return module;
|
|
23
|
+
}
|
|
24
|
+
function getApplicableModuleFor(packageName) {
|
|
12
25
|
const config = generatorConfiguration();
|
|
13
26
|
const applicableModules = [...config.modules.values()].filter(module => isInModule(packageName, module));
|
|
14
27
|
if (applicableModules.length === 0) {
|
|
15
|
-
if (
|
|
28
|
+
if (packageName === '') {
|
|
16
29
|
console.error("WARNING: use current module for empty package");
|
|
17
30
|
return currentModule();
|
|
18
31
|
}
|
|
19
|
-
|
|
32
|
+
if (packageName.startsWith(`idlize.`)) {
|
|
33
|
+
return currentModule();
|
|
34
|
+
}
|
|
35
|
+
const modules = [...config.modules.keys()].map(it => `"${it}"`).join(", ");
|
|
36
|
+
throw new Error(`Package "${packageName}" is not listed in any module.`
|
|
37
|
+
+ ` Add the "${packageName}" to the existed list of modules [${modules}] or new one in the configuration file`);
|
|
20
38
|
}
|
|
21
39
|
if (applicableModules.length > 1)
|
|
22
40
|
throw new Error(`Package ${packageName} listed in ${applicableModules.length} packages: ${applicableModules.map(it => it.name).join(", ")}`);
|
|
@@ -30,9 +48,10 @@ export function currentModule() {
|
|
|
30
48
|
return result;
|
|
31
49
|
}
|
|
32
50
|
export function isInCurrentModule(nodeOrPackage) {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
51
|
+
// check the nodeOrPackage belongs to some module
|
|
52
|
+
const module = typeof nodeOrPackage === 'string'
|
|
53
|
+
? getModuleFor(nodeOrPackage)
|
|
54
|
+
: getModuleFor(nodeOrPackage);
|
|
55
|
+
return generatorConfiguration().moduleName == module.name;
|
|
37
56
|
}
|
|
38
57
|
//# sourceMappingURL=modules.js.map
|
|
@@ -20,11 +20,9 @@ export declare class UnionRuntimeTypeChecker {
|
|
|
20
20
|
private convertors;
|
|
21
21
|
private conflictingConvertors;
|
|
22
22
|
private duplicateMembers;
|
|
23
|
-
private discriminators;
|
|
24
23
|
constructor(convertors: ArgConvertor[]);
|
|
25
24
|
private checkConflicts;
|
|
26
25
|
makeDiscriminator(value: string, convertorIndex: number, writer: LanguageWriter): LanguageExpression;
|
|
27
|
-
reportConflicts(context: string | undefined, writer: LanguageWriter): void;
|
|
28
26
|
}
|
|
29
27
|
export declare function flattenUnionType(library: LibraryInterface, type: IDLType): IDLType;
|
|
30
28
|
//# sourceMappingURL=unions.d.ts.map
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
import { convertType } from "../LanguageWriters";
|
|
16
16
|
import { IDLCustomObjectType, IDLUndefinedType, isType, isUnionType } from '../idl';
|
|
17
17
|
import { collapseTypes } from "./idl/common";
|
|
18
|
-
import { CustomTypeConvertor } from "../LanguageWriters/ArgConvertors";
|
|
19
18
|
import { RuntimeType } from "../LanguageWriters/common";
|
|
19
|
+
import { Language } from "../Language";
|
|
20
20
|
export class UnionFlattener {
|
|
21
21
|
constructor(resolver) {
|
|
22
22
|
this.resolver = resolver;
|
|
@@ -53,7 +53,6 @@ export class UnionRuntimeTypeChecker {
|
|
|
53
53
|
this.convertors = convertors;
|
|
54
54
|
this.conflictingConvertors = new Set();
|
|
55
55
|
this.duplicateMembers = new Set();
|
|
56
|
-
this.discriminators = [];
|
|
57
56
|
this.checkConflicts();
|
|
58
57
|
}
|
|
59
58
|
checkConflicts() {
|
|
@@ -87,31 +86,12 @@ export class UnionRuntimeTypeChecker {
|
|
|
87
86
|
}
|
|
88
87
|
makeDiscriminator(value, convertorIndex, writer) {
|
|
89
88
|
const convertor = this.convertors[convertorIndex];
|
|
90
|
-
if (this.conflictingConvertors.has(convertor) && writer.language.
|
|
89
|
+
if (this.conflictingConvertors.has(convertor) && writer.language === Language.TS) {
|
|
91
90
|
const discriminator = convertor.unionDiscriminator(value, convertorIndex, writer, this.duplicateMembers);
|
|
92
|
-
this.discriminators.push([discriminator, convertor, convertorIndex]);
|
|
93
91
|
if (discriminator)
|
|
94
92
|
return discriminator;
|
|
95
93
|
}
|
|
96
|
-
return writer.
|
|
97
|
-
writer.makeUnionVariantCondition(convertor, value, `${value}_type`, RuntimeType[it], convertorIndex, runtimeTypeIndex)
|
|
98
|
-
])));
|
|
99
|
-
}
|
|
100
|
-
reportConflicts(context, writer) {
|
|
101
|
-
if (this.discriminators.filter(([discriminator, _, __]) => discriminator === undefined).length > 1) {
|
|
102
|
-
let report = `Union discrimination code can not be generated for \`${context}\`.\n`;
|
|
103
|
-
report += `Possible reasons for that are too similar or unresolved types in union (see below).\n`;
|
|
104
|
-
report += ` # | type | duplicated properties | resolved | discriminator expression\n`;
|
|
105
|
-
const properties = Array.from(this.duplicateMembers).join(",").padEnd(30);
|
|
106
|
-
this.discriminators.forEach(([discr, conv, n]) => {
|
|
107
|
-
const num = n.toString().padEnd(3);
|
|
108
|
-
const typename = conv.targetType(writer).padEnd(30);
|
|
109
|
-
const resolved = (conv instanceof CustomTypeConvertor ? "no" : "yes").padEnd(9);
|
|
110
|
-
const discriminator = discr ? discr.asString() : "<undefined>";
|
|
111
|
-
report += ` ${num}| ${typename}| ${properties}| ${resolved}| ${discriminator}\n`;
|
|
112
|
-
});
|
|
113
|
-
// throw new Error(report)
|
|
114
|
-
}
|
|
94
|
+
return writer.makeString(writer.discriminate(value, convertorIndex, convertor.idlType, convertor.runtimeTypes));
|
|
115
95
|
}
|
|
116
96
|
}
|
|
117
97
|
export function flattenUnionType(library, type) {
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as idl from "../idl";
|
|
2
|
+
export function inplaceFQN(node, resolver) {
|
|
3
|
+
if (idl.isReferenceType(node))
|
|
4
|
+
inplaceReferenceFQN(node, resolver);
|
|
5
|
+
idl.forEachChild(node, (child) => {
|
|
6
|
+
if (idl.isReferenceType(child))
|
|
7
|
+
inplaceReferenceFQN(child, resolver);
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
function inplaceReferenceFQN(ref, resolver) {
|
|
11
|
+
const resolved = resolver.resolveTypeReference(ref);
|
|
12
|
+
if (resolved === undefined) {
|
|
13
|
+
throw new Error("Can not expand FQN for " + ref.name);
|
|
14
|
+
}
|
|
15
|
+
ref.name = idl.getFQName(resolved);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=FqnTransformer.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as idl from "../idl";
|
|
2
|
+
import { ReferenceResolver } from "../peer-generation/ReferenceResolver";
|
|
3
|
+
export declare function inplaceGenerics(node: idl.IDLNode, resolver: ReferenceResolver, options?: {
|
|
4
|
+
ignore?: ((node: idl.IDLNode) => boolean)[];
|
|
5
|
+
}): void;
|
|
6
|
+
export declare function isInplacedGeneric(entry: idl.IDLEntry): boolean;
|
|
7
|
+
export declare function maybeRestoreGenerics(maybeTransformedGeneric: idl.IDLReferenceType | idl.IDLEntry, resolver: ReferenceResolver): idl.IDLReferenceType | undefined;
|
|
8
|
+
//# sourceMappingURL=GenericTransformer.d.ts.map
|