@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
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import { Language } from '../../Language';
|
|
16
16
|
import { IndentedPrinter } from "../../IndentedPrinter";
|
|
17
|
-
import { AssignStatement,
|
|
17
|
+
import { AssignStatement, BlockStatement, FieldModifier, LambdaExpression, Method, MethodModifier, MethodSignature, NamedMethodSignature, } from "../LanguageWriter";
|
|
18
18
|
import { CLikeExpressionStatement, CLikeLanguageWriter, CLikeLoopStatement, CLikeReturnStatement } from "./CLikeLanguageWriter";
|
|
19
19
|
import * as idl from '../../idl';
|
|
20
20
|
import { RuntimeType } from "../common";
|
|
@@ -30,15 +30,7 @@ class JavaLambdaExpression extends LambdaExpression {
|
|
|
30
30
|
}
|
|
31
31
|
asString() {
|
|
32
32
|
const params = this.signature.args.map((it, i) => `${idl.forceAsNamedNode(it).name} ${this.signature.argName(i)}`);
|
|
33
|
-
return `(${params.join(", ")})
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
export class JavaCheckDefinedExpression {
|
|
37
|
-
constructor(value) {
|
|
38
|
-
this.value = value;
|
|
39
|
-
}
|
|
40
|
-
asString() {
|
|
41
|
-
return `${this.value} != null`;
|
|
33
|
+
return `(${params.join(", ")}) ->${this.bodyAsString(true)}`;
|
|
42
34
|
}
|
|
43
35
|
}
|
|
44
36
|
export class JavaCastExpression {
|
|
@@ -74,11 +66,11 @@ export class JavaAssignStatement extends AssignStatement {
|
|
|
74
66
|
}
|
|
75
67
|
}
|
|
76
68
|
class JavaMapForEachStatement {
|
|
77
|
-
constructor(map, key, value,
|
|
69
|
+
constructor(map, key, value, body) {
|
|
78
70
|
this.map = map;
|
|
79
71
|
this.key = key;
|
|
80
72
|
this.value = value;
|
|
81
|
-
this.
|
|
73
|
+
this.body = body;
|
|
82
74
|
}
|
|
83
75
|
write(writer) {
|
|
84
76
|
const entryVar = `${this.map}Entry`;
|
|
@@ -86,7 +78,7 @@ class JavaMapForEachStatement {
|
|
|
86
78
|
writer.pushIndent();
|
|
87
79
|
writer.print(`var ${this.key} = ${entryVar}.getKey();`);
|
|
88
80
|
writer.print(`var ${this.value} = ${entryVar}.getValue();`);
|
|
89
|
-
this.
|
|
81
|
+
writer.writeStatement(new BlockStatement(this.body, false));
|
|
90
82
|
writer.popIndent();
|
|
91
83
|
writer.print(`}`);
|
|
92
84
|
}
|
|
@@ -111,7 +103,7 @@ export class JavaLanguageWriter extends CLikeLanguageWriter {
|
|
|
111
103
|
}
|
|
112
104
|
fork(options) {
|
|
113
105
|
var _a;
|
|
114
|
-
return new JavaLanguageWriter(new IndentedPrinter(), (_a = options === null || options === void 0 ? void 0 : options.resolver) !== null && _a !== void 0 ? _a : this.resolver, this.typeConvertor);
|
|
106
|
+
return new JavaLanguageWriter(new IndentedPrinter([], this.indentDepth()), (_a = options === null || options === void 0 ? void 0 : options.resolver) !== null && _a !== void 0 ? _a : this.resolver, this.typeConvertor);
|
|
115
107
|
}
|
|
116
108
|
writeClass(name, op, superClass, interfaces, generics, isDeclared, isExport = true) {
|
|
117
109
|
let genericsClause = (generics === null || generics === void 0 ? void 0 : generics.length) ? `<${generics.join(', ')}> ` : ``;
|
|
@@ -156,7 +148,7 @@ export class JavaLanguageWriter extends CLikeLanguageWriter {
|
|
|
156
148
|
this.popIndent();
|
|
157
149
|
this.printer.print(`}`);
|
|
158
150
|
}
|
|
159
|
-
writeProperty(propName, propType, modifiers, getter, setter) {
|
|
151
|
+
writeProperty(propName, propType, modifiers, getter, setter, initExpr) {
|
|
160
152
|
let isStatic = modifiers.includes(FieldModifier.STATIC);
|
|
161
153
|
let isMutable = !modifiers.includes(FieldModifier.READONLY);
|
|
162
154
|
let containerName = propName.concat("_container");
|
|
@@ -177,6 +169,7 @@ export class JavaLanguageWriter extends CLikeLanguageWriter {
|
|
|
177
169
|
}
|
|
178
170
|
}
|
|
179
171
|
else {
|
|
172
|
+
// TBD: use initExpr
|
|
180
173
|
this.writeMethodDeclaration(propName, new MethodSignature(propType, []));
|
|
181
174
|
}
|
|
182
175
|
}
|
|
@@ -195,17 +188,14 @@ export class JavaLanguageWriter extends CLikeLanguageWriter {
|
|
|
195
188
|
makeReturn(expr) {
|
|
196
189
|
return new CLikeReturnStatement(expr);
|
|
197
190
|
}
|
|
198
|
-
makeCheckOptional(optional, doStatement) {
|
|
199
|
-
return new CheckOptionalStatement("null", optional, doStatement);
|
|
200
|
-
}
|
|
201
191
|
makeDefinedCheck(value) {
|
|
202
|
-
return
|
|
192
|
+
return this.makeString(`${value} != null`);
|
|
203
193
|
}
|
|
204
194
|
makeLoop(counter, limit, statement) {
|
|
205
195
|
return new CLikeLoopStatement(counter, limit, statement);
|
|
206
196
|
}
|
|
207
|
-
makeMapForEach(map, key, value,
|
|
208
|
-
return new JavaMapForEachStatement(map, key, value,
|
|
197
|
+
makeMapForEach(map, key, value, body) {
|
|
198
|
+
return new JavaMapForEachStatement(map, key, value, body);
|
|
209
199
|
}
|
|
210
200
|
makeMapSize(map) {
|
|
211
201
|
return this.makeString(`${map}.size()`);
|
|
@@ -6,6 +6,11 @@ import { ArgConvertor } from "../ArgConvertors";
|
|
|
6
6
|
import { IdlNameConvertor } from "../nameConvertor";
|
|
7
7
|
import { RuntimeType } from "../common";
|
|
8
8
|
import { ReferenceResolver } from "../../peer-generation/ReferenceResolver";
|
|
9
|
+
export declare class KotlinLambdaReturnStatement implements LanguageStatement {
|
|
10
|
+
expression?: LanguageExpression | undefined;
|
|
11
|
+
constructor(expression?: LanguageExpression | undefined);
|
|
12
|
+
write(writer: LanguageWriter): void;
|
|
13
|
+
}
|
|
9
14
|
export declare class KotlinEnumEntityStatement implements LanguageStatement {
|
|
10
15
|
private readonly enumEntity;
|
|
11
16
|
private readonly options;
|
|
@@ -49,11 +54,6 @@ export declare class KotlinNewObjectExpression implements LanguageExpression {
|
|
|
49
54
|
constructor(objectName: string, params: LanguageExpression[]);
|
|
50
55
|
asString(): string;
|
|
51
56
|
}
|
|
52
|
-
export declare class KotlinCheckDefinedExpression implements LanguageExpression {
|
|
53
|
-
private value;
|
|
54
|
-
constructor(value: string);
|
|
55
|
-
asString(): string;
|
|
56
|
-
}
|
|
57
57
|
export declare class KotlinLanguageWriter extends LanguageWriter {
|
|
58
58
|
protected typeConvertor: IdlNameConvertor;
|
|
59
59
|
constructor(printer: IndentedPrinter, resolver: ReferenceResolver, typeConvertor: IdlNameConvertor, language?: Language);
|
|
@@ -78,6 +78,8 @@ export declare class KotlinLanguageWriter extends LanguageWriter {
|
|
|
78
78
|
private writeDeclaration;
|
|
79
79
|
writeFieldDeclaration(name: string, type: idl.IDLType, modifiers: FieldModifier[] | undefined, optional: boolean, initExpr?: LanguageExpression): void;
|
|
80
80
|
writeNativeMethodDeclaration(method: Method): void;
|
|
81
|
+
private convertInteropArgument;
|
|
82
|
+
private convertInteropReturnValue;
|
|
81
83
|
writeMethodDeclaration(name: string, signature: MethodSignature, modifiers?: MethodModifier[]): void;
|
|
82
84
|
writeConstructorImplementation(className: string, signature: MethodSignature, op: (writer: this) => void, delegationCall?: DelegationCall, modifiers?: MethodModifier[]): void;
|
|
83
85
|
writeMethodImplementation(method: Method, op: (writer: this) => void): void;
|
|
@@ -87,7 +89,7 @@ export declare class KotlinLanguageWriter extends LanguageWriter {
|
|
|
87
89
|
}, setter?: {
|
|
88
90
|
method: Method;
|
|
89
91
|
op: () => void;
|
|
90
|
-
}): void;
|
|
92
|
+
}, initExpr?: LanguageExpression): void;
|
|
91
93
|
writeGetterImplementation(method: Method, op?: (writer: this) => void): void;
|
|
92
94
|
writeSetterImplementation(method: Method, op: (writer: this) => void): void;
|
|
93
95
|
writeTypeDeclaration(decl: idl.IDLTypedef): void;
|
|
@@ -97,10 +99,10 @@ export declare class KotlinLanguageWriter extends LanguageWriter {
|
|
|
97
99
|
makeLambda(signature: MethodSignature, body?: LanguageStatement[]): LanguageExpression;
|
|
98
100
|
makeThrowError(message: string): LanguageStatement;
|
|
99
101
|
makeReturn(expr: LanguageExpression): LanguageStatement;
|
|
100
|
-
|
|
102
|
+
makeLambdaReturn(expr: LanguageExpression): LanguageStatement;
|
|
101
103
|
makeStatement(expr: LanguageExpression): LanguageStatement;
|
|
102
104
|
makeLoop(counter: string, limit: string, statement?: LanguageStatement): LanguageStatement;
|
|
103
|
-
makeMapForEach(map: string, key: string, value: string,
|
|
105
|
+
makeMapForEach(map: string, key: string, value: string, body: LanguageStatement[]): LanguageStatement;
|
|
104
106
|
writePrintLog(message: string): void;
|
|
105
107
|
makeCast(value: LanguageExpression, node: idl.IDLNode, options?: MakeCastOptions): LanguageExpression;
|
|
106
108
|
typeInstanceOf(type: idl.IDLEntry, value: string, members?: string[]): LanguageExpression;
|
|
@@ -108,8 +110,10 @@ export declare class KotlinLanguageWriter extends LanguageWriter {
|
|
|
108
110
|
makeUndefined(): LanguageExpression;
|
|
109
111
|
makeRuntimeType(rt: RuntimeType): LanguageExpression;
|
|
110
112
|
makeTupleAlloc(option: string): LanguageStatement;
|
|
113
|
+
makeTupleAccess(value: string, index: number): LanguageExpression;
|
|
111
114
|
makeArrayInit(type: idl.IDLContainerType, size?: number): LanguageExpression;
|
|
112
115
|
makeArrayLength(array: string, length?: string): LanguageExpression;
|
|
116
|
+
makeArrayResize(array: string, arrayType: string, length: string, deserializer: string): LanguageStatement;
|
|
113
117
|
makeClassInit(type: idl.IDLType, paramenters: LanguageExpression[]): LanguageExpression;
|
|
114
118
|
makeMapInit(type: idl.IDLType): LanguageExpression;
|
|
115
119
|
makeMapInsert(keyAccessor: string, key: string, valueAccessor: string, value: string): LanguageStatement;
|
|
@@ -136,7 +140,6 @@ export declare class KotlinLanguageWriter extends LanguageWriter {
|
|
|
136
140
|
makeCallIsObject(value: string): LanguageExpression;
|
|
137
141
|
makeNewObject(objectName: string, params?: LanguageExpression[]): LanguageExpression;
|
|
138
142
|
escapeKeyword(keyword: string): string;
|
|
139
|
-
makeDiscriminatorConvertor(convertor: ArgConvertor, value: string, index: number): LanguageExpression | undefined;
|
|
140
143
|
makeStaticBlock(op: (writer: LanguageWriter) => void): void;
|
|
141
144
|
pushNamespace(namespace: string, options: {
|
|
142
145
|
ident: boolean;
|
|
@@ -15,11 +15,19 @@
|
|
|
15
15
|
import * as idl from '../../idl';
|
|
16
16
|
import { Language } from '../../Language';
|
|
17
17
|
import { IndentedPrinter } from "../../IndentedPrinter";
|
|
18
|
-
import { AssignStatement, DelegationType, ExpressionStatement, FieldModifier, LambdaExpression, LanguageWriter, Method, MethodModifier, MethodSignature } from "../LanguageWriter";
|
|
18
|
+
import { AssignStatement, BlockStatement, DelegationType, ExpressionStatement, FieldModifier, LambdaExpression, LanguageWriter, Method, MethodModifier, MethodSignature, ReturnStatement } from "../LanguageWriter";
|
|
19
19
|
import { RuntimeType } from "../common";
|
|
20
20
|
import { isDefined } from "../../util";
|
|
21
|
-
import { TSReturnStatement } from './TsLanguageWriter';
|
|
22
21
|
import { removePoints } from '../convertors/CJConvertors';
|
|
22
|
+
export class KotlinLambdaReturnStatement {
|
|
23
|
+
constructor(expression) {
|
|
24
|
+
this.expression = expression;
|
|
25
|
+
}
|
|
26
|
+
write(writer) {
|
|
27
|
+
if (this.expression)
|
|
28
|
+
writer.print(`${this.expression.asString()}`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
23
31
|
export class KotlinEnumEntityStatement {
|
|
24
32
|
constructor(enumEntity, options) {
|
|
25
33
|
this.enumEntity = enumEntity;
|
|
@@ -100,16 +108,16 @@ export class KotlinEnumWithGetter {
|
|
|
100
108
|
}
|
|
101
109
|
}
|
|
102
110
|
class KotlinMapForEachStatement {
|
|
103
|
-
constructor(map, key, value,
|
|
111
|
+
constructor(map, key, value, body) {
|
|
104
112
|
this.map = map;
|
|
105
113
|
this.key = key;
|
|
106
114
|
this.value = value;
|
|
107
|
-
this.
|
|
115
|
+
this.body = body;
|
|
108
116
|
}
|
|
109
117
|
write(writer) {
|
|
110
118
|
writer.print(`for ((${this.key}, ${this.value}) in ${this.map}) {`);
|
|
111
119
|
writer.pushIndent();
|
|
112
|
-
this.
|
|
120
|
+
writer.writeStatement(new BlockStatement(this.body, false));
|
|
113
121
|
writer.popIndent();
|
|
114
122
|
writer.print(`}`);
|
|
115
123
|
}
|
|
@@ -122,6 +130,17 @@ export class KotlinThrowErrorStatement {
|
|
|
122
130
|
writer.print(`throw Error("${this.message}")`);
|
|
123
131
|
}
|
|
124
132
|
}
|
|
133
|
+
class KotlinArrayResizeStatement {
|
|
134
|
+
constructor(array, arrayType, length, deserializer) {
|
|
135
|
+
this.array = array;
|
|
136
|
+
this.arrayType = arrayType;
|
|
137
|
+
this.length = length;
|
|
138
|
+
this.deserializer = deserializer;
|
|
139
|
+
}
|
|
140
|
+
write(writer) {
|
|
141
|
+
writer.print(`${this.array} = ${this.arrayType}(${this.length})`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
125
144
|
export class KotlinLoopStatement {
|
|
126
145
|
constructor(counter, limit, statement) {
|
|
127
146
|
this.counter = counter;
|
|
@@ -171,14 +190,6 @@ export class KotlinNewObjectExpression {
|
|
|
171
190
|
return `${this.objectName}(${this.params.map(it => it.asString()).join(", ")})`;
|
|
172
191
|
}
|
|
173
192
|
}
|
|
174
|
-
export class KotlinCheckDefinedExpression {
|
|
175
|
-
constructor(value) {
|
|
176
|
-
this.value = value;
|
|
177
|
-
}
|
|
178
|
-
asString() {
|
|
179
|
-
return `${this.value} != null`;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
193
|
class KotlinUnwrapOptionalExpression {
|
|
183
194
|
constructor(value) {
|
|
184
195
|
this.value = value;
|
|
@@ -210,6 +221,13 @@ export class KotlinLanguageWriter extends LanguageWriter {
|
|
|
210
221
|
return new KotlinLanguageWriter(new IndentedPrinter(), (_a = options === null || options === void 0 ? void 0 : options.resolver) !== null && _a !== void 0 ? _a : this.resolver, this.typeConvertor, this.language);
|
|
211
222
|
}
|
|
212
223
|
getNodeName(type) {
|
|
224
|
+
// another stub. Bad one.
|
|
225
|
+
// I hope that I will rewrite LWs soon
|
|
226
|
+
if (idl.isType(type) && idl.isReferenceType(type)) {
|
|
227
|
+
if (type.name.startsWith('%TEXT%:')) {
|
|
228
|
+
return type.name.substring(7);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
213
231
|
return this.typeConvertor.convert(type);
|
|
214
232
|
}
|
|
215
233
|
writeClass(name, op, superClass, interfaces, generics, isDeclared, isAbstract) {
|
|
@@ -226,7 +244,8 @@ export class KotlinLanguageWriter extends LanguageWriter {
|
|
|
226
244
|
this.printer.print(`}`);
|
|
227
245
|
}
|
|
228
246
|
writeInterface(name, op, superInterfaces, generics, isDeclared) {
|
|
229
|
-
|
|
247
|
+
const inheritance = superInterfaces ? (superInterfaces.length > 0 ? `: ${superInterfaces.join(', ')}` : '') : '';
|
|
248
|
+
this.printer.print(`public interface ${name}${inheritance} {`);
|
|
230
249
|
this.pushIndent();
|
|
231
250
|
op(this);
|
|
232
251
|
this.popIndent();
|
|
@@ -273,7 +292,73 @@ export class KotlinLanguageWriter extends LanguageWriter {
|
|
|
273
292
|
writeNativeMethodDeclaration(method) {
|
|
274
293
|
let name = method.name;
|
|
275
294
|
let signature = method.signature;
|
|
276
|
-
this.writeMethodImplementation(new Method(name, signature, [MethodModifier.STATIC]), writer => {
|
|
295
|
+
this.writeMethodImplementation(new Method(name, signature, [MethodModifier.STATIC]), writer => {
|
|
296
|
+
const args = signature.args.map((type, index) => this.convertInteropArgument(signature.argName(index), type));
|
|
297
|
+
const interopCallExpression = this.makeFunctionCall(`kotlin${name}`, args);
|
|
298
|
+
if (signature.returnType === idl.IDLVoidType) {
|
|
299
|
+
this.writeExpressionStatement(interopCallExpression);
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
const retval = "retval";
|
|
303
|
+
this.writeStatement(this.makeAssign(retval, undefined, interopCallExpression));
|
|
304
|
+
this.writeStatement(this.makeReturn(this.convertInteropReturnValue(retval, signature.returnType)));
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
convertInteropArgument(varName, type) {
|
|
308
|
+
const realInteropType = this.getNodeName(type);
|
|
309
|
+
let expr;
|
|
310
|
+
switch (realInteropType) {
|
|
311
|
+
case "KPointer":
|
|
312
|
+
case "KSerializerBuffer":
|
|
313
|
+
expr = `${varName}.toCPointer<CPointed>()!!`;
|
|
314
|
+
break;
|
|
315
|
+
case "KInt":
|
|
316
|
+
case "KLong":
|
|
317
|
+
case "KFloat":
|
|
318
|
+
case "KDouble":
|
|
319
|
+
case "KStringPtr":
|
|
320
|
+
case "KBoolean":
|
|
321
|
+
case "Float64":
|
|
322
|
+
case "Float":
|
|
323
|
+
case "Double":
|
|
324
|
+
case "UInt":
|
|
325
|
+
case "Int":
|
|
326
|
+
expr = varName;
|
|
327
|
+
break;
|
|
328
|
+
default: throw new Error(`Unexpected type ${realInteropType} in interop with Kotlin`);
|
|
329
|
+
}
|
|
330
|
+
return this.makeString(expr);
|
|
331
|
+
}
|
|
332
|
+
convertInteropReturnValue(varName, type) {
|
|
333
|
+
const realInteropType = this.getNodeName(type);
|
|
334
|
+
let expr;
|
|
335
|
+
switch (realInteropType) {
|
|
336
|
+
case "KPointer":
|
|
337
|
+
expr = `${varName}.toLong()`;
|
|
338
|
+
break;
|
|
339
|
+
case "KInt":
|
|
340
|
+
case "KLong":
|
|
341
|
+
case "Float64":
|
|
342
|
+
case "Float":
|
|
343
|
+
case "Double":
|
|
344
|
+
case "Long":
|
|
345
|
+
case "Int":
|
|
346
|
+
expr = varName;
|
|
347
|
+
break;
|
|
348
|
+
case "String":
|
|
349
|
+
case "KStringPtr":
|
|
350
|
+
expr = `${varName}?.toKString() ?: ""`;
|
|
351
|
+
break;
|
|
352
|
+
case "Boolean":
|
|
353
|
+
case "KBoolean":
|
|
354
|
+
expr = `${varName} != 0.toByte()`;
|
|
355
|
+
break;
|
|
356
|
+
case "KInteropReturnBuffer":
|
|
357
|
+
expr = `${varName}.useContents { KInteropReturnBuffer(length, data.toLong()) }`;
|
|
358
|
+
break;
|
|
359
|
+
default: throw new Error(`Unexpected type ${realInteropType} in interop with Kotlin`);
|
|
360
|
+
}
|
|
361
|
+
return this.makeString(expr);
|
|
277
362
|
}
|
|
278
363
|
writeMethodDeclaration(name, signature, modifiers) {
|
|
279
364
|
this.writeDeclaration(name, signature, true, false, modifiers);
|
|
@@ -301,7 +386,7 @@ export class KotlinLanguageWriter extends LanguageWriter {
|
|
|
301
386
|
this.popIndent();
|
|
302
387
|
this.printer.print(`}`);
|
|
303
388
|
}
|
|
304
|
-
writeProperty(propName, propType, modifiers, getter, setter) {
|
|
389
|
+
writeProperty(propName, propType, modifiers, getter, setter, initExpr) {
|
|
305
390
|
let containerName = propName.concat("_container");
|
|
306
391
|
let truePropName = this.escapeKeyword(propName);
|
|
307
392
|
if (getter) {
|
|
@@ -309,9 +394,10 @@ export class KotlinLanguageWriter extends LanguageWriter {
|
|
|
309
394
|
this.print(`private var ${containerName}: ${this.getNodeName(propType)}`);
|
|
310
395
|
}
|
|
311
396
|
}
|
|
312
|
-
let isStatic = modifiers.includes(FieldModifier.STATIC);
|
|
313
397
|
let isMutable = !modifiers.includes(FieldModifier.READONLY);
|
|
314
|
-
|
|
398
|
+
let isOverride = modifiers.includes(FieldModifier.OVERRIDE);
|
|
399
|
+
let initializer = initExpr ? ` = ${initExpr.asString()}` : "";
|
|
400
|
+
this.print(`${isOverride ? 'override ' : ''}public ${isMutable ? "var " : "val "}${truePropName}: ${this.getNodeName(propType)}${initializer}`);
|
|
315
401
|
if (getter) {
|
|
316
402
|
this.pushIndent();
|
|
317
403
|
this.writeGetterImplementation(getter.method, getter.op);
|
|
@@ -363,10 +449,10 @@ export class KotlinLanguageWriter extends LanguageWriter {
|
|
|
363
449
|
return new KotlinThrowErrorStatement(message);
|
|
364
450
|
}
|
|
365
451
|
makeReturn(expr) {
|
|
366
|
-
return new
|
|
452
|
+
return new ReturnStatement(expr);
|
|
367
453
|
}
|
|
368
|
-
|
|
369
|
-
|
|
454
|
+
makeLambdaReturn(expr) {
|
|
455
|
+
return new KotlinLambdaReturnStatement(expr);
|
|
370
456
|
}
|
|
371
457
|
makeStatement(expr) {
|
|
372
458
|
return new ExpressionStatement(expr);
|
|
@@ -374,11 +460,11 @@ export class KotlinLanguageWriter extends LanguageWriter {
|
|
|
374
460
|
makeLoop(counter, limit, statement) {
|
|
375
461
|
return new KotlinLoopStatement(counter, limit, statement);
|
|
376
462
|
}
|
|
377
|
-
makeMapForEach(map, key, value,
|
|
378
|
-
return new KotlinMapForEachStatement(map, key, value,
|
|
463
|
+
makeMapForEach(map, key, value, body) {
|
|
464
|
+
return new KotlinMapForEachStatement(map, key, value, body);
|
|
379
465
|
}
|
|
380
466
|
writePrintLog(message) {
|
|
381
|
-
|
|
467
|
+
this.print(`println(\"${message}\")`);
|
|
382
468
|
}
|
|
383
469
|
makeCast(value, node, options) {
|
|
384
470
|
return this.makeString(`${value.asString()} as ${this.getNodeName(node)}`);
|
|
@@ -398,12 +484,18 @@ export class KotlinLanguageWriter extends LanguageWriter {
|
|
|
398
484
|
makeTupleAlloc(option) {
|
|
399
485
|
throw new Error("Not implemented");
|
|
400
486
|
}
|
|
487
|
+
makeTupleAccess(value, index) {
|
|
488
|
+
return this.makeString(`${value}.component${index + 1}()`);
|
|
489
|
+
}
|
|
401
490
|
makeArrayInit(type, size) {
|
|
402
|
-
return this.makeString(`
|
|
491
|
+
return this.makeString(`ArrayList<${this.getNodeName(type.elementType[0])}>(${size !== null && size !== void 0 ? size : ''})`);
|
|
403
492
|
}
|
|
404
493
|
makeArrayLength(array, length) {
|
|
405
494
|
return this.makeString(`${array}.size`);
|
|
406
495
|
}
|
|
496
|
+
makeArrayResize(array, arrayType, length, deserializer) {
|
|
497
|
+
return new KotlinArrayResizeStatement(array, arrayType, length, deserializer);
|
|
498
|
+
}
|
|
407
499
|
makeClassInit(type, paramenters) {
|
|
408
500
|
throw new Error("Not implemented");
|
|
409
501
|
}
|
|
@@ -411,13 +503,13 @@ export class KotlinLanguageWriter extends LanguageWriter {
|
|
|
411
503
|
return this.makeString(`${this.getNodeName(type)}()`);
|
|
412
504
|
}
|
|
413
505
|
makeMapInsert(keyAccessor, key, valueAccessor, value) {
|
|
414
|
-
return this.makeStatement(this.makeMethodCall(keyAccessor, "
|
|
506
|
+
return this.makeStatement(this.makeMethodCall(keyAccessor, "put", [this.makeString(key), this.makeString(value)]));
|
|
415
507
|
}
|
|
416
508
|
makeUnwrapOptional(expression) {
|
|
417
509
|
return new KotlinUnwrapOptionalExpression(expression);
|
|
418
510
|
}
|
|
419
511
|
makeDefinedCheck(value) {
|
|
420
|
-
return
|
|
512
|
+
return this.makeString(`${value} != null`);
|
|
421
513
|
}
|
|
422
514
|
makeUnionSelector(value, valueType) {
|
|
423
515
|
return this.makeAssign(valueType, undefined, this.makeMethodCall(value, "getSelector", []), false);
|
|
@@ -453,13 +545,13 @@ export class KotlinLanguageWriter extends LanguageWriter {
|
|
|
453
545
|
return [MethodModifier.PUBLIC, MethodModifier.PRIVATE, MethodModifier.OVERRIDE];
|
|
454
546
|
}
|
|
455
547
|
get supportedFieldModifiers() {
|
|
456
|
-
return [FieldModifier.PUBLIC, FieldModifier.PRIVATE, FieldModifier.PROTECTED, FieldModifier.READONLY];
|
|
548
|
+
return [FieldModifier.PUBLIC, FieldModifier.PRIVATE, FieldModifier.PROTECTED, FieldModifier.READONLY, FieldModifier.OVERRIDE];
|
|
457
549
|
}
|
|
458
550
|
enumFromI32(value, enumEntry) {
|
|
459
551
|
return this.makeString(`${this.getNodeName(enumEntry)}(${value.asString()})`);
|
|
460
552
|
}
|
|
461
553
|
i32FromEnum(value, enumEntry) {
|
|
462
|
-
return this.makeString(`${value.asString()}.value
|
|
554
|
+
return this.makeString(`${value.asString()}.value!!`);
|
|
463
555
|
}
|
|
464
556
|
makeEnumEntity(enumEntity, options) {
|
|
465
557
|
return new KotlinEnumWithGetter(enumEntity, options.isExport);
|
|
@@ -479,9 +571,6 @@ export class KotlinLanguageWriter extends LanguageWriter {
|
|
|
479
571
|
escapeKeyword(keyword) {
|
|
480
572
|
return keyword;
|
|
481
573
|
}
|
|
482
|
-
makeDiscriminatorConvertor(convertor, value, index) {
|
|
483
|
-
throw new Error("Not implemented");
|
|
484
|
-
}
|
|
485
574
|
makeStaticBlock(op) {
|
|
486
575
|
this.printer.print('companion object {');
|
|
487
576
|
this.printer.pushIndent();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as idl from '../../idl';
|
|
2
2
|
import { Language } from '../../Language';
|
|
3
3
|
import { IndentedPrinter } from "../../IndentedPrinter";
|
|
4
|
-
import { DelegationCall, FieldModifier, LambdaExpression, LanguageExpression, LanguageStatement, LanguageWriter, MakeAssignOptions, MakeCastOptions, Method, MethodModifier, MethodSignature,
|
|
4
|
+
import { DelegationCall, FieldModifier, LambdaExpression, LanguageExpression, LanguageStatement, LanguageWriter, MakeAssignOptions, MakeCastOptions, Method, MethodModifier, MethodSignature, ObjectArgs, ReturnStatement } from "../LanguageWriter";
|
|
5
5
|
import { ArgConvertor } from "../ArgConvertors";
|
|
6
6
|
import { IdlNameConvertor } from "../nameConvertor";
|
|
7
7
|
import { RuntimeType } from "../common";
|
|
@@ -65,7 +65,7 @@ export declare class TSLanguageWriter extends LanguageWriter {
|
|
|
65
65
|
}, setter?: {
|
|
66
66
|
method: Method;
|
|
67
67
|
op: () => void;
|
|
68
|
-
}): void;
|
|
68
|
+
}, initExpr?: LanguageExpression): void;
|
|
69
69
|
writeTypeDeclaration(decl: idl.IDLTypedef): void;
|
|
70
70
|
writeConstant(constName: string, constType: idl.IDLType, constVal?: string): void;
|
|
71
71
|
private writeDeclaration;
|
|
@@ -74,16 +74,16 @@ export declare class TSLanguageWriter extends LanguageWriter {
|
|
|
74
74
|
makeLambda(signature: MethodSignature, body?: LanguageStatement[]): LanguageExpression;
|
|
75
75
|
makeThrowError(message: string): LanguageStatement;
|
|
76
76
|
makeReturn(expr: LanguageExpression): LanguageStatement;
|
|
77
|
-
makeCheckOptional(optional: LanguageExpression, doStatement: LanguageStatement): LanguageStatement;
|
|
78
77
|
makeStatement(expr: LanguageExpression): LanguageStatement;
|
|
79
78
|
makeLoop(counter: string, limit: string, statement?: LanguageStatement): LanguageStatement;
|
|
80
|
-
makeMapForEach(map: string, key: string, value: string,
|
|
79
|
+
makeMapForEach(map: string, key: string, value: string, body: LanguageStatement[]): LanguageStatement;
|
|
81
80
|
writePrintLog(message: string): void;
|
|
82
81
|
makeCast(value: LanguageExpression, node: idl.IDLNode, options?: MakeCastOptions): LanguageExpression;
|
|
83
82
|
typeInstanceOf(type: idl.IDLEntry, value: string, members?: string[]): LanguageExpression;
|
|
84
83
|
getObjectAccessor(convertor: ArgConvertor, value: string, args?: ObjectArgs): string;
|
|
85
84
|
makeUndefined(): LanguageExpression;
|
|
86
85
|
makeRuntimeType(rt: RuntimeType): LanguageExpression;
|
|
86
|
+
makeDefinedCheck(value: string): LanguageExpression;
|
|
87
87
|
makeTupleAlloc(option: string): LanguageStatement;
|
|
88
88
|
makeArrayInit(type: idl.IDLContainerType, size?: number): LanguageExpression;
|
|
89
89
|
makeClassInit(type: idl.IDLType, paramenters: LanguageExpression[]): LanguageExpression;
|
|
@@ -100,7 +100,6 @@ export declare class TSLanguageWriter extends LanguageWriter {
|
|
|
100
100
|
castToBoolean(value: string): string;
|
|
101
101
|
makeCallIsObject(value: string): LanguageExpression;
|
|
102
102
|
escapeKeyword(keyword: string): string;
|
|
103
|
-
|
|
104
|
-
makeSerializerConstructorSignatures(): NamedMethodSignature[] | undefined;
|
|
103
|
+
discriminate(value: string, index: number, type: idl.IDLType, runtimeTypes: RuntimeType[]): string;
|
|
105
104
|
}
|
|
106
105
|
//# sourceMappingURL=TsLanguageWriter.d.ts.map
|
|
@@ -16,9 +16,9 @@ import * as idl from '../../idl';
|
|
|
16
16
|
import { isOptionalType } from '../../idl';
|
|
17
17
|
import { Language } from '../../Language';
|
|
18
18
|
import { IndentedPrinter } from "../../IndentedPrinter";
|
|
19
|
-
import { AssignStatement, BlockStatement,
|
|
19
|
+
import { AssignStatement, BlockStatement, DelegationType, ExpressionStatement, FieldModifier, IfStatement, LambdaExpression, LanguageWriter, Method, MethodModifier, MethodSignature, NamedMethodSignature, NaryOpExpression, ReturnStatement, StringExpression } from "../LanguageWriter";
|
|
20
20
|
import { RuntimeType } from "../common";
|
|
21
|
-
import { rightmostIndexOf
|
|
21
|
+
import { rightmostIndexOf } from "../../util";
|
|
22
22
|
import { TSKeywords } from '../../languageSpecificKeywords';
|
|
23
23
|
////////////////////////////////////////////////////////////////
|
|
24
24
|
// EXPRESSIONS //
|
|
@@ -36,7 +36,7 @@ export class TSLambdaExpression extends LambdaExpression {
|
|
|
36
36
|
const maybeOptional = idl.isOptionalType(it) ? "?" : "";
|
|
37
37
|
return `${this.signature.argName(i)}${maybeOptional}: ${this.convertor.convert(it)}`;
|
|
38
38
|
});
|
|
39
|
-
return `(${params.join(", ")}): ${this.convertor.convert(this.signature.returnType)}
|
|
39
|
+
return `(${params.join(", ")}): ${this.convertor.convert(this.signature.returnType)} =>${this.bodyAsString(true)}`;
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
export class TSCastExpression {
|
|
@@ -93,16 +93,16 @@ class TSLoopStatement {
|
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
95
|
class TSMapForEachStatement {
|
|
96
|
-
constructor(map, key, value,
|
|
96
|
+
constructor(map, key, value, body) {
|
|
97
97
|
this.map = map;
|
|
98
98
|
this.key = key;
|
|
99
99
|
this.value = value;
|
|
100
|
-
this.
|
|
100
|
+
this.body = body;
|
|
101
101
|
}
|
|
102
102
|
write(writer) {
|
|
103
103
|
writer.print(`for (const [${this.key}, ${this.value}] of ${this.map}) {`);
|
|
104
104
|
writer.pushIndent();
|
|
105
|
-
this.
|
|
105
|
+
writer.writeStatement(new BlockStatement(this.body, false));
|
|
106
106
|
writer.popIndent();
|
|
107
107
|
writer.print(`}`);
|
|
108
108
|
}
|
|
@@ -133,7 +133,7 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
133
133
|
}
|
|
134
134
|
fork(options) {
|
|
135
135
|
var _a;
|
|
136
|
-
return new TSLanguageWriter(new IndentedPrinter(), (_a = options === null || options === void 0 ? void 0 : options.resolver) !== null && _a !== void 0 ? _a : this.resolver, this.typeConvertor, this.language);
|
|
136
|
+
return new TSLanguageWriter(new IndentedPrinter([], this.indentDepth()), (_a = options === null || options === void 0 ? void 0 : options.resolver) !== null && _a !== void 0 ? _a : this.resolver, this.typeConvertor, this.language);
|
|
137
137
|
}
|
|
138
138
|
getNodeName(type) {
|
|
139
139
|
// another stub. Bad one.
|
|
@@ -243,7 +243,7 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
243
243
|
this.popIndent();
|
|
244
244
|
this.printer.print(`}`);
|
|
245
245
|
}
|
|
246
|
-
writeProperty(propName, propType, modifiers, getter, setter) {
|
|
246
|
+
writeProperty(propName, propType, modifiers, getter, setter, initExpr) {
|
|
247
247
|
let isStatic = modifiers.includes(FieldModifier.STATIC);
|
|
248
248
|
let isMutable = !modifiers.includes(FieldModifier.READONLY);
|
|
249
249
|
let containerName = propName.concat("_container");
|
|
@@ -264,7 +264,7 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
264
264
|
}
|
|
265
265
|
}
|
|
266
266
|
else {
|
|
267
|
-
this.writeFieldDeclaration(propName, propType, modifiers, idl.isOptionalType(propType));
|
|
267
|
+
this.writeFieldDeclaration(propName, propType, modifiers, idl.isOptionalType(propType), initExpr);
|
|
268
268
|
}
|
|
269
269
|
}
|
|
270
270
|
writeTypeDeclaration(decl) {
|
|
@@ -310,17 +310,14 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
310
310
|
makeReturn(expr) {
|
|
311
311
|
return new TSReturnStatement(expr);
|
|
312
312
|
}
|
|
313
|
-
makeCheckOptional(optional, doStatement) {
|
|
314
|
-
return new CheckOptionalStatement("undefined", optional, doStatement);
|
|
315
|
-
}
|
|
316
313
|
makeStatement(expr) {
|
|
317
314
|
return new ExpressionStatement(expr);
|
|
318
315
|
}
|
|
319
316
|
makeLoop(counter, limit, statement) {
|
|
320
317
|
return new TSLoopStatement(counter, limit, statement);
|
|
321
318
|
}
|
|
322
|
-
makeMapForEach(map, key, value,
|
|
323
|
-
return new TSMapForEachStatement(map, key, value,
|
|
319
|
+
makeMapForEach(map, key, value, body) {
|
|
320
|
+
return new TSMapForEachStatement(map, key, value, body);
|
|
324
321
|
}
|
|
325
322
|
writePrintLog(message) {
|
|
326
323
|
this.print(`console.log("${message}")`);
|
|
@@ -355,6 +352,9 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
355
352
|
makeRuntimeType(rt) {
|
|
356
353
|
return this.makeString(`RuntimeType.${RuntimeType[rt]}`);
|
|
357
354
|
}
|
|
355
|
+
makeDefinedCheck(value) {
|
|
356
|
+
return this.makeString(`${value} !== undefined`);
|
|
357
|
+
}
|
|
358
358
|
makeTupleAlloc(option) {
|
|
359
359
|
return new TsTupleAllocStatement(option);
|
|
360
360
|
}
|
|
@@ -411,25 +411,9 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
411
411
|
escapeKeyword(keyword) {
|
|
412
412
|
return TSKeywords.has(keyword) ? keyword + "_" : keyword;
|
|
413
413
|
}
|
|
414
|
-
|
|
415
|
-
const
|
|
416
|
-
|
|
417
|
-
? convertorNativeType
|
|
418
|
-
: idl.createReferenceType(this.getNodeName(convertorNativeType)));
|
|
419
|
-
if (decl === undefined || !idl.isEnum(decl)) {
|
|
420
|
-
throwException(`The type reference ${decl === null || decl === void 0 ? void 0 : decl.name} must be Enum`);
|
|
421
|
-
}
|
|
422
|
-
const ordinal = idl.isStringEnum(decl)
|
|
423
|
-
? this.i32FromEnum(this.makeCast(this.makeString(this.getObjectAccessor(convertor, value)), convertor.idlType), decl)
|
|
424
|
-
: this.makeUnionVariantCast(this.getObjectAccessor(convertor, value), this.getNodeName(idl.IDLI32Type), convertor, index);
|
|
425
|
-
const { low, high } = idl.extremumOfOrdinals(decl);
|
|
426
|
-
return this.discriminatorFromExpressions(value, convertor.runtimeTypes[0], [
|
|
427
|
-
this.makeNaryOp(">=", [ordinal, this.makeString(low.toString())]),
|
|
428
|
-
this.makeNaryOp("<=", [ordinal, this.makeString(high.toString())])
|
|
429
|
-
]);
|
|
430
|
-
}
|
|
431
|
-
makeSerializerConstructorSignatures() {
|
|
432
|
-
return [new NamedMethodSignature(idl.IDLVoidType, [], [])];
|
|
414
|
+
discriminate(value, index, type, runtimeTypes) {
|
|
415
|
+
const runtimeTypeList = runtimeTypes.map(ty => "RuntimeType." + RuntimeType[ty]).join(", ");
|
|
416
|
+
return `[${runtimeTypeList}].includes(runtimeType(${value}))`;
|
|
433
417
|
}
|
|
434
418
|
}
|
|
435
419
|
//# sourceMappingURL=TsLanguageWriter.js.map
|