@idlizer/core 2.1.9-arktscgen-5 → 2.1.9-arktscgen-8
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/Language.d.ts +0 -1
- package/build/lib/src/Language.js +7 -8
- package/build/lib/src/LanguageWriters/ArgConvertors.d.ts +4 -15
- package/build/lib/src/LanguageWriters/ArgConvertors.js +103 -102
- package/build/lib/src/LanguageWriters/LanguageWriter.d.ts +8 -30
- package/build/lib/src/LanguageWriters/LanguageWriter.js +15 -67
- 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 +1 -2
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +3 -19
- 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 +3 -5
- package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +9 -22
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.d.ts +6 -9
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +23 -66
- package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.d.ts +1 -7
- package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.js +4 -14
- package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.d.ts +11 -8
- package/build/lib/src/LanguageWriters/writers/KotlinLanguageWriter.js +116 -27
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +4 -5
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +10 -26
- package/build/lib/src/config.d.ts +336 -1
- package/build/lib/src/config.js +11 -3
- 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 +7 -0
- package/build/lib/src/idl.js +15 -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 +4 -20
- package/build/lib/src/peer-generation/Materialized.js +9 -62
- package/build/lib/src/peer-generation/PeerClass.d.ts +0 -2
- package/build/lib/src/peer-generation/PeerClass.js +4 -6
- package/build/lib/src/peer-generation/PeerLibrary.js +1 -5
- package/build/lib/src/peer-generation/PeerMethod.d.ts +25 -27
- package/build/lib/src/peer-generation/PeerMethod.js +83 -93
- 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 +4 -0
- 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 +4 -2
- package/build/lib/src/util.js +21 -12
- package/package.json +2 -2
|
@@ -95,14 +95,6 @@ export class FieldAccessExpression {
|
|
|
95
95
|
return `${this.receiver}${this.nullable ? "?" : ""}.${this.field}`;
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
|
-
export class CheckDefinedExpression {
|
|
99
|
-
constructor(value) {
|
|
100
|
-
this.value = value;
|
|
101
|
-
}
|
|
102
|
-
asString() {
|
|
103
|
-
return `${this.value} != undefined`;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
98
|
export class ProxyStatement {
|
|
107
99
|
constructor(cb) {
|
|
108
100
|
this.cb = cb;
|
|
@@ -121,7 +113,7 @@ export class AssignStatement {
|
|
|
121
113
|
this.options = options;
|
|
122
114
|
}
|
|
123
115
|
write(writer) {
|
|
124
|
-
var _a, _b;
|
|
116
|
+
var _a, _b, _c;
|
|
125
117
|
if (this.isDeclared) {
|
|
126
118
|
const typeSpec = ((_a = this.options) === null || _a === void 0 ? void 0 : _a.overrideTypeName)
|
|
127
119
|
? `: ${this.options.overrideTypeName}`
|
|
@@ -133,7 +125,9 @@ export class AssignStatement {
|
|
|
133
125
|
writer.print(`${constSpec} ${this.variableName}${typeSpec} ${initValue}`);
|
|
134
126
|
}
|
|
135
127
|
else {
|
|
136
|
-
|
|
128
|
+
const receiver = (_b = this.options) === null || _b === void 0 ? void 0 : _b.receiver;
|
|
129
|
+
const withReceiver = receiver ? `${receiver}.` : "";
|
|
130
|
+
writer.print(`${withReceiver}${this.variableName} = ${(_c = this.expression) === null || _c === void 0 ? void 0 : _c.asString()}`);
|
|
137
131
|
}
|
|
138
132
|
}
|
|
139
133
|
}
|
|
@@ -228,19 +222,6 @@ export class MultiBranchIfStatement {
|
|
|
228
222
|
}
|
|
229
223
|
}
|
|
230
224
|
}
|
|
231
|
-
export class CheckOptionalStatement {
|
|
232
|
-
constructor(undefinedValue, optionalExpression, doStatement) {
|
|
233
|
-
this.undefinedValue = undefinedValue;
|
|
234
|
-
this.optionalExpression = optionalExpression;
|
|
235
|
-
this.doStatement = doStatement;
|
|
236
|
-
}
|
|
237
|
-
write(writer) {
|
|
238
|
-
writer.print(`if (${this.optionalExpression.asString()} != ${this.undefinedValue})`);
|
|
239
|
-
writer.pushIndent();
|
|
240
|
-
this.doStatement.write(writer);
|
|
241
|
-
writer.popIndent();
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
225
|
// maybe rename or move of fix
|
|
245
226
|
export class TsEnumEntityStatement {
|
|
246
227
|
constructor(enumEntity, options) {
|
|
@@ -321,6 +302,7 @@ export var FieldModifier;
|
|
|
321
302
|
FieldModifier[FieldModifier["FINAL"] = 5] = "FINAL";
|
|
322
303
|
FieldModifier[FieldModifier["VOLATILE"] = 6] = "VOLATILE";
|
|
323
304
|
FieldModifier[FieldModifier["INTERNAL"] = 7] = "INTERNAL";
|
|
305
|
+
FieldModifier[FieldModifier["OVERRIDE"] = 8] = "OVERRIDE";
|
|
324
306
|
})(FieldModifier || (FieldModifier = {}));
|
|
325
307
|
export var MethodModifier;
|
|
326
308
|
(function (MethodModifier) {
|
|
@@ -509,9 +491,12 @@ export class LanguageWriter {
|
|
|
509
491
|
makeVoid() {
|
|
510
492
|
return this.makeUndefined();
|
|
511
493
|
}
|
|
494
|
+
makeLambdaReturn(expr) {
|
|
495
|
+
return this.makeReturn(expr);
|
|
496
|
+
}
|
|
512
497
|
makeRuntimeTypeCondition(typeVarName, equals, type, varName) {
|
|
513
498
|
const op = equals ? "==" : "!=";
|
|
514
|
-
return this.makeNaryOp(op, [this.
|
|
499
|
+
return this.makeNaryOp(op, [this.makeString(typeVarName), this.makeRuntimeType(type)]);
|
|
515
500
|
}
|
|
516
501
|
makeValueFromOption(value, destinationConvertor) {
|
|
517
502
|
return this.makeString(`${value}!`);
|
|
@@ -548,9 +533,6 @@ export class LanguageWriter {
|
|
|
548
533
|
nativeReceiver(nativeModule) {
|
|
549
534
|
return nativeModule.name;
|
|
550
535
|
}
|
|
551
|
-
makeDefinedCheck(value) {
|
|
552
|
-
return new CheckDefinedExpression(value);
|
|
553
|
-
}
|
|
554
536
|
makeRuntimeTypeDefinedCheck(runtimeType) {
|
|
555
537
|
return this.makeRuntimeTypeCondition(runtimeType, false, RuntimeType.UNDEFINED);
|
|
556
538
|
}
|
|
@@ -575,9 +557,6 @@ export class LanguageWriter {
|
|
|
575
557
|
makeUnionSelector(value, valueType) {
|
|
576
558
|
return this.makeAssign(valueType, undefined, this.makeString(`runtimeType(${value})`), false);
|
|
577
559
|
}
|
|
578
|
-
makeUnionVariantCondition(_convertor, _valueName, valueType, type, _convertorIndex, _runtimeTypeIndex) {
|
|
579
|
-
return this.makeString(`RuntimeType.${type.toUpperCase()} == ${valueType}`);
|
|
580
|
-
}
|
|
581
560
|
makeUnionVariantCast(value, type, convertor, index) {
|
|
582
561
|
return this.makeString(`unsafeCast<${type}>(${value})`);
|
|
583
562
|
}
|
|
@@ -616,9 +595,6 @@ export class LanguageWriter {
|
|
|
616
595
|
writeNativeMethodDeclaration(method) {
|
|
617
596
|
this.writeMethodDeclaration(method.name, method.signature);
|
|
618
597
|
}
|
|
619
|
-
writeUnsafeNativeMethodDeclaration(name, signature) {
|
|
620
|
-
return;
|
|
621
|
-
}
|
|
622
598
|
pushIndent() {
|
|
623
599
|
this.printer.pushIndent();
|
|
624
600
|
}
|
|
@@ -634,18 +610,6 @@ export class LanguageWriter {
|
|
|
634
610
|
makeSignature(returnType, parameters) {
|
|
635
611
|
return new MethodSignature(returnType, parameters.map(it => it.type));
|
|
636
612
|
}
|
|
637
|
-
makeNamedSignature(returnType, parameters) {
|
|
638
|
-
return NamedMethodSignature.make(returnType, parameters.map(it => ({
|
|
639
|
-
name: it.name,
|
|
640
|
-
type: it.isOptional ? idl.createOptionalType(it.type) : it.type
|
|
641
|
-
})));
|
|
642
|
-
}
|
|
643
|
-
makeNativeMethodNamedSignature(returnType, parameters) {
|
|
644
|
-
return this.makeNamedSignature(returnType, parameters);
|
|
645
|
-
}
|
|
646
|
-
makeSerializerConstructorSignatures() {
|
|
647
|
-
return undefined;
|
|
648
|
-
}
|
|
649
613
|
mapFieldModifier(modifier) {
|
|
650
614
|
return `${FieldModifier[modifier].toLowerCase()}`;
|
|
651
615
|
}
|
|
@@ -664,12 +628,6 @@ export class LanguageWriter {
|
|
|
664
628
|
runtimeType(param, valueType, value) {
|
|
665
629
|
this.writeStatement(this.makeAssign(valueType, idl.IDLI32Type, this.makeFunctionCall("runtimeType", [this.makeString(value)]), false));
|
|
666
630
|
}
|
|
667
|
-
makeDiscriminatorFromFields(convertor, value, accessors, duplicates) {
|
|
668
|
-
return this.makeString(`(${this.makeNaryOp("||", accessors.map(it => this.makeString(`${value}!.hasOwnProperty("${it}")`))).asString()})`);
|
|
669
|
-
}
|
|
670
|
-
makeIsTypeCall(value, decl) {
|
|
671
|
-
return this.makeString(`is${decl.name}(${value})`);
|
|
672
|
-
}
|
|
673
631
|
makeEnumEntity(enumEntity, options) {
|
|
674
632
|
return new TsEnumEntityStatement(enumEntity, { isExport: options.isExport, isDeclare: !!options.isDeclare });
|
|
675
633
|
}
|
|
@@ -687,21 +645,16 @@ export class LanguageWriter {
|
|
|
687
645
|
makeCastCustomObject(customName, _isGenericType) {
|
|
688
646
|
return this.makeString(customName);
|
|
689
647
|
}
|
|
690
|
-
makeHasOwnProperty(value,
|
|
648
|
+
makeHasOwnProperty(value, property, propertyTypeName) {
|
|
691
649
|
const expressions = [this.makeString(`${value}.hasOwnProperty("${property}")`)];
|
|
692
650
|
if (propertyTypeName) {
|
|
693
651
|
expressions.push(this.makeString(`isInstanceOf("${propertyTypeName}", ${value}.${property})`));
|
|
694
652
|
}
|
|
695
653
|
return this.makeNaryOp("&&", expressions);
|
|
696
654
|
}
|
|
697
|
-
|
|
698
|
-
return
|
|
699
|
-
|
|
700
|
-
...exprs
|
|
701
|
-
]);
|
|
702
|
-
}
|
|
703
|
-
makeDiscriminatorConvertor(_convertor, _value, _index) {
|
|
704
|
-
return undefined;
|
|
655
|
+
discriminate(value, index, type, runtimeTypes) {
|
|
656
|
+
// return most common form, suitable for languages that don't have sum types
|
|
657
|
+
return `${value}.getSelector() == ${index}`;
|
|
705
658
|
}
|
|
706
659
|
makeNot(expr) {
|
|
707
660
|
return this.makeString(`!(${expr.asString()})`);
|
|
@@ -720,18 +673,13 @@ export class LanguageWriter {
|
|
|
720
673
|
makeStaticBlock(op) {
|
|
721
674
|
op(this);
|
|
722
675
|
}
|
|
723
|
-
instanceOf(
|
|
724
|
-
return this.makeString(`${value} instanceof ${this.getNodeName(
|
|
676
|
+
instanceOf(value, type) {
|
|
677
|
+
return this.makeString(`${value} instanceof ${this.getNodeName(type)}`);
|
|
725
678
|
}
|
|
726
679
|
// The version of instanceOf() which does not use ArgConvertors
|
|
727
680
|
typeInstanceOf(type, value, members) {
|
|
728
681
|
return this.makeString(`${value} instanceof ${this.getNodeName(type)}`);
|
|
729
682
|
}
|
|
730
|
-
stringifyTypeOrEmpty(type) {
|
|
731
|
-
if (type === undefined)
|
|
732
|
-
return "";
|
|
733
|
-
return this.getNodeName(type);
|
|
734
|
-
}
|
|
735
683
|
/**
|
|
736
684
|
* Writes `namespace <namespace> {` and adds extra indent
|
|
737
685
|
* @param namespace Namespace to begin
|
|
@@ -58,9 +58,9 @@ export class ETSTypeNameConvertor extends TSTypeNameConvertor {
|
|
|
58
58
|
case idl.IDLU64Type:
|
|
59
59
|
return 'int64';
|
|
60
60
|
case idl.IDLF32Type:
|
|
61
|
-
return '
|
|
61
|
+
return 'float';
|
|
62
62
|
case idl.IDLF64Type:
|
|
63
|
-
return '
|
|
63
|
+
return 'double';
|
|
64
64
|
case idl.IDLNumberType:
|
|
65
65
|
return 'number';
|
|
66
66
|
case idl.IDLStringType: return 'string';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as idl from '../../idl';
|
|
2
2
|
import { ReferenceResolver } from '../../peer-generation/ReferenceResolver';
|
|
3
|
-
import { IdlNameConvertor, NodeConvertor } from '../nameConvertor';
|
|
3
|
+
import { IdlNameConvertor, NodeConvertor, TypeConvertor } from '../nameConvertor';
|
|
4
|
+
import { InteropReturnTypeConvertor } from './InteropConvertors';
|
|
4
5
|
export declare class KotlinTypeNameConvertor implements NodeConvertor<string>, IdlNameConvertor {
|
|
5
6
|
protected resolver: ReferenceResolver;
|
|
6
7
|
constructor(resolver: ReferenceResolver);
|
|
@@ -22,4 +23,19 @@ export declare class KotlinTypeNameConvertor implements NodeConvertor<string>, I
|
|
|
22
23
|
convertPrimitiveType(type: idl.IDLPrimitiveType): string;
|
|
23
24
|
private callbackType;
|
|
24
25
|
}
|
|
26
|
+
export declare class KotlinCInteropReturnTypeConvertor extends InteropReturnTypeConvertor {
|
|
27
|
+
convertPrimitiveType(type: idl.IDLPrimitiveType): string;
|
|
28
|
+
convertTypeReference(type: idl.IDLReferenceType): string;
|
|
29
|
+
}
|
|
30
|
+
export declare class KotlinCInteropArgConvertor implements TypeConvertor<string> {
|
|
31
|
+
convert(type: idl.IDLType): string;
|
|
32
|
+
convertContainer(type: idl.IDLContainerType): string;
|
|
33
|
+
convertImport(type: idl.IDLImport): string;
|
|
34
|
+
convertTypeReferenceAsImport(type: idl.IDLReferenceType, importClause: string): string;
|
|
35
|
+
convertOptional(type: idl.IDLOptionalType): string;
|
|
36
|
+
convertPrimitiveType(type: idl.IDLPrimitiveType): string;
|
|
37
|
+
convertTypeParameter(type: idl.IDLTypeParameterType): string;
|
|
38
|
+
convertTypeReference(type: idl.IDLReferenceType): string;
|
|
39
|
+
convertUnion(type: idl.IDLUnionType): string;
|
|
40
|
+
}
|
|
25
41
|
//# sourceMappingURL=KotlinConvertors.d.ts.map
|
|
@@ -13,7 +13,11 @@
|
|
|
13
13
|
* limitations under the License.
|
|
14
14
|
*/
|
|
15
15
|
import * as idl from '../../idl';
|
|
16
|
+
import { generateSyntheticIdlNodeName } from '../../peer-generation/idl/common';
|
|
17
|
+
import { isMaterialized } from '../../peer-generation/isMaterialized';
|
|
16
18
|
import { convertNode, convertType } from '../nameConvertor';
|
|
19
|
+
import { removePoints } from './CJConvertors';
|
|
20
|
+
import { InteropReturnTypeConvertor } from './InteropConvertors';
|
|
17
21
|
export class KotlinTypeNameConvertor {
|
|
18
22
|
constructor(resolver) {
|
|
19
23
|
this.resolver = resolver;
|
|
@@ -25,10 +29,10 @@ export class KotlinTypeNameConvertor {
|
|
|
25
29
|
return node.name;
|
|
26
30
|
}
|
|
27
31
|
convertInterface(node) {
|
|
28
|
-
return node.name;
|
|
32
|
+
return removePoints(idl.getQualifiedName(node, 'namespace.name'));
|
|
29
33
|
}
|
|
30
34
|
convertEnum(node) {
|
|
31
|
-
return node.name;
|
|
35
|
+
return removePoints(idl.getQualifiedName(node, 'namespace.name'));
|
|
32
36
|
}
|
|
33
37
|
convertTypedef(node) {
|
|
34
38
|
return node.name;
|
|
@@ -47,15 +51,15 @@ export class KotlinTypeNameConvertor {
|
|
|
47
51
|
return `${this.convert(type.type)}?`;
|
|
48
52
|
}
|
|
49
53
|
convertUnion(type) {
|
|
50
|
-
return type.
|
|
54
|
+
return "Union_" + type.types.map(it => generateSyntheticIdlNodeName(it)).join("_");
|
|
51
55
|
}
|
|
52
56
|
convertContainer(type) {
|
|
53
57
|
if (idl.IDLContainerUtils.isSequence(type)) {
|
|
54
|
-
return `
|
|
58
|
+
return `ArrayList<${convertType(this, type.elementType[0])}>`;
|
|
55
59
|
}
|
|
56
60
|
if (idl.IDLContainerUtils.isRecord(type)) {
|
|
57
61
|
const stringes = type.elementType.slice(0, 2).map(it => convertType(this, it));
|
|
58
|
-
return `
|
|
62
|
+
return `MutableMap<${stringes[0]}, ${stringes[1]}>`;
|
|
59
63
|
}
|
|
60
64
|
if (idl.IDLContainerUtils.isPromise(type)) {
|
|
61
65
|
return `Any`;
|
|
@@ -76,7 +80,7 @@ export class KotlinTypeNameConvertor {
|
|
|
76
80
|
}
|
|
77
81
|
}
|
|
78
82
|
if (decl) {
|
|
79
|
-
return decl.name;
|
|
83
|
+
return removePoints(idl.getQualifiedName(decl, 'namespace.name'));
|
|
80
84
|
}
|
|
81
85
|
return this.convert(idl.IDLCustomObjectType);
|
|
82
86
|
}
|
|
@@ -125,4 +129,115 @@ export class KotlinTypeNameConvertor {
|
|
|
125
129
|
return `((${params.join(", ")}) -> ${this.convert(decl.returnType)})`;
|
|
126
130
|
}
|
|
127
131
|
}
|
|
132
|
+
const KBoolean = "KBoolean";
|
|
133
|
+
const KInt = "KInt";
|
|
134
|
+
const KLong = "KLong";
|
|
135
|
+
const KFloat = "KFloat";
|
|
136
|
+
const KNativePointer = "KNativePointer";
|
|
137
|
+
const KInteropNumber = "KInteropNumber";
|
|
138
|
+
const KStringPtr = "KStringPtr";
|
|
139
|
+
const KInteropReturnBuffer = "KInteropReturnBuffer";
|
|
140
|
+
const KInteropBuffer = "KInteropBuffer";
|
|
141
|
+
const KSerializerBuffer = "KSerializerBuffer";
|
|
142
|
+
export class KotlinCInteropReturnTypeConvertor extends InteropReturnTypeConvertor {
|
|
143
|
+
convertPrimitiveType(type) {
|
|
144
|
+
switch (type) {
|
|
145
|
+
case idl.IDLI8Type:
|
|
146
|
+
case idl.IDLU8Type:
|
|
147
|
+
case idl.IDLI16Type:
|
|
148
|
+
case idl.IDLU16Type:
|
|
149
|
+
case idl.IDLI32Type:
|
|
150
|
+
case idl.IDLU32Type:
|
|
151
|
+
case idl.IDLI64Type:
|
|
152
|
+
case idl.IDLU64Type:
|
|
153
|
+
case idl.IDLF16Type:
|
|
154
|
+
case idl.IDLF32Type:
|
|
155
|
+
case idl.IDLF64Type: return KInt;
|
|
156
|
+
case idl.IDLNumberType: return KInteropNumber;
|
|
157
|
+
case idl.IDLBooleanType: return KBoolean;
|
|
158
|
+
case idl.IDLBigintType: return KLong;
|
|
159
|
+
case idl.IDLAnyType:
|
|
160
|
+
case idl.IDLThisType:
|
|
161
|
+
case idl.IDLUndefinedType:
|
|
162
|
+
case idl.IDLUnknownType:
|
|
163
|
+
case idl.IDLObjectType:
|
|
164
|
+
case idl.IDLVoidType: return idl.IDLVoidType.name;
|
|
165
|
+
case idl.IDLBufferType: return KInteropReturnBuffer;
|
|
166
|
+
case idl.IDLStringType: return KStringPtr;
|
|
167
|
+
case idl.IDLPointerType: return KNativePointer;
|
|
168
|
+
}
|
|
169
|
+
throw new Error(`Cannot pass primitive type ${type.name} through interop`);
|
|
170
|
+
}
|
|
171
|
+
convertTypeReference(type) {
|
|
172
|
+
if (this.resolver != undefined && idl.isCallback(this.resolver.toDeclaration(type))) {
|
|
173
|
+
return KNativePointer;
|
|
174
|
+
}
|
|
175
|
+
if (type.name.endsWith("Attribute"))
|
|
176
|
+
return idl.IDLVoidType.name;
|
|
177
|
+
const decl = this.resolver.resolveTypeReference(type);
|
|
178
|
+
if (decl) {
|
|
179
|
+
// Callbacks and array types return by value
|
|
180
|
+
if (idl.isCallback(this.resolver.toDeclaration(type))) {
|
|
181
|
+
return type.name;
|
|
182
|
+
}
|
|
183
|
+
if (idl.isInterface(decl)) {
|
|
184
|
+
if (isMaterialized(decl, this.resolver)) {
|
|
185
|
+
return KNativePointer;
|
|
186
|
+
}
|
|
187
|
+
return KInteropReturnBuffer;
|
|
188
|
+
}
|
|
189
|
+
if (idl.isEnum(decl)) {
|
|
190
|
+
return KInt;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return idl.IDLVoidType.name;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
export class KotlinCInteropArgConvertor {
|
|
197
|
+
convert(type) {
|
|
198
|
+
return convertType(this, type);
|
|
199
|
+
}
|
|
200
|
+
convertContainer(type) {
|
|
201
|
+
throw new Error(`Cannot pass container types through interop`);
|
|
202
|
+
}
|
|
203
|
+
convertImport(type) {
|
|
204
|
+
throw new Error(`Cannot pass import types through interop`);
|
|
205
|
+
}
|
|
206
|
+
convertTypeReferenceAsImport(type, importClause) {
|
|
207
|
+
throw new Error(`Cannot pass import types through interop`);
|
|
208
|
+
}
|
|
209
|
+
convertOptional(type) {
|
|
210
|
+
return KNativePointer;
|
|
211
|
+
}
|
|
212
|
+
convertPrimitiveType(type) {
|
|
213
|
+
switch (type) {
|
|
214
|
+
case idl.IDLI64Type: return KLong;
|
|
215
|
+
case idl.IDLU64Type: return KLong;
|
|
216
|
+
case idl.IDLI32Type: return KInt;
|
|
217
|
+
case idl.IDLU32Type: return KInt;
|
|
218
|
+
case idl.IDLF32Type: return KFloat;
|
|
219
|
+
case idl.IDLNumberType: return KInteropNumber;
|
|
220
|
+
case idl.IDLBigintType: return KLong;
|
|
221
|
+
case idl.IDLSerializerBuffer: return KSerializerBuffer;
|
|
222
|
+
case idl.IDLBooleanType:
|
|
223
|
+
case idl.IDLFunctionType: return KInt;
|
|
224
|
+
case idl.IDLStringType: return KStringPtr;
|
|
225
|
+
case idl.IDLBufferType: return KInteropBuffer;
|
|
226
|
+
case idl.IDLDate: return KLong;
|
|
227
|
+
case idl.IDLUndefinedType:
|
|
228
|
+
case idl.IDLVoidType:
|
|
229
|
+
case idl.IDLPointerType: return KNativePointer;
|
|
230
|
+
}
|
|
231
|
+
throw new Error(`Cannot pass primitive type ${type.name} through interop`);
|
|
232
|
+
}
|
|
233
|
+
convertTypeParameter(type) {
|
|
234
|
+
throw new Error("Cannot pass type parameters through interop");
|
|
235
|
+
}
|
|
236
|
+
convertTypeReference(type) {
|
|
237
|
+
throw new Error(`Cannot pass type references through interop`);
|
|
238
|
+
}
|
|
239
|
+
convertUnion(type) {
|
|
240
|
+
throw new Error("Cannot pass union types through interop");
|
|
241
|
+
}
|
|
242
|
+
}
|
|
128
243
|
//# sourceMappingURL=KotlinConvertors.js.map
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
* limitations under the License.
|
|
14
14
|
*/
|
|
15
15
|
import * as idl from '../../idl';
|
|
16
|
+
import { maybeRestoreGenerics } from '../../transformers/GenericTransformer';
|
|
16
17
|
import { convertNode, convertType } from '../nameConvertor';
|
|
17
18
|
export class TSTypeNameConvertor {
|
|
18
19
|
constructor(resolver) {
|
|
@@ -107,6 +108,11 @@ export class TSTypeNameConvertor {
|
|
|
107
108
|
// (can not cast MyEnum to exact MyEnum.Value1)
|
|
108
109
|
decl = decl.parent;
|
|
109
110
|
}
|
|
111
|
+
let maybeRestoredGeneric = maybeRestoreGenerics(type, this.resolver);
|
|
112
|
+
if (maybeRestoredGeneric) {
|
|
113
|
+
type = maybeRestoredGeneric;
|
|
114
|
+
decl = this.resolver.resolveTypeReference(maybeRestoredGeneric);
|
|
115
|
+
}
|
|
110
116
|
let typeSpec = type.name;
|
|
111
117
|
let typeArgs = (_b = (_a = type.typeArguments) === null || _a === void 0 ? void 0 : _a.map(it => this.convert(it))) !== null && _b !== void 0 ? _b : [];
|
|
112
118
|
if (typeSpec === `Optional`)
|
|
@@ -101,7 +101,7 @@ export declare class CJLanguageWriter extends LanguageWriter {
|
|
|
101
101
|
}, setter?: {
|
|
102
102
|
method: Method;
|
|
103
103
|
op: () => void;
|
|
104
|
-
}): void;
|
|
104
|
+
}, initExpr?: LanguageExpression): void;
|
|
105
105
|
writeGetterImplementation(method: Method, op?: (writer: this) => void): void;
|
|
106
106
|
writeSetterImplementation(method: Method, op: (writer: this) => void): void;
|
|
107
107
|
writeCJForeign(op: (writer: CJLanguageWriter) => void): void;
|
|
@@ -121,7 +121,6 @@ export declare class CJLanguageWriter extends LanguageWriter {
|
|
|
121
121
|
makeThrowError(message: string): LanguageStatement;
|
|
122
122
|
makeTernary(condition: LanguageExpression, trueExpression: LanguageExpression, falseExpression: LanguageExpression): LanguageExpression;
|
|
123
123
|
makeReturn(expr: LanguageExpression): LanguageStatement;
|
|
124
|
-
makeCheckOptional(optional: LanguageExpression, doStatement: LanguageStatement): LanguageStatement;
|
|
125
124
|
makeStatement(expr: LanguageExpression): LanguageStatement;
|
|
126
125
|
makeLoop(counter: string, limit: string, statement?: LanguageStatement): LanguageStatement;
|
|
127
126
|
makeMapForEach(map: string, key: string, value: string, op: () => void): LanguageStatement;
|
|
@@ -227,20 +227,6 @@ class CJThrowErrorStatement {
|
|
|
227
227
|
writer.print(`throw Exception("${this.message}")`);
|
|
228
228
|
}
|
|
229
229
|
}
|
|
230
|
-
class CJCheckOptionalStatement {
|
|
231
|
-
constructor(undefinedValue, optionalExpression, doStatement) {
|
|
232
|
-
this.undefinedValue = undefinedValue;
|
|
233
|
-
this.optionalExpression = optionalExpression;
|
|
234
|
-
this.doStatement = doStatement;
|
|
235
|
-
}
|
|
236
|
-
write(writer) {
|
|
237
|
-
writer.print(`if (let Some(${this.optionalExpression.asString()}) <- ${this.optionalExpression.asString()}) {`);
|
|
238
|
-
writer.pushIndent();
|
|
239
|
-
this.doStatement.write(writer);
|
|
240
|
-
writer.popIndent();
|
|
241
|
-
writer.print('}');
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
230
|
class CJArrayResizeStatement {
|
|
245
231
|
constructor(array, arrayType, length, deserializer) {
|
|
246
232
|
this.array = array;
|
|
@@ -377,7 +363,7 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
377
363
|
this.popIndent();
|
|
378
364
|
this.printer.print(`}`);
|
|
379
365
|
}
|
|
380
|
-
writeProperty(propName, propType, modifiers, getter, setter) {
|
|
366
|
+
writeProperty(propName, propType, modifiers, getter, setter, initExpr) {
|
|
381
367
|
let containerName = propName.concat("_container");
|
|
382
368
|
let truePropName = this.escapeKeyword(propName);
|
|
383
369
|
if (getter) {
|
|
@@ -387,7 +373,8 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
387
373
|
}
|
|
388
374
|
let isStatic = modifiers.includes(FieldModifier.STATIC);
|
|
389
375
|
let isMutable = !modifiers.includes(FieldModifier.READONLY);
|
|
390
|
-
|
|
376
|
+
let initializer = initExpr ? ` = ${initExpr.asString()}` : "";
|
|
377
|
+
this.print(`public ${isMutable ? "mut " : ""}${isStatic ? "static " : "open "}prop ${truePropName}: ${this.getNodeName(propType)}${initializer}`);
|
|
391
378
|
if (getter) {
|
|
392
379
|
this.print('{');
|
|
393
380
|
this.pushIndent();
|
|
@@ -490,9 +477,6 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
490
477
|
makeReturn(expr) {
|
|
491
478
|
return new ReturnStatement(expr);
|
|
492
479
|
}
|
|
493
|
-
makeCheckOptional(optional, doStatement) {
|
|
494
|
-
return new CJCheckOptionalStatement("undefined", optional, doStatement);
|
|
495
|
-
}
|
|
496
480
|
makeStatement(expr) {
|
|
497
481
|
return new ExpressionStatement(expr);
|
|
498
482
|
}
|
|
@@ -8,11 +8,6 @@ export declare class CLikeReturnStatement extends ReturnStatement {
|
|
|
8
8
|
constructor(expression: LanguageExpression);
|
|
9
9
|
write(writer: LanguageWriter): void;
|
|
10
10
|
}
|
|
11
|
-
export declare class CDefinedExpression implements LanguageExpression {
|
|
12
|
-
private value;
|
|
13
|
-
constructor(value: string);
|
|
14
|
-
asString(): string;
|
|
15
|
-
}
|
|
16
11
|
export declare class CLikeLoopStatement implements LanguageStatement {
|
|
17
12
|
private counter;
|
|
18
13
|
private limit;
|
|
@@ -12,7 +12,6 @@
|
|
|
12
12
|
* See the License for the specific language governing permissions and
|
|
13
13
|
* limitations under the License.
|
|
14
14
|
*/
|
|
15
|
-
import { PrimitiveTypeList } from "../../peer-generation/PrimitiveType";
|
|
16
15
|
import { ExpressionStatement, LanguageWriter, Method, ReturnStatement } from "../LanguageWriter";
|
|
17
16
|
////////////////////////////////////////////////////////////////
|
|
18
17
|
// STATEMENTS //
|
|
@@ -26,14 +25,6 @@ export class CLikeReturnStatement extends ReturnStatement {
|
|
|
26
25
|
writer.print(this.expression ? `return ${this.expression.asString()};` : "return;");
|
|
27
26
|
}
|
|
28
27
|
}
|
|
29
|
-
export class CDefinedExpression {
|
|
30
|
-
constructor(value) {
|
|
31
|
-
this.value = value;
|
|
32
|
-
}
|
|
33
|
-
asString() {
|
|
34
|
-
return `${this.value} != ${PrimitiveTypeList.UndefinedTag}`;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
28
|
export class CLikeLoopStatement {
|
|
38
29
|
constructor(counter, limit, statement) {
|
|
39
30
|
this.counter = counter;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { IDLContainerType, IDLEnum, IDLNode, IDLType, IDLTypedef } from '../../idl';
|
|
2
2
|
import { ArgConvertor, BaseArgConvertor } from "../ArgConvertors";
|
|
3
3
|
import { PrimitiveTypeList } from "../../peer-generation/PrimitiveType";
|
|
4
|
-
import { AssignStatement, FieldModifier, LanguageExpression, LanguageStatement, LanguageWriter, MakeAssignOptions, MakeCastOptions, MakeRefOptions, Method, PrintHint, MethodModifier, MethodSignature,
|
|
4
|
+
import { AssignStatement, FieldModifier, LanguageExpression, LanguageStatement, LanguageWriter, MakeAssignOptions, MakeCastOptions, MakeRefOptions, Method, PrintHint, MethodModifier, MethodSignature, ObjectArgs, DelegationCall, MethodStaticCallExpression } from "../LanguageWriter";
|
|
5
5
|
import { CLikeLanguageWriter } from "./CLikeLanguageWriter";
|
|
6
6
|
import { IdlNameConvertor } from "../nameConvertor";
|
|
7
7
|
import { RuntimeType } from "../common";
|
|
@@ -85,12 +85,10 @@ export declare class CppLanguageWriter extends CLikeLanguageWriter {
|
|
|
85
85
|
makeAssign(variableName: string, type: IDLType | undefined, expr: LanguageExpression | undefined, isDeclared?: boolean, isConst?: boolean, options?: MakeAssignOptions): LanguageStatement;
|
|
86
86
|
makeLambda(signature: MethodSignature, body?: LanguageStatement[]): LanguageExpression;
|
|
87
87
|
makeReturn(expr: LanguageExpression): LanguageStatement;
|
|
88
|
-
makeCheckOptional(optional: LanguageExpression, doStatement: LanguageStatement): LanguageStatement;
|
|
89
88
|
makeStatement(expr: LanguageExpression): LanguageStatement;
|
|
90
89
|
makeArrayAccess(value: string, indexVar: string): LanguageExpression;
|
|
91
90
|
makeTupleAccess(value: string, index: number): LanguageExpression;
|
|
92
91
|
makeUnionSelector(value: string, valueType: string): LanguageStatement;
|
|
93
|
-
makeUnionVariantCondition(_convertor: ArgConvertor, _valueName: string, valueType: string, type: string, convertorIndex: number): LanguageExpression;
|
|
94
92
|
makeUnionVariantCast(value: string, type: string, convertor: ArgConvertor, index: number): LanguageExpression;
|
|
95
93
|
makeStaticMethodCall(receiver: string, method: string, params: LanguageExpression[], nullable?: boolean): LanguageExpression;
|
|
96
94
|
makeLoop(counter: string, limit: string, statement?: LanguageStatement): LanguageStatement;
|
|
@@ -103,7 +101,7 @@ export declare class CppLanguageWriter extends CLikeLanguageWriter {
|
|
|
103
101
|
makeCast(expr: LanguageExpression, node: IDLNode, options?: MakeCastOptions): LanguageExpression;
|
|
104
102
|
makePointerPropertyAccessExpression(expression: string, name: string): CppPointerPropertyAccessExpression;
|
|
105
103
|
writePrintLog(message: string): void;
|
|
106
|
-
makeDefinedCheck(value: string): LanguageExpression;
|
|
104
|
+
makeDefinedCheck(value: string, isTag?: boolean): LanguageExpression;
|
|
107
105
|
makeSetUnionSelector(value: string, index: string): LanguageStatement;
|
|
108
106
|
makeSetOptionTag(value: string, tag: LanguageExpression): LanguageStatement;
|
|
109
107
|
getObjectAccessor(convertor: BaseArgConvertor, value: string, args?: ObjectArgs): string;
|
|
@@ -129,6 +127,6 @@ export declare class CppLanguageWriter extends CLikeLanguageWriter {
|
|
|
129
127
|
stringifyMethodReturnType(type: IDLType, hint?: PrintHint): string;
|
|
130
128
|
stringifyMethodArgType(type: IDLType, hint?: PrintHint): string;
|
|
131
129
|
stringifyTypeWithReceiver(type: IDLType, receiver?: string): string;
|
|
132
|
-
|
|
130
|
+
discriminate(value: string, index: number, type: idl.IDLType, runtimeTypes: RuntimeType[]): string;
|
|
133
131
|
}
|
|
134
132
|
//# sourceMappingURL=CppLanguageWriter.d.ts.map
|
|
@@ -12,11 +12,11 @@
|
|
|
12
12
|
* See the License for the specific language governing permissions and
|
|
13
13
|
* limitations under the License.
|
|
14
14
|
*/
|
|
15
|
-
import { createReferenceType, forceAsNamedNode
|
|
15
|
+
import { createReferenceType, forceAsNamedNode } from '../../idl';
|
|
16
16
|
import { Language } from '../../Language';
|
|
17
17
|
import { PrimitiveTypeList } from "../../peer-generation/PrimitiveType";
|
|
18
|
-
import { AssignStatement, BlockStatement, FieldModifier, PrintHint, MethodModifier,
|
|
19
|
-
import {
|
|
18
|
+
import { AssignStatement, BlockStatement, FieldModifier, PrintHint, MethodModifier, StringExpression, MethodStaticCallExpression } from "../LanguageWriter";
|
|
19
|
+
import { CLikeExpressionStatement, CLikeLanguageWriter, CLikeLoopStatement, CLikeReturnStatement } from "./CLikeLanguageWriter";
|
|
20
20
|
import { RuntimeType } from "../common";
|
|
21
21
|
import { IndentedPrinter } from "../../IndentedPrinter";
|
|
22
22
|
import { cppKeywords } from "../../languageSpecificKeywords";
|
|
@@ -294,14 +294,11 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
|
|
|
294
294
|
return new CppAssignStatement(variableName, type, expr, isDeclared, isConst, options);
|
|
295
295
|
}
|
|
296
296
|
makeLambda(signature, body) {
|
|
297
|
-
throw new Error(`
|
|
297
|
+
throw new Error(`Improve`);
|
|
298
298
|
}
|
|
299
299
|
makeReturn(expr) {
|
|
300
300
|
return new CLikeReturnStatement(expr);
|
|
301
301
|
}
|
|
302
|
-
makeCheckOptional(optional, doStatement) {
|
|
303
|
-
throw new Error(`TBD`);
|
|
304
|
-
}
|
|
305
302
|
makeStatement(expr) {
|
|
306
303
|
return new CLikeExpressionStatement(expr);
|
|
307
304
|
}
|
|
@@ -314,9 +311,6 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
|
|
|
314
311
|
makeUnionSelector(value, valueType) {
|
|
315
312
|
return this.makeAssign(valueType, undefined, this.makeString(`${value}.selector`), false);
|
|
316
313
|
}
|
|
317
|
-
makeUnionVariantCondition(_convertor, _valueName, valueType, type, convertorIndex) {
|
|
318
|
-
return this.makeString(`${valueType} == ${convertorIndex}`);
|
|
319
|
-
}
|
|
320
314
|
makeUnionVariantCast(value, type, convertor, index) {
|
|
321
315
|
return this.makeString(`${value}.value${index}`);
|
|
322
316
|
}
|
|
@@ -353,8 +347,9 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
|
|
|
353
347
|
writePrintLog(message) {
|
|
354
348
|
this.print(`printf("${message}\\n");`);
|
|
355
349
|
}
|
|
356
|
-
makeDefinedCheck(value) {
|
|
357
|
-
return
|
|
350
|
+
makeDefinedCheck(value, isTag) {
|
|
351
|
+
return this.makeString(isTag ? `${value} != ${PrimitiveTypeList.UndefinedTag}`
|
|
352
|
+
: `runtimeType(${value}) != ${PrimitiveTypeList.UndefinedRuntime}`);
|
|
358
353
|
}
|
|
359
354
|
makeSetUnionSelector(value, index) {
|
|
360
355
|
return this.makeAssign(`${value}.selector`, undefined, this.makeString(index), false);
|
|
@@ -488,16 +483,8 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
|
|
|
488
483
|
}
|
|
489
484
|
return this.getNodeName(type);
|
|
490
485
|
}
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
idl.IDLSerializerBuffer,
|
|
494
|
-
IDLU32Type,
|
|
495
|
-
createReferenceType("CallbackResourceHolder")
|
|
496
|
-
], ["data", "dataLength", "resourceHolder"], [undefined, `0`, `nullptr`], undefined, [undefined, undefined, undefined, PrintHint.AsPointer]);
|
|
497
|
-
const ownedDataCtor = new NamedMethodSignature(IDLVoidType, [
|
|
498
|
-
createReferenceType("CallbackResourceHolder")
|
|
499
|
-
], ["resourceHolder"], [`nullptr`], undefined, [undefined, PrintHint.AsPointer]);
|
|
500
|
-
return [ownedDataCtor, fromBufferCtor];
|
|
486
|
+
discriminate(value, index, type, runtimeTypes) {
|
|
487
|
+
return `${value}.selector == ${index}`;
|
|
501
488
|
}
|
|
502
489
|
}
|
|
503
490
|
//# sourceMappingURL=CppLanguageWriter.js.map
|