@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
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { IndentedPrinter } from "../../IndentedPrinter";
|
|
2
|
-
import { LambdaExpression, LanguageExpression, LanguageStatement, LanguageWriter, MakeCastOptions, Method, MethodModifier, MethodSignature
|
|
2
|
+
import { LambdaExpression, LanguageExpression, LanguageStatement, LanguageWriter, MakeAssignOptions, MakeCastOptions, Method, MethodModifier, MethodSignature } from "../LanguageWriter";
|
|
3
3
|
import { TSLanguageWriter } from "./TsLanguageWriter";
|
|
4
4
|
import { IDLEnum, IDLType } from '../../idl';
|
|
5
5
|
import { ArgConvertor } from "../ArgConvertors";
|
|
6
6
|
import * as idl from '../../idl';
|
|
7
7
|
import { IdlNameConvertor } from "../nameConvertor";
|
|
8
|
+
import { RuntimeType } from "../common";
|
|
8
9
|
import { ReferenceResolver } from "../../peer-generation/ReferenceResolver";
|
|
9
10
|
export declare class EtsAssignStatement implements LanguageStatement {
|
|
10
11
|
variableName: string;
|
|
@@ -12,7 +13,8 @@ export declare class EtsAssignStatement implements LanguageStatement {
|
|
|
12
13
|
expression: LanguageExpression;
|
|
13
14
|
isDeclared: boolean;
|
|
14
15
|
protected isConst: boolean;
|
|
15
|
-
|
|
16
|
+
protected options?: MakeAssignOptions | undefined;
|
|
17
|
+
constructor(variableName: string, type: IDLType | undefined, expression: LanguageExpression, isDeclared?: boolean, isConst?: boolean, options?: MakeAssignOptions | undefined);
|
|
16
18
|
write(writer: LanguageWriter): void;
|
|
17
19
|
}
|
|
18
20
|
export declare class ArkTSEnumEntityStatement implements LanguageStatement {
|
|
@@ -40,7 +42,7 @@ export declare class ETSLanguageWriter extends TSLanguageWriter {
|
|
|
40
42
|
fork(options?: {
|
|
41
43
|
resolver?: ReferenceResolver;
|
|
42
44
|
}): LanguageWriter;
|
|
43
|
-
makeAssign(variableName: string, type: IDLType | undefined, expr: LanguageExpression, isDeclared?: boolean, isConst?: boolean): LanguageStatement;
|
|
45
|
+
makeAssign(variableName: string, type: IDLType | undefined, expr: LanguageExpression, isDeclared?: boolean, isConst?: boolean, options?: MakeAssignOptions): LanguageStatement;
|
|
44
46
|
makeLambda(signature: MethodSignature, body?: LanguageStatement[]): LanguageExpression;
|
|
45
47
|
makeMapForEach(map: string, key: string, value: string, op: () => void): LanguageStatement;
|
|
46
48
|
makeMapSize(map: string): LanguageExpression;
|
|
@@ -53,23 +55,18 @@ export declare class ETSLanguageWriter extends TSLanguageWriter {
|
|
|
53
55
|
targetType: (writer: LanguageWriter) => string;
|
|
54
56
|
}, value: string, accessors: string[], duplicates: Set<string>): LanguageExpression;
|
|
55
57
|
makeValueFromOption(value: string, destinationConvertor: ArgConvertor): LanguageExpression;
|
|
56
|
-
makeIsTypeCall(value: string, decl: idl.IDLInterface): LanguageExpression;
|
|
57
58
|
makeEnumEntity(enumEntity: IDLEnum, options: {
|
|
58
59
|
isExport: boolean;
|
|
59
60
|
isDeclare?: boolean;
|
|
60
61
|
}): LanguageStatement;
|
|
61
|
-
getObjectAccessor(convertor: ArgConvertor, value: string, args?: ObjectArgs): string;
|
|
62
62
|
writeMethodCall(receiver: string, method: string, params: string[], nullable?: boolean): void;
|
|
63
63
|
isQuickType(type: IDLType): boolean;
|
|
64
64
|
writeNativeMethodDeclaration(method: Method): void;
|
|
65
|
-
makeUnionVariantCondition(convertor: ArgConvertor, valueName: string, valueType: string, type: string, convertorIndex: number, runtimeTypeIndex: number): LanguageExpression;
|
|
66
65
|
makeCastCustomObject(customName: string, isGenericType: boolean): LanguageExpression;
|
|
67
|
-
makeHasOwnProperty(value: string, valueTypeName: string, property: string, propertyTypeName: string): LanguageExpression;
|
|
68
66
|
makeEquals(args: LanguageExpression[]): LanguageExpression;
|
|
69
|
-
|
|
67
|
+
discriminate(value: string, index: number, type: idl.IDLType, runtimeTypes: RuntimeType[]): string;
|
|
70
68
|
castToInt(value: string, bitness: 8 | 32): string;
|
|
71
69
|
castToBoolean(value: string): string;
|
|
72
|
-
instanceOf(convertor: ArgConvertor, value: string, duplicateMembers?: Set<string>): LanguageExpression;
|
|
73
70
|
typeInstanceOf(type: idl.IDLEntry, value: string, members?: string[]): LanguageExpression;
|
|
74
71
|
makeTypeCast(value: LanguageExpression, type: idl.IDLType, options?: MakeCastOptions): LanguageExpression;
|
|
75
72
|
makeCast(value: LanguageExpression, node: idl.IDLNode, options?: MakeCastOptions): LanguageExpression;
|
|
@@ -16,24 +16,25 @@ import { IndentedPrinter } from "../../IndentedPrinter";
|
|
|
16
16
|
import { LambdaExpression, MethodModifier } from "../LanguageWriter";
|
|
17
17
|
import { TSCastExpression, TSLanguageWriter } from "./TsLanguageWriter";
|
|
18
18
|
import { getExtAttribute, IDLThisType } from '../../idl';
|
|
19
|
-
import { AggregateConvertor,
|
|
19
|
+
import { AggregateConvertor, CustomTypeConvertor, InterfaceConvertor, MaterializedClassConvertor } from "../ArgConvertors";
|
|
20
20
|
import * as idl from '../../idl';
|
|
21
21
|
import { convertDeclaration } from "../nameConvertor";
|
|
22
22
|
import { createDeclarationNameConvertor } from "../../peer-generation/idl/IdlNameConvertor";
|
|
23
23
|
import { Language } from "../../Language";
|
|
24
|
-
import { RuntimeType } from "../common";
|
|
25
24
|
////////////////////////////////////////////////////////////////
|
|
26
25
|
// STATEMENTS //
|
|
27
26
|
////////////////////////////////////////////////////////////////
|
|
28
27
|
export class EtsAssignStatement {
|
|
29
|
-
constructor(variableName, type, expression, isDeclared = true, isConst = true) {
|
|
28
|
+
constructor(variableName, type, expression, isDeclared = true, isConst = true, options) {
|
|
30
29
|
this.variableName = variableName;
|
|
31
30
|
this.type = type;
|
|
32
31
|
this.expression = expression;
|
|
33
32
|
this.isDeclared = isDeclared;
|
|
34
33
|
this.isConst = isConst;
|
|
34
|
+
this.options = options;
|
|
35
35
|
}
|
|
36
36
|
write(writer) {
|
|
37
|
+
var _a;
|
|
37
38
|
if (this.isDeclared) {
|
|
38
39
|
const typeClause = this.type !== undefined ? `: ${writer.getNodeName(this.type)}` : '';
|
|
39
40
|
const maybeAssign = this.expression !== undefined ? " = " : "";
|
|
@@ -41,7 +42,9 @@ export class EtsAssignStatement {
|
|
|
41
42
|
writer.print(`${this.isConst ? "const" : "let"} ${this.variableName} ${typeClause}${maybeAssign}${initValue.asString()}`);
|
|
42
43
|
}
|
|
43
44
|
else {
|
|
44
|
-
|
|
45
|
+
const receiver = (_a = this.options) === null || _a === void 0 ? void 0 : _a.receiver;
|
|
46
|
+
const withReceiver = receiver ? `${receiver}.` : "";
|
|
47
|
+
writer.print(`${withReceiver}${this.variableName} = ${this.expression.asString()}`);
|
|
45
48
|
}
|
|
46
49
|
}
|
|
47
50
|
}
|
|
@@ -130,10 +133,10 @@ export class ETSLambdaExpression extends LambdaExpression {
|
|
|
130
133
|
// UTILS //
|
|
131
134
|
////////////////////////////////////////////////////////////////
|
|
132
135
|
export function generateTypeCheckerName(typeName) {
|
|
133
|
-
|
|
136
|
+
return "is" + typeName
|
|
134
137
|
.replaceAll('[]', 'BracketsArray')
|
|
135
|
-
.
|
|
136
|
-
|
|
138
|
+
.replaceAll(/<.*$/g, '') // delete type arguments
|
|
139
|
+
.replaceAll('.', '_');
|
|
137
140
|
}
|
|
138
141
|
export function generateEnumToNumericName(entry) {
|
|
139
142
|
const typeName = idl.getQualifiedName(entry, "namespace.name").split('.').join('_');
|
|
@@ -159,8 +162,8 @@ export class ETSLanguageWriter extends TSLanguageWriter {
|
|
|
159
162
|
var _a;
|
|
160
163
|
return new ETSLanguageWriter(new IndentedPrinter(), (_a = options === null || options === void 0 ? void 0 : options.resolver) !== null && _a !== void 0 ? _a : this.resolver, this.typeConvertor, this.arrayConvertor);
|
|
161
164
|
}
|
|
162
|
-
makeAssign(variableName, type, expr, isDeclared = true, isConst = true) {
|
|
163
|
-
return new EtsAssignStatement(variableName, type, expr, isDeclared, isConst);
|
|
165
|
+
makeAssign(variableName, type, expr, isDeclared = true, isConst = true, options) {
|
|
166
|
+
return new EtsAssignStatement(variableName, type, expr, isDeclared, isConst, options);
|
|
164
167
|
}
|
|
165
168
|
makeLambda(signature, body) {
|
|
166
169
|
return new ETSLambdaExpression(this, this.typeConvertor, signature, this.resolver, body);
|
|
@@ -202,7 +205,7 @@ export class ETSLanguageWriter extends TSLanguageWriter {
|
|
|
202
205
|
|| convertor instanceof InterfaceConvertor
|
|
203
206
|
|| convertor instanceof MaterializedClassConvertor
|
|
204
207
|
|| convertor instanceof CustomTypeConvertor) {
|
|
205
|
-
return this.instanceOf(
|
|
208
|
+
return this.instanceOf(value, convertor.idlType);
|
|
206
209
|
}
|
|
207
210
|
return this.makeString(`${value} instanceof ${convertor.targetType(this)}`);
|
|
208
211
|
}
|
|
@@ -212,18 +215,12 @@ export class ETSLanguageWriter extends TSLanguageWriter {
|
|
|
212
215
|
}
|
|
213
216
|
return super.makeValueFromOption(value, destinationConvertor);
|
|
214
217
|
}
|
|
215
|
-
makeIsTypeCall(value, decl) {
|
|
216
|
-
return makeInterfaceTypeCheckerCall(value, decl.name, decl.properties.map(it => it.name), new Set(), this);
|
|
217
|
-
}
|
|
218
218
|
makeEnumEntity(enumEntity, options) {
|
|
219
219
|
return new ArkTSEnumEntityStatement(enumEntity, {
|
|
220
220
|
isExport: options === null || options === void 0 ? void 0 : options.isExport,
|
|
221
221
|
isDeclare: !!(options === null || options === void 0 ? void 0 : options.isDeclare),
|
|
222
222
|
});
|
|
223
223
|
}
|
|
224
|
-
getObjectAccessor(convertor, value, args) {
|
|
225
|
-
return super.getObjectAccessor(convertor, value, args);
|
|
226
|
-
}
|
|
227
224
|
writeMethodCall(receiver, method, params, nullable = false) {
|
|
228
225
|
// ArkTS does not support - 'this.?'
|
|
229
226
|
super.writeMethodCall(receiver, method, params, nullable && receiver !== "this");
|
|
@@ -237,46 +234,27 @@ export class ETSLanguageWriter extends TSLanguageWriter {
|
|
|
237
234
|
}
|
|
238
235
|
this.writeMethodDeclaration(method.name, method.signature, [MethodModifier.STATIC, MethodModifier.NATIVE]);
|
|
239
236
|
}
|
|
240
|
-
makeUnionVariantCondition(convertor, valueName, valueType, type, convertorIndex, runtimeTypeIndex) {
|
|
241
|
-
if (idl.isEnum(this.resolver.toDeclaration(convertor.nativeType()))) {
|
|
242
|
-
return this.instanceOf(convertor, valueName);
|
|
243
|
-
}
|
|
244
|
-
// TODO: in ArkTS SerializerBase.runtimeType returns RuntimeType.OBJECT for enum type and not RuntimeType.NUMBER as in TS
|
|
245
|
-
if (convertor instanceof UnionConvertor || convertor instanceof OptionConvertor) {
|
|
246
|
-
// Unwrapping of type
|
|
247
|
-
const idlType = convertor instanceof UnionConvertor
|
|
248
|
-
? convertor.nativeType().types[runtimeTypeIndex]
|
|
249
|
-
: idl.maybeUnwrapOptionalType(convertor.nativeType());
|
|
250
|
-
if (idlType !== undefined && idl.isReferenceType(idlType)) {
|
|
251
|
-
const resolved = this.resolver.resolveTypeReference(idlType);
|
|
252
|
-
type = resolved != undefined && idl.isEnum(resolved) ? RuntimeType[RuntimeType.OBJECT] : type;
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
return super.makeUnionVariantCondition(convertor, valueName, valueType, type, convertorIndex);
|
|
256
|
-
}
|
|
257
237
|
makeCastCustomObject(customName, isGenericType) {
|
|
258
238
|
if (isGenericType) {
|
|
259
239
|
return this.makeCast(this.makeString(customName), idl.IDLObjectType);
|
|
260
240
|
}
|
|
261
241
|
return super.makeCastCustomObject(customName, isGenericType);
|
|
262
242
|
}
|
|
263
|
-
makeHasOwnProperty(value, valueTypeName, property, propertyTypeName) {
|
|
264
|
-
return this.makeNaryOp("&&", [
|
|
265
|
-
this.makeString(`${value} instanceof ${valueTypeName}`),
|
|
266
|
-
this.makeString(`isInstanceOf("${propertyTypeName}", ${value}.${property})`)
|
|
267
|
-
]);
|
|
268
|
-
}
|
|
269
243
|
makeEquals(args) {
|
|
270
244
|
// TODO: Error elimination: 'TypeError: Both operands have to be reference types'
|
|
271
245
|
// the '==' operator must be used when one of the operands is a reference
|
|
272
246
|
return super.makeNaryOp('==', args);
|
|
273
247
|
}
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
248
|
+
discriminate(value, index, type, runtimeTypes) {
|
|
249
|
+
// work around ArkTS compiler bugs
|
|
250
|
+
if (idl.IDLContainerUtils.isSequence(type)) {
|
|
251
|
+
const arrayTypeName = this.arrayConvertor.convert(type);
|
|
252
|
+
return `TypeChecker.${generateTypeCheckerName(arrayTypeName)}(${value})`;
|
|
253
|
+
}
|
|
254
|
+
if (this.getNodeName(type) === "DragPreviewMode") {
|
|
255
|
+
return `TypeChecker.isDragPreviewMode(${value})`;
|
|
256
|
+
}
|
|
257
|
+
return `${value} instanceof ${this.getNodeName(type)}`;
|
|
280
258
|
}
|
|
281
259
|
castToInt(value, bitness) {
|
|
282
260
|
// This fix is used to avoid unnecessary writeInt8(value as int32) call, which is generated if value is already an int32
|
|
@@ -287,27 +265,6 @@ export class ETSLanguageWriter extends TSLanguageWriter {
|
|
|
287
265
|
return `(${value}).toInt()`; // FIXME: is there int8 in ARKTS?
|
|
288
266
|
}
|
|
289
267
|
castToBoolean(value) { return `${value} ? 1 : 0`; }
|
|
290
|
-
instanceOf(convertor, value, duplicateMembers) {
|
|
291
|
-
if (convertor instanceof CustomTypeConvertor) {
|
|
292
|
-
return makeInterfaceTypeCheckerCall(value, this.getNodeName(convertor.idlType), [], duplicateMembers, this);
|
|
293
|
-
}
|
|
294
|
-
if (convertor instanceof InterfaceConvertor || convertor instanceof MaterializedClassConvertor) {
|
|
295
|
-
return makeInterfaceTypeCheckerCall(value, this.getNodeName(convertor.idlType), convertor.declaration.properties.filter(it => !it.isStatic).map(it => it.name), duplicateMembers, this);
|
|
296
|
-
}
|
|
297
|
-
if (convertor instanceof BufferConvertor) {
|
|
298
|
-
return makeInterfaceTypeCheckerCall(value, this.getNodeName(convertor.idlType), [], new Set(), this);
|
|
299
|
-
}
|
|
300
|
-
if (convertor instanceof AggregateConvertor) {
|
|
301
|
-
return makeInterfaceTypeCheckerCall(value, convertor.aliasName !== undefined ? convertor.aliasName : this.getNodeName(convertor.idlType), convertor.members.map(it => it[0]), duplicateMembers, this);
|
|
302
|
-
}
|
|
303
|
-
if (convertor instanceof ArrayConvertor) {
|
|
304
|
-
return makeArrayTypeCheckCall(value, this.arrayConvertor.convert(convertor.idlType), this);
|
|
305
|
-
}
|
|
306
|
-
if (idl.isEnum(this.resolver.toDeclaration(convertor.nativeType()))) {
|
|
307
|
-
return makeEnumTypeCheckerCall(value, this.getNodeName(convertor.idlType), this);
|
|
308
|
-
}
|
|
309
|
-
return super.instanceOf(convertor, value, duplicateMembers);
|
|
310
|
-
}
|
|
311
268
|
typeInstanceOf(type, value, members) {
|
|
312
269
|
if (!members || members.length === 0) {
|
|
313
270
|
throw new Error("At least one member needs to provided to pass it to TypeChecker!");
|
|
@@ -6,11 +6,6 @@ import { ArgConvertor, BaseArgConvertor } 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 JavaCheckDefinedExpression implements LanguageExpression {
|
|
10
|
-
private value;
|
|
11
|
-
constructor(value: string);
|
|
12
|
-
asString(): string;
|
|
13
|
-
}
|
|
14
9
|
export declare class JavaCastExpression implements LanguageExpression {
|
|
15
10
|
value: LanguageExpression;
|
|
16
11
|
type: string;
|
|
@@ -46,13 +41,12 @@ export declare class JavaLanguageWriter extends CLikeLanguageWriter {
|
|
|
46
41
|
}, setter?: {
|
|
47
42
|
method: Method;
|
|
48
43
|
op: () => void;
|
|
49
|
-
}): void;
|
|
44
|
+
}, initExpr?: LanguageExpression): void;
|
|
50
45
|
writeTypeDeclaration(decl: idl.IDLTypedef): void;
|
|
51
46
|
writeConstant(constName: string, constType: idl.IDLType, constVal?: string): void;
|
|
52
47
|
makeAssign(variableName: string, type: idl.IDLType | undefined, expr: LanguageExpression, isDeclared?: boolean, isConst?: boolean): LanguageStatement;
|
|
53
48
|
makeLambda(signature: MethodSignature, body?: LanguageStatement[]): LanguageExpression;
|
|
54
49
|
makeReturn(expr: LanguageExpression): LanguageStatement;
|
|
55
|
-
makeCheckOptional(optional: LanguageExpression, doStatement: LanguageStatement): LanguageStatement;
|
|
56
50
|
makeDefinedCheck(value: string): LanguageExpression;
|
|
57
51
|
makeLoop(counter: string, limit: string, statement?: LanguageStatement): LanguageStatement;
|
|
58
52
|
makeMapForEach(map: string, key: string, value: string, op: () => void): LanguageStatement;
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import { Language } from '../../Language';
|
|
16
16
|
import { IndentedPrinter } from "../../IndentedPrinter";
|
|
17
|
-
import { AssignStatement,
|
|
17
|
+
import { AssignStatement, 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";
|
|
@@ -33,14 +33,6 @@ class JavaLambdaExpression extends LambdaExpression {
|
|
|
33
33
|
return `(${params.join(", ")}) -> { ${this.bodyAsString()} }`;
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
|
-
export class JavaCheckDefinedExpression {
|
|
37
|
-
constructor(value) {
|
|
38
|
-
this.value = value;
|
|
39
|
-
}
|
|
40
|
-
asString() {
|
|
41
|
-
return `${this.value} != null`;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
36
|
export class JavaCastExpression {
|
|
45
37
|
constructor(value, type, unsafe = false) {
|
|
46
38
|
this.value = value;
|
|
@@ -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,11 +188,8 @@ 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);
|
|
@@ -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,7 +99,7 @@ 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
105
|
makeMapForEach(map: string, key: string, value: string, op: () => void): LanguageStatement;
|
|
@@ -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, 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;
|
|
@@ -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);
|
|
@@ -378,7 +464,7 @@ export class KotlinLanguageWriter extends LanguageWriter {
|
|
|
378
464
|
return new KotlinMapForEachStatement(map, key, value, op);
|
|
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();
|