@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
|
@@ -59,11 +59,6 @@ export declare class FieldAccessExpression {
|
|
|
59
59
|
constructor(receiver: string, field: string, nullable?: boolean);
|
|
60
60
|
asString(): string;
|
|
61
61
|
}
|
|
62
|
-
export declare class CheckDefinedExpression implements LanguageExpression {
|
|
63
|
-
private value;
|
|
64
|
-
constructor(value: string);
|
|
65
|
-
asString(): string;
|
|
66
|
-
}
|
|
67
62
|
export interface LanguageStatement {
|
|
68
63
|
write(writer: LanguageWriter): void;
|
|
69
64
|
}
|
|
@@ -89,8 +84,9 @@ export declare class ExpressionStatement implements LanguageStatement {
|
|
|
89
84
|
}
|
|
90
85
|
export declare class BlockStatement implements LanguageStatement {
|
|
91
86
|
statements: LanguageStatement[];
|
|
92
|
-
|
|
93
|
-
|
|
87
|
+
readonly inScope: boolean;
|
|
88
|
+
private newLine;
|
|
89
|
+
constructor(statements: LanguageStatement[], inScope?: boolean, newLine?: boolean);
|
|
94
90
|
write(writer: LanguageWriter): void;
|
|
95
91
|
}
|
|
96
92
|
export declare class IfStatement implements LanguageStatement {
|
|
@@ -113,13 +109,6 @@ export declare class MultiBranchIfStatement implements LanguageStatement {
|
|
|
113
109
|
constructor(statements: BranchStatement[], elseStatement: LanguageStatement | undefined);
|
|
114
110
|
write(writer: LanguageWriter): void;
|
|
115
111
|
}
|
|
116
|
-
export declare class CheckOptionalStatement implements LanguageStatement {
|
|
117
|
-
undefinedValue: string;
|
|
118
|
-
optionalExpression: LanguageExpression;
|
|
119
|
-
doStatement: LanguageStatement;
|
|
120
|
-
constructor(undefinedValue: string, optionalExpression: LanguageExpression, doStatement: LanguageStatement);
|
|
121
|
-
write(writer: LanguageWriter): void;
|
|
122
|
-
}
|
|
123
112
|
export declare class TsEnumEntityStatement implements LanguageStatement {
|
|
124
113
|
private readonly enumEntity;
|
|
125
114
|
private readonly options;
|
|
@@ -143,7 +132,7 @@ export declare abstract class LambdaExpression implements LanguageExpression {
|
|
|
143
132
|
constructor(originalWriter: LanguageWriter, signature: MethodSignature, resolver: ReferenceResolver, body?: LanguageStatement[] | undefined);
|
|
144
133
|
protected abstract get statementHasSemicolon(): boolean;
|
|
145
134
|
abstract asString(): string;
|
|
146
|
-
bodyAsString(): string;
|
|
135
|
+
bodyAsString(isScoped?: boolean): string;
|
|
147
136
|
}
|
|
148
137
|
export declare enum ArgumentModifier {
|
|
149
138
|
OPTIONAL = 0
|
|
@@ -156,7 +145,8 @@ export declare enum FieldModifier {
|
|
|
156
145
|
PROTECTED = 4,
|
|
157
146
|
FINAL = 5,
|
|
158
147
|
VOLATILE = 6,
|
|
159
|
-
INTERNAL = 7
|
|
148
|
+
INTERNAL = 7,
|
|
149
|
+
OVERRIDE = 8
|
|
160
150
|
}
|
|
161
151
|
export declare enum MethodModifier {
|
|
162
152
|
PUBLIC = 0,
|
|
@@ -274,14 +264,13 @@ export declare abstract class LanguageWriter {
|
|
|
274
264
|
}, setter?: {
|
|
275
265
|
method: Method;
|
|
276
266
|
op: () => void;
|
|
277
|
-
}): void;
|
|
267
|
+
}, initExpr?: LanguageExpression): void;
|
|
278
268
|
abstract writeTypeDeclaration(decl: idl.IDLTypedef): void;
|
|
279
269
|
abstract writeConstant(constName: string, constType: idl.IDLType, constVal?: string): void;
|
|
280
270
|
abstract makeAssign(variableName: string, type: idl.IDLType | undefined, expr: LanguageExpression | undefined, isDeclared: boolean, isConst?: boolean, options?: MakeAssignOptions): LanguageStatement;
|
|
281
271
|
abstract makeLambda(signature: MethodSignature, body?: LanguageStatement[]): LanguageExpression;
|
|
282
272
|
abstract makeThrowError(message: string): LanguageStatement;
|
|
283
273
|
abstract makeReturn(expr?: LanguageExpression): LanguageStatement;
|
|
284
|
-
abstract makeCheckOptional(optional: LanguageExpression, doStatement: LanguageStatement): LanguageStatement;
|
|
285
274
|
abstract makeRuntimeType(rt: RuntimeType): LanguageExpression;
|
|
286
275
|
abstract getObjectAccessor(convertor: ArgConvertor, value: string, args?: ObjectArgs): string;
|
|
287
276
|
abstract makeCast(value: LanguageExpression, node: idl.IDLNode, options?: MakeCastOptions): LanguageExpression;
|
|
@@ -295,7 +284,7 @@ export declare abstract class LanguageWriter {
|
|
|
295
284
|
abstract makeMapInsert(keyAccessor: string, key: string, valueAccessor: string, value: string): LanguageStatement;
|
|
296
285
|
abstract makeLoop(counter: string, limit: string): LanguageStatement;
|
|
297
286
|
abstract makeLoop(counter: string, limit: string, statement: LanguageStatement): LanguageStatement;
|
|
298
|
-
abstract makeMapForEach(map: string, key: string, value: string,
|
|
287
|
+
abstract makeMapForEach(map: string, key: string, value: string, body: LanguageStatement[]): LanguageStatement;
|
|
299
288
|
abstract getTagType(): idl.IDLType;
|
|
300
289
|
abstract getRuntimeType(): idl.IDLType;
|
|
301
290
|
abstract makeTupleAssign(receiver: string, tupleFields: string[]): LanguageStatement;
|
|
@@ -324,6 +313,7 @@ export declare abstract class LanguageWriter {
|
|
|
324
313
|
makeThis(): LanguageExpression;
|
|
325
314
|
makeNull(value?: string): LanguageExpression;
|
|
326
315
|
makeVoid(): LanguageExpression;
|
|
316
|
+
makeLambdaReturn(expr?: LanguageExpression): LanguageStatement;
|
|
327
317
|
makeRuntimeTypeCondition(typeVarName: string, equals: boolean, type: RuntimeType, varName?: string): LanguageExpression;
|
|
328
318
|
makeValueFromOption(value: string, destinationConvertor: ArgConvertor): LanguageExpression;
|
|
329
319
|
makeNewObject(objectName: string, params?: LanguageExpression[]): LanguageExpression;
|
|
@@ -335,7 +325,7 @@ export declare abstract class LanguageWriter {
|
|
|
335
325
|
makeNativeCall(nativeModule: NativeModuleType, method: string, params: LanguageExpression[], nullable?: boolean): LanguageExpression;
|
|
336
326
|
makeBlock(statements: LanguageStatement[], inScope?: boolean): BlockStatement;
|
|
337
327
|
nativeReceiver(nativeModule: NativeModuleType): string;
|
|
338
|
-
makeDefinedCheck(value: string): LanguageExpression;
|
|
328
|
+
abstract makeDefinedCheck(value: string, isTag?: boolean): LanguageExpression;
|
|
339
329
|
makeRuntimeTypeDefinedCheck(runtimeType: string): LanguageExpression;
|
|
340
330
|
makeCondition(condition: LanguageExpression, thenStatement: LanguageStatement, elseStatement?: LanguageStatement, insideIfOp?: () => void, insideElseOp?: () => void): LanguageStatement;
|
|
341
331
|
makeMultiBranchCondition(conditions: BranchStatement[], elseStatement?: LanguageStatement): LanguageStatement;
|
|
@@ -344,7 +334,6 @@ export declare abstract class LanguageWriter {
|
|
|
344
334
|
makeArrayAccess(value: string, indexVar: string): LanguageExpression;
|
|
345
335
|
makeTupleAccess(value: string, index: number): LanguageExpression;
|
|
346
336
|
makeUnionSelector(value: string, valueType: string): LanguageStatement;
|
|
347
|
-
makeUnionVariantCondition(_convertor: ArgConvertor, _valueName: string, valueType: string, type: string, _convertorIndex?: number, _runtimeTypeIndex?: number): LanguageExpression;
|
|
348
337
|
makeUnionVariantCast(value: string, type: string, convertor: ArgConvertor, index?: number): LanguageExpression;
|
|
349
338
|
makeUnionTypeDefaultInitializer(): LanguageExpression;
|
|
350
339
|
makeArrayResize(array: string, arrayType: string, length: string, deserializer: string): LanguageStatement;
|
|
@@ -357,15 +346,11 @@ export declare abstract class LanguageWriter {
|
|
|
357
346
|
makeNaryOp(op: string, args: LanguageExpression[]): LanguageExpression;
|
|
358
347
|
makeStatement(expr: LanguageExpression): LanguageStatement;
|
|
359
348
|
writeNativeMethodDeclaration(method: Method): void;
|
|
360
|
-
writeUnsafeNativeMethodDeclaration(name: string, signature: MethodSignature): void;
|
|
361
349
|
pushIndent(): void;
|
|
362
350
|
popIndent(): void;
|
|
363
351
|
print(string: stringOrNone): void;
|
|
364
352
|
getOutput(): string[];
|
|
365
353
|
makeSignature(returnType: idl.IDLType, parameters: idl.IDLParameter[]): MethodSignature;
|
|
366
|
-
makeNamedSignature(returnType: idl.IDLType, parameters: idl.IDLParameter[]): NamedMethodSignature;
|
|
367
|
-
makeNativeMethodNamedSignature(returnType: idl.IDLType, parameters: idl.IDLParameter[]): NamedMethodSignature;
|
|
368
|
-
makeSerializerConstructorSignatures(): NamedMethodSignature[] | undefined;
|
|
369
354
|
mapFieldModifier(modifier: FieldModifier): string;
|
|
370
355
|
mapMethodModifier(modifier: MethodModifier): string;
|
|
371
356
|
/**
|
|
@@ -374,10 +359,6 @@ export declare abstract class LanguageWriter {
|
|
|
374
359
|
makeUnsafeCast(param: string): string;
|
|
375
360
|
makeUnsafeCast_(value: LanguageExpression, type: idl.IDLType, typeOptions?: PrintHint): string;
|
|
376
361
|
runtimeType(param: ArgConvertor, valueType: string, value: string): void;
|
|
377
|
-
makeDiscriminatorFromFields(convertor: {
|
|
378
|
-
targetType: (writer: LanguageWriter) => string;
|
|
379
|
-
}, value: string, accessors: string[], duplicates: Set<string>): LanguageExpression;
|
|
380
|
-
makeIsTypeCall(value: string, decl: idl.IDLInterface): LanguageExpression;
|
|
381
362
|
makeEnumEntity(enumEntity: idl.IDLEnum, options: {
|
|
382
363
|
isExport: boolean;
|
|
383
364
|
isDeclare?: boolean;
|
|
@@ -385,9 +366,8 @@ export declare abstract class LanguageWriter {
|
|
|
385
366
|
makeFieldModifiersList(modifiers: FieldModifier[] | undefined, customFieldFilter?: (field: FieldModifier) => boolean): string;
|
|
386
367
|
escapeKeyword(keyword: string): string;
|
|
387
368
|
makeCastCustomObject(customName: string, _isGenericType: boolean): LanguageExpression;
|
|
388
|
-
makeHasOwnProperty(value: string,
|
|
389
|
-
|
|
390
|
-
makeDiscriminatorConvertor(_convertor: ArgConvertor, _value: string, _index: number): LanguageExpression | undefined;
|
|
369
|
+
makeHasOwnProperty(value: string, property: string, propertyTypeName?: string): LanguageExpression;
|
|
370
|
+
discriminate(value: string, index: number, type: idl.IDLType, runtimeTypes: RuntimeType[]): string;
|
|
391
371
|
makeNot(expr: LanguageExpression): LanguageExpression;
|
|
392
372
|
makeSerializedBufferGetter(serializer: string): LanguageExpression;
|
|
393
373
|
makeEquals(args: LanguageExpression[]): LanguageExpression;
|
|
@@ -395,9 +375,8 @@ export declare abstract class LanguageWriter {
|
|
|
395
375
|
castToBoolean(value: string): string;
|
|
396
376
|
makeCallIsObject(value: string): LanguageExpression;
|
|
397
377
|
makeStaticBlock(op: (writer: LanguageWriter) => void): void;
|
|
398
|
-
instanceOf(
|
|
378
|
+
instanceOf(value: string, type: idl.IDLType): LanguageExpression;
|
|
399
379
|
typeInstanceOf(type: idl.IDLEntry, value: string, members?: string[]): LanguageExpression;
|
|
400
|
-
stringifyTypeOrEmpty(type: idl.IDLType | undefined): string;
|
|
401
380
|
/**
|
|
402
381
|
* Writes `namespace <namespace> {` and adds extra indent
|
|
403
382
|
* @param namespace Namespace to begin
|
|
@@ -13,7 +13,6 @@
|
|
|
13
13
|
* limitations under the License.
|
|
14
14
|
*/
|
|
15
15
|
import * as idl from "../idl";
|
|
16
|
-
import { indentedBy } from "../util";
|
|
17
16
|
import * as fs from "fs";
|
|
18
17
|
import { RuntimeType } from "./common";
|
|
19
18
|
export class TernaryExpression {
|
|
@@ -95,14 +94,6 @@ export class FieldAccessExpression {
|
|
|
95
94
|
return `${this.receiver}${this.nullable ? "?" : ""}.${this.field}`;
|
|
96
95
|
}
|
|
97
96
|
}
|
|
98
|
-
export class CheckDefinedExpression {
|
|
99
|
-
constructor(value) {
|
|
100
|
-
this.value = value;
|
|
101
|
-
}
|
|
102
|
-
asString() {
|
|
103
|
-
return `${this.value} != undefined`;
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
97
|
export class ProxyStatement {
|
|
107
98
|
constructor(cb) {
|
|
108
99
|
this.cb = cb;
|
|
@@ -121,7 +112,7 @@ export class AssignStatement {
|
|
|
121
112
|
this.options = options;
|
|
122
113
|
}
|
|
123
114
|
write(writer) {
|
|
124
|
-
var _a, _b;
|
|
115
|
+
var _a, _b, _c;
|
|
125
116
|
if (this.isDeclared) {
|
|
126
117
|
const typeSpec = ((_a = this.options) === null || _a === void 0 ? void 0 : _a.overrideTypeName)
|
|
127
118
|
? `: ${this.options.overrideTypeName}`
|
|
@@ -133,7 +124,9 @@ export class AssignStatement {
|
|
|
133
124
|
writer.print(`${constSpec} ${this.variableName}${typeSpec} ${initValue}`);
|
|
134
125
|
}
|
|
135
126
|
else {
|
|
136
|
-
|
|
127
|
+
const receiver = (_b = this.options) === null || _b === void 0 ? void 0 : _b.receiver;
|
|
128
|
+
const withReceiver = receiver ? `${receiver}.` : "";
|
|
129
|
+
writer.print(`${withReceiver}${this.variableName} = ${(_c = this.expression) === null || _c === void 0 ? void 0 : _c.asString()}`);
|
|
137
130
|
}
|
|
138
131
|
}
|
|
139
132
|
}
|
|
@@ -149,13 +142,14 @@ export class ExpressionStatement {
|
|
|
149
142
|
}
|
|
150
143
|
}
|
|
151
144
|
export class BlockStatement {
|
|
152
|
-
constructor(statements, inScope = true) {
|
|
145
|
+
constructor(statements, inScope = true, newLine = true) {
|
|
153
146
|
this.statements = statements;
|
|
154
147
|
this.inScope = inScope;
|
|
148
|
+
this.newLine = newLine;
|
|
155
149
|
}
|
|
156
150
|
write(writer) {
|
|
157
151
|
if (this.inScope) {
|
|
158
|
-
writer.print("{");
|
|
152
|
+
this.newLine ? writer.print("{") : writer.printer.appendLastString(" {");
|
|
159
153
|
writer.pushIndent();
|
|
160
154
|
}
|
|
161
155
|
this.statements.forEach(s => s.write(writer));
|
|
@@ -181,7 +175,12 @@ export class IfStatement {
|
|
|
181
175
|
}
|
|
182
176
|
});
|
|
183
177
|
if (this.elseStatement !== undefined) {
|
|
184
|
-
|
|
178
|
+
if ((this.thenStatement instanceof BlockStatement) && this.thenStatement.inScope) {
|
|
179
|
+
writer.printer.appendLastString(" else");
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
writer.print("else");
|
|
183
|
+
}
|
|
185
184
|
this.writeBody(writer, this.elseStatement, () => {
|
|
186
185
|
if (this.insideElseOp) {
|
|
187
186
|
this.insideElseOp();
|
|
@@ -212,7 +211,7 @@ export class MultiBranchIfStatement {
|
|
|
212
211
|
writer.print(`if (${expr.asString()}) {`);
|
|
213
212
|
}
|
|
214
213
|
else {
|
|
215
|
-
writer.
|
|
214
|
+
writer.printer.appendLastString(` else if (${expr.asString()}) {`);
|
|
216
215
|
}
|
|
217
216
|
writer.pushIndent();
|
|
218
217
|
stmt.write(writer);
|
|
@@ -220,7 +219,7 @@ export class MultiBranchIfStatement {
|
|
|
220
219
|
writer.print("}");
|
|
221
220
|
});
|
|
222
221
|
if (this.statements.length > 0 && this.elseStatement !== undefined) {
|
|
223
|
-
writer.
|
|
222
|
+
writer.printer.appendLastString(" else {");
|
|
224
223
|
writer.pushIndent();
|
|
225
224
|
this.elseStatement.write(writer);
|
|
226
225
|
writer.popIndent();
|
|
@@ -228,19 +227,6 @@ export class MultiBranchIfStatement {
|
|
|
228
227
|
}
|
|
229
228
|
}
|
|
230
229
|
}
|
|
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
230
|
// maybe rename or move of fix
|
|
245
231
|
export class TsEnumEntityStatement {
|
|
246
232
|
constructor(enumEntity, options) {
|
|
@@ -287,21 +273,17 @@ export class LambdaExpression {
|
|
|
287
273
|
this.resolver = resolver;
|
|
288
274
|
this.body = body;
|
|
289
275
|
}
|
|
290
|
-
bodyAsString() {
|
|
291
|
-
var _a;
|
|
276
|
+
bodyAsString(isScoped = false) {
|
|
292
277
|
const writer = this.originalWriter.fork();
|
|
293
278
|
if (this.body) {
|
|
294
|
-
|
|
295
|
-
stmt.write(writer);
|
|
296
|
-
}
|
|
279
|
+
writer.writeStatement(new BlockStatement(this.body, isScoped, false));
|
|
297
280
|
}
|
|
298
281
|
writer.features.forEach(([feature, module]) => {
|
|
299
282
|
this.originalWriter.addFeature(feature, module);
|
|
300
283
|
});
|
|
301
|
-
return
|
|
302
|
-
.
|
|
303
|
-
.
|
|
304
|
-
.join("\n"));
|
|
284
|
+
return writer.getOutput()
|
|
285
|
+
.map(line => (line.endsWith('{') || line.endsWith('}') || line.endsWith(';')) ? line : `${line};`)
|
|
286
|
+
.join("\n");
|
|
305
287
|
}
|
|
306
288
|
}
|
|
307
289
|
////////////////////////////////////////////////////////////////
|
|
@@ -321,6 +303,7 @@ export var FieldModifier;
|
|
|
321
303
|
FieldModifier[FieldModifier["FINAL"] = 5] = "FINAL";
|
|
322
304
|
FieldModifier[FieldModifier["VOLATILE"] = 6] = "VOLATILE";
|
|
323
305
|
FieldModifier[FieldModifier["INTERNAL"] = 7] = "INTERNAL";
|
|
306
|
+
FieldModifier[FieldModifier["OVERRIDE"] = 8] = "OVERRIDE";
|
|
324
307
|
})(FieldModifier || (FieldModifier = {}));
|
|
325
308
|
export var MethodModifier;
|
|
326
309
|
(function (MethodModifier) {
|
|
@@ -509,9 +492,12 @@ export class LanguageWriter {
|
|
|
509
492
|
makeVoid() {
|
|
510
493
|
return this.makeUndefined();
|
|
511
494
|
}
|
|
495
|
+
makeLambdaReturn(expr) {
|
|
496
|
+
return this.makeReturn(expr);
|
|
497
|
+
}
|
|
512
498
|
makeRuntimeTypeCondition(typeVarName, equals, type, varName) {
|
|
513
499
|
const op = equals ? "==" : "!=";
|
|
514
|
-
return this.makeNaryOp(op, [this.
|
|
500
|
+
return this.makeNaryOp(op, [this.makeString(typeVarName), this.makeRuntimeType(type)]);
|
|
515
501
|
}
|
|
516
502
|
makeValueFromOption(value, destinationConvertor) {
|
|
517
503
|
return this.makeString(`${value}!`);
|
|
@@ -548,9 +534,6 @@ export class LanguageWriter {
|
|
|
548
534
|
nativeReceiver(nativeModule) {
|
|
549
535
|
return nativeModule.name;
|
|
550
536
|
}
|
|
551
|
-
makeDefinedCheck(value) {
|
|
552
|
-
return new CheckDefinedExpression(value);
|
|
553
|
-
}
|
|
554
537
|
makeRuntimeTypeDefinedCheck(runtimeType) {
|
|
555
538
|
return this.makeRuntimeTypeCondition(runtimeType, false, RuntimeType.UNDEFINED);
|
|
556
539
|
}
|
|
@@ -575,9 +558,6 @@ export class LanguageWriter {
|
|
|
575
558
|
makeUnionSelector(value, valueType) {
|
|
576
559
|
return this.makeAssign(valueType, undefined, this.makeString(`runtimeType(${value})`), false);
|
|
577
560
|
}
|
|
578
|
-
makeUnionVariantCondition(_convertor, _valueName, valueType, type, _convertorIndex, _runtimeTypeIndex) {
|
|
579
|
-
return this.makeString(`RuntimeType.${type.toUpperCase()} == ${valueType}`);
|
|
580
|
-
}
|
|
581
561
|
makeUnionVariantCast(value, type, convertor, index) {
|
|
582
562
|
return this.makeString(`unsafeCast<${type}>(${value})`);
|
|
583
563
|
}
|
|
@@ -616,9 +596,6 @@ export class LanguageWriter {
|
|
|
616
596
|
writeNativeMethodDeclaration(method) {
|
|
617
597
|
this.writeMethodDeclaration(method.name, method.signature);
|
|
618
598
|
}
|
|
619
|
-
writeUnsafeNativeMethodDeclaration(name, signature) {
|
|
620
|
-
return;
|
|
621
|
-
}
|
|
622
599
|
pushIndent() {
|
|
623
600
|
this.printer.pushIndent();
|
|
624
601
|
}
|
|
@@ -634,18 +611,6 @@ export class LanguageWriter {
|
|
|
634
611
|
makeSignature(returnType, parameters) {
|
|
635
612
|
return new MethodSignature(returnType, parameters.map(it => it.type));
|
|
636
613
|
}
|
|
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
614
|
mapFieldModifier(modifier) {
|
|
650
615
|
return `${FieldModifier[modifier].toLowerCase()}`;
|
|
651
616
|
}
|
|
@@ -664,12 +629,6 @@ export class LanguageWriter {
|
|
|
664
629
|
runtimeType(param, valueType, value) {
|
|
665
630
|
this.writeStatement(this.makeAssign(valueType, idl.IDLI32Type, this.makeFunctionCall("runtimeType", [this.makeString(value)]), false));
|
|
666
631
|
}
|
|
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
632
|
makeEnumEntity(enumEntity, options) {
|
|
674
633
|
return new TsEnumEntityStatement(enumEntity, { isExport: options.isExport, isDeclare: !!options.isDeclare });
|
|
675
634
|
}
|
|
@@ -687,21 +646,16 @@ export class LanguageWriter {
|
|
|
687
646
|
makeCastCustomObject(customName, _isGenericType) {
|
|
688
647
|
return this.makeString(customName);
|
|
689
648
|
}
|
|
690
|
-
makeHasOwnProperty(value,
|
|
649
|
+
makeHasOwnProperty(value, property, propertyTypeName) {
|
|
691
650
|
const expressions = [this.makeString(`${value}.hasOwnProperty("${property}")`)];
|
|
692
651
|
if (propertyTypeName) {
|
|
693
652
|
expressions.push(this.makeString(`isInstanceOf("${propertyTypeName}", ${value}.${property})`));
|
|
694
653
|
}
|
|
695
654
|
return this.makeNaryOp("&&", expressions);
|
|
696
655
|
}
|
|
697
|
-
|
|
698
|
-
return
|
|
699
|
-
|
|
700
|
-
...exprs
|
|
701
|
-
]);
|
|
702
|
-
}
|
|
703
|
-
makeDiscriminatorConvertor(_convertor, _value, _index) {
|
|
704
|
-
return undefined;
|
|
656
|
+
discriminate(value, index, type, runtimeTypes) {
|
|
657
|
+
// return most common form, suitable for languages that don't have sum types
|
|
658
|
+
return `${value}.getSelector() == ${index}`;
|
|
705
659
|
}
|
|
706
660
|
makeNot(expr) {
|
|
707
661
|
return this.makeString(`!(${expr.asString()})`);
|
|
@@ -720,18 +674,13 @@ export class LanguageWriter {
|
|
|
720
674
|
makeStaticBlock(op) {
|
|
721
675
|
op(this);
|
|
722
676
|
}
|
|
723
|
-
instanceOf(
|
|
724
|
-
return this.makeString(`${value} instanceof ${this.getNodeName(
|
|
677
|
+
instanceOf(value, type) {
|
|
678
|
+
return this.makeString(`${value} instanceof ${this.getNodeName(type)}`);
|
|
725
679
|
}
|
|
726
680
|
// The version of instanceOf() which does not use ArgConvertors
|
|
727
681
|
typeInstanceOf(type, value, members) {
|
|
728
682
|
return this.makeString(`${value} instanceof ${this.getNodeName(type)}`);
|
|
729
683
|
}
|
|
730
|
-
stringifyTypeOrEmpty(type) {
|
|
731
|
-
if (type === undefined)
|
|
732
|
-
return "";
|
|
733
|
-
return this.getNodeName(type);
|
|
734
|
-
}
|
|
735
684
|
/**
|
|
736
685
|
* Writes `namespace <namespace> {` and adds extra indent
|
|
737
686
|
* @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,10 +121,9 @@ 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
|
-
makeMapForEach(map: string, key: string, value: string,
|
|
126
|
+
makeMapForEach(map: string, key: string, value: string, body: LanguageStatement[]): LanguageStatement;
|
|
128
127
|
makeDefinedCheck(value: string): LanguageExpression;
|
|
129
128
|
makeNewObject(objectName: string, params?: LanguageExpression[]): LanguageExpression;
|
|
130
129
|
writePrintLog(message: string): void;
|