@idlizer/core 2.0.41 → 2.0.43
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/LanguageWriters/LanguageWriter.d.ts +3 -2
- package/build/lib/src/LanguageWriters/LanguageWriter.js +4 -2
- package/build/lib/src/LanguageWriters/convertors/CppConvertors.d.ts +1 -0
- package/build/lib/src/LanguageWriters/convertors/CppConvertors.js +17 -2
- package/build/lib/src/LanguageWriters/convertors/ETSConvertors.d.ts +3 -1
- package/build/lib/src/LanguageWriters/convertors/ETSConvertors.js +3 -1
- package/build/lib/src/LanguageWriters/convertors/InteropConvertors.js +4 -4
- package/build/lib/src/LanguageWriters/convertors/TSConvertors.d.ts +11 -1
- package/build/lib/src/LanguageWriters/convertors/TSConvertors.js +44 -1
- package/build/lib/src/LanguageWriters/index.d.ts +2 -2
- package/build/lib/src/LanguageWriters/index.js +4 -5
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.d.ts +3 -3
- package/build/lib/src/LanguageWriters/writers/CJLanguageWriter.js +5 -4
- package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.d.ts +1 -1
- package/build/lib/src/LanguageWriters/writers/CppLanguageWriter.js +1 -1
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.d.ts +8 -3
- package/build/lib/src/LanguageWriters/writers/ETSLanguageWriter.js +44 -10
- package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.d.ts +2 -2
- package/build/lib/src/LanguageWriters/writers/JavaLanguageWriter.js +3 -3
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.d.ts +2 -2
- package/build/lib/src/LanguageWriters/writers/TsLanguageWriter.js +15 -7
- package/build/lib/src/config.d.ts +892 -12
- package/build/lib/src/config.js +22 -2
- package/build/lib/src/configDescriber.d.ts +85 -0
- package/build/lib/src/configDescriber.js +297 -0
- package/build/lib/src/from-idl/DtsPrinter.js +4 -2
- package/build/lib/src/from-idl/IDLLinter.d.ts +24 -0
- package/build/lib/src/from-idl/IDLLinter.js +81 -0
- package/build/lib/src/from-idl/deserialize.js +41 -4
- package/build/lib/src/from-idl/webidl2-utils.d.ts +1 -0
- package/build/lib/src/from-idl/webidl2-utils.js +3 -0
- package/build/lib/src/idl.d.ts +23 -26
- package/build/lib/src/idl.js +31 -29
- package/build/lib/src/idlize.d.ts +10 -1
- package/build/lib/src/idlize.js +54 -26
- package/build/lib/src/index.d.ts +2 -0
- package/build/lib/src/index.js +2 -0
- package/build/lib/src/options.d.ts +1 -0
- package/build/lib/src/peer-generation/Materialized.d.ts +2 -1
- package/build/lib/src/peer-generation/Materialized.js +3 -2
- package/build/lib/src/peer-generation/PeerFile.d.ts +1 -2
- package/build/lib/src/peer-generation/PeerFile.js +1 -2
- package/build/lib/src/peer-generation/PeerLibrary.d.ts +0 -1
- package/build/lib/src/peer-generation/PeerLibrary.js +3 -3
- package/build/lib/src/peer-generation/idl/common.js +2 -2
- package/build/lib/src/peer-generation/isMaterialized.d.ts +1 -0
- package/build/lib/src/peer-generation/isMaterialized.js +6 -0
- package/build/lib/src/util.d.ts +1 -0
- package/build/lib/src/util.js +9 -0
- package/package.json +2 -2
|
@@ -227,7 +227,7 @@ export declare abstract class LanguageWriter {
|
|
|
227
227
|
stringId: string | undefined;
|
|
228
228
|
numberId: number;
|
|
229
229
|
}[], op?: (writer: this) => void): void;
|
|
230
|
-
abstract writeInterface(name: string, op: (writer: this) => void, superInterfaces?: string[], isDeclared?: boolean): void;
|
|
230
|
+
abstract writeInterface(name: string, op: (writer: this) => void, superInterfaces?: string[], generics?: string[], isDeclared?: boolean): void;
|
|
231
231
|
abstract writeFieldDeclaration(name: string, type: idl.IDLType, modifiers: FieldModifier[] | undefined, optional: boolean, initExpr?: LanguageExpression): void;
|
|
232
232
|
abstract writeFunctionDeclaration(name: string, signature: MethodSignature): void;
|
|
233
233
|
abstract writeFunctionImplementation(name: string, signature: MethodSignature, op: (writer: this) => void): void;
|
|
@@ -315,7 +315,8 @@ export declare abstract class LanguageWriter {
|
|
|
315
315
|
makeString(value: string): LanguageExpression;
|
|
316
316
|
makeNaryOp(op: string, args: LanguageExpression[]): LanguageExpression;
|
|
317
317
|
makeStatement(expr: LanguageExpression): LanguageStatement;
|
|
318
|
-
|
|
318
|
+
tryWriteQuick(method: Method): void;
|
|
319
|
+
writeNativeMethodDeclaration(method: Method): void;
|
|
319
320
|
writeUnsafeNativeMethodDeclaration(name: string, signature: MethodSignature): void;
|
|
320
321
|
pushIndent(): void;
|
|
321
322
|
popIndent(): void;
|
|
@@ -565,8 +565,10 @@ export class LanguageWriter {
|
|
|
565
565
|
makeStatement(expr) {
|
|
566
566
|
return new ExpressionStatement(expr);
|
|
567
567
|
}
|
|
568
|
-
|
|
569
|
-
|
|
568
|
+
tryWriteQuick(method) { }
|
|
569
|
+
writeNativeMethodDeclaration(method) {
|
|
570
|
+
this.tryWriteQuick(method);
|
|
571
|
+
this.writeMethodDeclaration(method.name, method.signature);
|
|
570
572
|
}
|
|
571
573
|
writeUnsafeNativeMethodDeclaration(name, signature) {
|
|
572
574
|
return;
|
|
@@ -30,6 +30,7 @@ export declare class GenericCppConvertor implements NodeConvertor<ConvertResult>
|
|
|
30
30
|
}
|
|
31
31
|
export declare class CppConvertor extends GenericCppConvertor implements IdlNameConvertor {
|
|
32
32
|
private unwrap;
|
|
33
|
+
private isPrimitiveOrPrimitiveAlias;
|
|
33
34
|
convert(node: idl.IDLNode): string;
|
|
34
35
|
}
|
|
35
36
|
export declare class CppNameConvertor implements IdlNameConvertor {
|
|
@@ -21,6 +21,7 @@ import { maybeTransformManagedCallback } from '../ArgConvertors';
|
|
|
21
21
|
import { qualifiedName } from '../../peer-generation/idl/common';
|
|
22
22
|
import { capitalize } from '../../util';
|
|
23
23
|
import { isMaterialized } from '../../peer-generation/isMaterialized';
|
|
24
|
+
import { isInIdlizeInternal } from '../../idlize';
|
|
24
25
|
export class GenericCppConvertor {
|
|
25
26
|
constructor(resolver) {
|
|
26
27
|
this.resolver = resolver;
|
|
@@ -42,7 +43,7 @@ export class GenericCppConvertor {
|
|
|
42
43
|
: this.make(this.computeTargetTypeLiteralName(node), true);
|
|
43
44
|
case idl.IDLInterfaceSubkind.Interface:
|
|
44
45
|
case idl.IDLInterfaceSubkind.Class:
|
|
45
|
-
if (
|
|
46
|
+
if (isInIdlizeInternal(node)) {
|
|
46
47
|
return this.make(node.name, true);
|
|
47
48
|
}
|
|
48
49
|
return this.make(node.name);
|
|
@@ -178,9 +179,23 @@ export class CppConvertor extends GenericCppConvertor {
|
|
|
178
179
|
const typePrefix = conf.TypePrefix;
|
|
179
180
|
// TODO remove this ugly hack for CustomObject's
|
|
180
181
|
const convertedToCustomObject = result.text === idl.IDLCustomObjectType.name;
|
|
181
|
-
const libPrefix =
|
|
182
|
+
const libPrefix = this.isPrimitiveOrPrimitiveAlias(type) || convertedToCustomObject ? "" : conf.LibraryPrefix;
|
|
182
183
|
return `${typePrefix}${libPrefix}${result.text}`;
|
|
183
184
|
}
|
|
185
|
+
isPrimitiveOrPrimitiveAlias(type) {
|
|
186
|
+
if (!idl.isType(type))
|
|
187
|
+
return false;
|
|
188
|
+
const { resolver } = this;
|
|
189
|
+
while (type && idl.isReferenceType(type)) {
|
|
190
|
+
const resolved = resolver.resolveTypeReference(type);
|
|
191
|
+
if (!resolved)
|
|
192
|
+
return false;
|
|
193
|
+
if (!idl.isTypedef(resolved))
|
|
194
|
+
break;
|
|
195
|
+
type = resolved.type;
|
|
196
|
+
}
|
|
197
|
+
return idl.isPrimitiveType(type);
|
|
198
|
+
}
|
|
184
199
|
convert(node) {
|
|
185
200
|
return this.unwrap(node, this.convertNode(node));
|
|
186
201
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as idl from "../../idl";
|
|
2
|
-
import { TSTypeNameConvertor } from "./TSConvertors";
|
|
2
|
+
import { TSInteropArgConvertor, TSTypeNameConvertor } from "./TSConvertors";
|
|
3
3
|
export declare class ETSTypeNameConvertor extends TSTypeNameConvertor {
|
|
4
4
|
convertTypeReference(type: idl.IDLReferenceType): string;
|
|
5
5
|
convertContainer(type: idl.IDLContainerType): string;
|
|
@@ -9,4 +9,6 @@ export declare class ETSTypeNameConvertor extends TSTypeNameConvertor {
|
|
|
9
9
|
protected mapCallback(decl: idl.IDLCallback): string;
|
|
10
10
|
protected mapFunctionType(typeArgs: string[]): string;
|
|
11
11
|
}
|
|
12
|
+
export declare class ETSInteropArgConvertor extends TSInteropArgConvertor {
|
|
13
|
+
}
|
|
12
14
|
//# sourceMappingURL=ETSConvertors.d.ts.map
|
|
@@ -16,7 +16,7 @@ import * as idl from "../../idl";
|
|
|
16
16
|
import { Language } from "../../Language";
|
|
17
17
|
import { createDeclarationNameConvertor } from "../../peer-generation/idl/IdlNameConvertor";
|
|
18
18
|
import { convertDeclaration } from "../nameConvertor";
|
|
19
|
-
import { TSTypeNameConvertor } from "./TSConvertors";
|
|
19
|
+
import { TSInteropArgConvertor, TSTypeNameConvertor } from "./TSConvertors";
|
|
20
20
|
export class ETSTypeNameConvertor extends TSTypeNameConvertor {
|
|
21
21
|
convertTypeReference(type) {
|
|
22
22
|
// Only to deal with namespaces. TODO: remove later
|
|
@@ -109,4 +109,6 @@ export class ETSTypeNameConvertor extends TSTypeNameConvertor {
|
|
|
109
109
|
return `Function${typeArgs.length - 1}<${typeArgs.join(",")}>`;
|
|
110
110
|
}
|
|
111
111
|
}
|
|
112
|
+
export class ETSInteropArgConvertor extends TSInteropArgConvertor {
|
|
113
|
+
}
|
|
112
114
|
//# sourceMappingURL=ETSConvertors.js.map
|
|
@@ -114,16 +114,16 @@ export class InteropArgConvertor {
|
|
|
114
114
|
case idl.IDLU64Type: return "KLong";
|
|
115
115
|
case idl.IDLI32Type: return "KInt";
|
|
116
116
|
case idl.IDLF32Type: return "KFloat";
|
|
117
|
-
case idl.IDLNumberType: return '
|
|
118
|
-
case idl.IDLBigintType: return '
|
|
117
|
+
case idl.IDLNumberType: return 'KInteropNumber';
|
|
118
|
+
case idl.IDLBigintType: return 'KLong';
|
|
119
119
|
case idl.IDLBooleanType:
|
|
120
120
|
case idl.IDLFunctionType: return 'KInt';
|
|
121
121
|
case idl.IDLStringType: return 'KStringPtr';
|
|
122
|
-
case idl.IDLBufferType: return `
|
|
122
|
+
case idl.IDLBufferType: return `KInteropBuffer`;
|
|
123
123
|
case idl.IDLLengthType: return 'Length';
|
|
124
124
|
case idl.IDLDate: return 'KLong';
|
|
125
125
|
case idl.IDLUndefinedType:
|
|
126
|
-
case idl.IDLVoidType:
|
|
126
|
+
case idl.IDLVoidType:
|
|
127
127
|
case idl.IDLPointerType: return 'KPointer'; // return PrimitiveTypesInstance.NativePointer.getText()
|
|
128
128
|
}
|
|
129
129
|
throw new Error(`Cannot pass primitive type ${type.name} through interop`);
|
|
@@ -1,6 +1,6 @@
|
|
|
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
4
|
export declare class TSTypeNameConvertor implements NodeConvertor<string>, IdlNameConvertor {
|
|
5
5
|
protected resolver: ReferenceResolver;
|
|
6
6
|
constructor(resolver: ReferenceResolver);
|
|
@@ -24,4 +24,14 @@ export declare class TSTypeNameConvertor implements NodeConvertor<string>, IdlNa
|
|
|
24
24
|
protected productType(decl: idl.IDLInterface, isTuple: boolean, includeFieldNames: boolean): string;
|
|
25
25
|
protected mapFunctionType(typeArgs: string[]): string;
|
|
26
26
|
}
|
|
27
|
+
export declare class TSInteropArgConvertor implements TypeConvertor<string> {
|
|
28
|
+
convert(type: idl.IDLType): string;
|
|
29
|
+
convertContainer(type: idl.IDLContainerType): string;
|
|
30
|
+
convertImport(type: idl.IDLReferenceType, importClause: string): string;
|
|
31
|
+
convertOptional(type: idl.IDLOptionalType): string;
|
|
32
|
+
convertPrimitiveType(type: idl.IDLPrimitiveType): string;
|
|
33
|
+
convertTypeParameter(type: idl.IDLTypeParameterType): string;
|
|
34
|
+
convertTypeReference(type: idl.IDLReferenceType): string;
|
|
35
|
+
convertUnion(type: idl.IDLUnionType): string;
|
|
36
|
+
}
|
|
27
37
|
//# sourceMappingURL=TSConvertors.d.ts.map
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* limitations under the License.
|
|
14
14
|
*/
|
|
15
15
|
import * as idl from '../../idl';
|
|
16
|
-
import { convertNode } from '../nameConvertor';
|
|
16
|
+
import { convertNode, convertType } from '../nameConvertor';
|
|
17
17
|
export class TSTypeNameConvertor {
|
|
18
18
|
constructor(resolver) {
|
|
19
19
|
this.resolver = resolver;
|
|
@@ -173,4 +173,47 @@ export class TSTypeNameConvertor {
|
|
|
173
173
|
return `Function${typeArgs.length ? `<${typeArgs.join(",")}>` : ''}`;
|
|
174
174
|
}
|
|
175
175
|
}
|
|
176
|
+
export class TSInteropArgConvertor {
|
|
177
|
+
convert(type) {
|
|
178
|
+
return convertType(this, type);
|
|
179
|
+
}
|
|
180
|
+
convertContainer(type) {
|
|
181
|
+
throw new Error(`Cannot pass container types through interop`);
|
|
182
|
+
}
|
|
183
|
+
convertImport(type, importClause) {
|
|
184
|
+
throw new Error(`Cannot pass import types through interop`);
|
|
185
|
+
}
|
|
186
|
+
convertOptional(type) {
|
|
187
|
+
return "KNativePointer";
|
|
188
|
+
}
|
|
189
|
+
convertPrimitiveType(type) {
|
|
190
|
+
switch (type) {
|
|
191
|
+
case idl.IDLI64Type: return "KLong";
|
|
192
|
+
case idl.IDLU64Type: return "KLong";
|
|
193
|
+
case idl.IDLI32Type: return "KInt";
|
|
194
|
+
case idl.IDLF32Type: return "KFloat";
|
|
195
|
+
case idl.IDLNumberType: return 'number';
|
|
196
|
+
case idl.IDLBigintType: return 'bigint';
|
|
197
|
+
case idl.IDLBooleanType:
|
|
198
|
+
case idl.IDLFunctionType: return 'KInt';
|
|
199
|
+
case idl.IDLStringType: return 'KStringPtr';
|
|
200
|
+
case idl.IDLBufferType: return `ArrayBuffer`;
|
|
201
|
+
case idl.IDLLengthType: return 'Length';
|
|
202
|
+
case idl.IDLDate: return 'number';
|
|
203
|
+
case idl.IDLUndefinedType:
|
|
204
|
+
case idl.IDLVoidType:
|
|
205
|
+
case idl.IDLPointerType: return 'KPointer';
|
|
206
|
+
}
|
|
207
|
+
throw new Error(`Cannot pass primitive type ${type.name} through interop`);
|
|
208
|
+
}
|
|
209
|
+
convertTypeParameter(type) {
|
|
210
|
+
throw new Error("Cannot pass type parameters through interop");
|
|
211
|
+
}
|
|
212
|
+
convertTypeReference(type) {
|
|
213
|
+
throw new Error(`Cannot pass type references through interop`);
|
|
214
|
+
}
|
|
215
|
+
convertUnion(type) {
|
|
216
|
+
throw new Error("Cannot pass union types through interop");
|
|
217
|
+
}
|
|
218
|
+
}
|
|
176
219
|
//# sourceMappingURL=TSConvertors.js.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Language } from "../Language";
|
|
2
2
|
import { ReferenceResolver } from "../peer-generation/ReferenceResolver";
|
|
3
|
-
import { InteropArgConvertor } from "./convertors/InteropConvertors";
|
|
4
3
|
import { LanguageWriter } from "./LanguageWriter";
|
|
4
|
+
import { TypeConvertor } from "./nameConvertor";
|
|
5
5
|
export * from "./nameConvertor";
|
|
6
6
|
export declare function createLanguageWriter(language: Language, resolver?: ReferenceResolver): LanguageWriter;
|
|
7
|
-
export declare function createInteropArgConvertor(language: Language):
|
|
7
|
+
export declare function createInteropArgConvertor(language: Language): TypeConvertor<string>;
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -4,10 +4,9 @@ import { PrimitiveTypesInstance } from "../peer-generation/PrimitiveType";
|
|
|
4
4
|
import { createEmptyReferenceResolver } from "../peer-generation/ReferenceResolver";
|
|
5
5
|
import { CJIDLTypeToForeignStringConvertor, CJInteropArgConvertor, CJTypeNameConvertor } from "./convertors/CJConvertors";
|
|
6
6
|
import { CppInteropArgConvertor, CppConvertor } from "./convertors/CppConvertors";
|
|
7
|
-
import { ETSTypeNameConvertor } from "./convertors/ETSConvertors";
|
|
8
|
-
import { InteropArgConvertor } from "./convertors/InteropConvertors";
|
|
7
|
+
import { ETSInteropArgConvertor, ETSTypeNameConvertor } from "./convertors/ETSConvertors";
|
|
9
8
|
import { JavaInteropArgConvertor, JavaTypeNameConvertor } from "./convertors/JavaConvertors";
|
|
10
|
-
import { TSTypeNameConvertor } from "./convertors/TSConvertors";
|
|
9
|
+
import { TSInteropArgConvertor, TSTypeNameConvertor } from "./convertors/TSConvertors";
|
|
11
10
|
import { CJLanguageWriter } from "./writers/CJLanguageWriter";
|
|
12
11
|
import { CppLanguageWriter } from "./writers/CppLanguageWriter";
|
|
13
12
|
import { ETSLanguageWriter } from "./writers/ETSLanguageWriter";
|
|
@@ -28,8 +27,8 @@ export function createLanguageWriter(language, resolver) {
|
|
|
28
27
|
}
|
|
29
28
|
export function createInteropArgConvertor(language) {
|
|
30
29
|
switch (language) {
|
|
31
|
-
case Language.TS:
|
|
32
|
-
case Language.ARKTS: return new
|
|
30
|
+
case Language.TS: return new TSInteropArgConvertor();
|
|
31
|
+
case Language.ARKTS: return new ETSInteropArgConvertor();
|
|
33
32
|
case Language.CPP: return CppInteropArgConvertor.INSTANCE;
|
|
34
33
|
case Language.JAVA: return new JavaInteropArgConvertor();
|
|
35
34
|
case Language.CJ: return new CJInteropArgConvertor();
|
|
@@ -2,7 +2,7 @@ import * as idl from "../../idl";
|
|
|
2
2
|
import { IndentedPrinter } from "../../IndentedPrinter";
|
|
3
3
|
import { ArgConvertor, BaseArgConvertor } from "../ArgConvertors";
|
|
4
4
|
import { RuntimeType } from "../common";
|
|
5
|
-
import { AssignStatement, FieldModifier, LambdaExpression, LanguageExpression, LanguageStatement, LanguageWriter, MakeCastOptions, Method, MethodModifier, MethodSignature,
|
|
5
|
+
import { AssignStatement, FieldModifier, LambdaExpression, LanguageExpression, LanguageStatement, LanguageWriter, MakeCastOptions, Method, MethodModifier, MethodSignature, ObjectArgs } from "../LanguageWriter";
|
|
6
6
|
import { IdlNameConvertor } from "../nameConvertor";
|
|
7
7
|
import { Language } from "../../Language";
|
|
8
8
|
import { ReferenceResolver } from "../../peer-generation/ReferenceResolver";
|
|
@@ -81,7 +81,7 @@ export declare class CJLanguageWriter extends LanguageWriter {
|
|
|
81
81
|
stringId: string | undefined;
|
|
82
82
|
numberId: number;
|
|
83
83
|
}[], op: (writer: LanguageWriter) => void): void;
|
|
84
|
-
writeInterface(name: string, op: (writer: this) => void, superInterfaces?: string[]): void;
|
|
84
|
+
writeInterface(name: string, op: (writer: this) => void, superInterfaces?: string[], generics?: string[]): void;
|
|
85
85
|
writeFunctionDeclaration(name: string, signature: MethodSignature): void;
|
|
86
86
|
writeFunctionImplementation(name: string, signature: MethodSignature, op: (writer: this) => void): void;
|
|
87
87
|
private generateFunctionDeclaration;
|
|
@@ -96,7 +96,7 @@ export declare class CJLanguageWriter extends LanguageWriter {
|
|
|
96
96
|
writeCJForeign(op: (writer: CJLanguageWriter) => void): void;
|
|
97
97
|
private writeDeclaration;
|
|
98
98
|
writeNativeFunctionCall(printer: LanguageWriter, name: string, signature: MethodSignature): void;
|
|
99
|
-
writeNativeMethodDeclaration(
|
|
99
|
+
writeNativeMethodDeclaration(method: Method): void;
|
|
100
100
|
makeEnumCast(enumName: string, _unsafe: boolean, _convertor: ArgConvertor | undefined): string;
|
|
101
101
|
makeAssign(variableName: string, type: idl.IDLType | undefined, expr: LanguageExpression, isDeclared?: boolean, isConst?: boolean): LanguageStatement;
|
|
102
102
|
makeClassInit(type: idl.IDLType, parameters: LanguageExpression[]): LanguageExpression;
|
|
@@ -293,7 +293,7 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
293
293
|
this.popIndent();
|
|
294
294
|
this.printer.print(`}`);
|
|
295
295
|
}
|
|
296
|
-
writeInterface(name, op, superInterfaces) {
|
|
296
|
+
writeInterface(name, op, superInterfaces, generics) {
|
|
297
297
|
let extendsClause = superInterfaces ? ` <: ${superInterfaces.join(" & ")}` : '';
|
|
298
298
|
this.printer.print(`public interface ${name}${extendsClause} {`);
|
|
299
299
|
this.pushIndent();
|
|
@@ -404,10 +404,11 @@ export class CJLanguageWriter extends LanguageWriter {
|
|
|
404
404
|
writeNativeFunctionCall(printer, name, signature) {
|
|
405
405
|
printer.print(`return unsafe { ${name}(${signature.args.map((it, index) => `${signature.argName(index)}`).join(", ")}) }`);
|
|
406
406
|
}
|
|
407
|
-
writeNativeMethodDeclaration(
|
|
408
|
-
let
|
|
407
|
+
writeNativeMethodDeclaration(method) {
|
|
408
|
+
let name = method.name;
|
|
409
|
+
let signture = `${method.signature.args.map((it, index) => `${this.escapeKeyword(method.signature.argName(index))}: ${this.typeForeignConvertor.convert(it)}`).join(", ")}`;
|
|
409
410
|
name = name.startsWith('_') ? name.slice(1) : name;
|
|
410
|
-
this.print(`func ${name}(${signture}): ${this.typeForeignConvertor.convert(signature.returnType)}`);
|
|
411
|
+
this.print(`func ${name}(${signture}): ${this.typeForeignConvertor.convert(method.signature.returnType)}`);
|
|
411
412
|
}
|
|
412
413
|
makeEnumCast(enumName, _unsafe, _convertor) {
|
|
413
414
|
return `${enumName}.value`;
|
|
@@ -41,7 +41,7 @@ export declare class CppLanguageWriter extends CLikeLanguageWriter {
|
|
|
41
41
|
resolver?: ReferenceResolver;
|
|
42
42
|
}): LanguageWriter;
|
|
43
43
|
writeClass(name: string, op: (writer: this) => void, superClass?: string, interfaces?: string[]): void;
|
|
44
|
-
writeInterface(name: string, op: (writer: this) => void, superInterfaces?: string[]): void;
|
|
44
|
+
writeInterface(name: string, op: (writer: this) => void, superInterfaces?: string[], generics?: string[]): void;
|
|
45
45
|
writeMethodCall(receiver: string, method: string, params: string[], nullable?: boolean): void;
|
|
46
46
|
writeFieldDeclaration(name: string, type: IDLType, modifiers: FieldModifier[] | undefined, optional: boolean, initExpr?: LanguageExpression): void;
|
|
47
47
|
writeConstructorImplementation(className: string, signature: MethodSignature, op: (writer: this) => void, superCall?: Method, modifiers?: MethodModifier[]): void;
|
|
@@ -180,7 +180,7 @@ export class CppLanguageWriter extends CLikeLanguageWriter {
|
|
|
180
180
|
this.popIndent();
|
|
181
181
|
this.printer.print(`};`);
|
|
182
182
|
}
|
|
183
|
-
writeInterface(name, op, superInterfaces) {
|
|
183
|
+
writeInterface(name, op, superInterfaces, generics) {
|
|
184
184
|
throw new Error("Method not implemented.");
|
|
185
185
|
}
|
|
186
186
|
writeMethodCall(receiver, method, params, nullable = false) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IndentedPrinter } from "../../IndentedPrinter";
|
|
2
|
-
import { LambdaExpression, LanguageExpression, LanguageStatement, LanguageWriter, MakeCastOptions, MethodModifier, MethodSignature, ObjectArgs } from "../LanguageWriter";
|
|
2
|
+
import { LambdaExpression, LanguageExpression, LanguageStatement, LanguageWriter, MakeCastOptions, Method, MethodModifier, MethodSignature, ObjectArgs } from "../LanguageWriter";
|
|
3
3
|
import { TSLanguageWriter } from "./TsLanguageWriter";
|
|
4
4
|
import { IDLEnum, IDLType } from '../../idl';
|
|
5
5
|
import { ArgConvertor } from "../ArgConvertors";
|
|
@@ -28,6 +28,8 @@ export declare class ETSLambdaExpression extends LambdaExpression {
|
|
|
28
28
|
asString(): string;
|
|
29
29
|
}
|
|
30
30
|
export declare function generateTypeCheckerName(typeName: string): string;
|
|
31
|
+
export declare function generateEnumToOrdinalName(typeName: string): string;
|
|
32
|
+
export declare function generateEnumFromOrdinalName(typeName: string): string;
|
|
31
33
|
export declare function makeArrayTypeCheckCall(valueAccessor: string, typeName: string, writer: LanguageWriter): LanguageExpression;
|
|
32
34
|
export declare class ETSLanguageWriter extends TSLanguageWriter {
|
|
33
35
|
private arrayConvertor;
|
|
@@ -35,7 +37,6 @@ export declare class ETSLanguageWriter extends TSLanguageWriter {
|
|
|
35
37
|
fork(options?: {
|
|
36
38
|
resolver?: ReferenceResolver;
|
|
37
39
|
}): LanguageWriter;
|
|
38
|
-
writeNativeMethodDeclaration(name: string, signature: MethodSignature): void;
|
|
39
40
|
makeAssign(variableName: string, type: IDLType | undefined, expr: LanguageExpression, isDeclared?: boolean, isConst?: boolean): LanguageStatement;
|
|
40
41
|
makeLambda(signature: MethodSignature, body?: LanguageStatement[]): LanguageExpression;
|
|
41
42
|
makeMapForEach(map: string, key: string, value: string, op: () => void): LanguageStatement;
|
|
@@ -45,7 +46,7 @@ export declare class ETSLanguageWriter extends TSLanguageWriter {
|
|
|
45
46
|
runtimeType(param: ArgConvertor, valueType: string, value: string): void;
|
|
46
47
|
makeUnionVariantCast(value: string, type: string, convertor: ArgConvertor, index?: number): LanguageExpression;
|
|
47
48
|
enumFromOrdinal(value: LanguageExpression, enumEntry: idl.IDLType): LanguageExpression;
|
|
48
|
-
ordinalFromEnum(value: LanguageExpression,
|
|
49
|
+
ordinalFromEnum(value: LanguageExpression, enumEntry: idl.IDLType): LanguageExpression;
|
|
49
50
|
makeDiscriminatorFromFields(convertor: {
|
|
50
51
|
targetType: (writer: LanguageWriter) => string;
|
|
51
52
|
}, value: string, accessors: string[], duplicates: Set<string>): LanguageExpression;
|
|
@@ -54,6 +55,10 @@ export declare class ETSLanguageWriter extends TSLanguageWriter {
|
|
|
54
55
|
makeEnumEntity(enumEntity: IDLEnum, isExport: boolean): LanguageStatement;
|
|
55
56
|
getObjectAccessor(convertor: ArgConvertor, value: string, args?: ObjectArgs): string;
|
|
56
57
|
writeMethodCall(receiver: string, method: string, params: string[], nullable?: boolean): void;
|
|
58
|
+
isDirectType(type: IDLType): boolean;
|
|
59
|
+
isQuickType(type: IDLType): boolean;
|
|
60
|
+
tryWriteQuick(method: Method): void;
|
|
61
|
+
writeNativeMethodDeclaration(method: Method): void;
|
|
57
62
|
writeProperty(propName: string, propType: IDLType): void;
|
|
58
63
|
makeEnumCast(value: string, _unsafe: boolean, convertor: ArgConvertor | undefined): string;
|
|
59
64
|
makeUnionVariantCondition(convertor: ArgConvertor, valueName: string, valueType: string, type: string, convertorIndex: number, runtimeTypeIndex: number): LanguageExpression;
|
|
@@ -16,7 +16,7 @@ import { IndentedPrinter } from "../../IndentedPrinter";
|
|
|
16
16
|
import { LambdaExpression, MethodModifier } from "../LanguageWriter";
|
|
17
17
|
import { TSCastExpression, TSLanguageWriter } from "./TsLanguageWriter";
|
|
18
18
|
import { getExtAttribute, IDLI32Type, IDLThisType } from '../../idl';
|
|
19
|
-
import { AggregateConvertor, ArrayConvertor, CustomTypeConvertor, InterfaceConvertor, MaterializedClassConvertor, OptionConvertor, UnionConvertor } from "../ArgConvertors";
|
|
19
|
+
import { AggregateConvertor, ArrayConvertor, CustomTypeConvertor, InterfaceConvertor, MaterializedClassConvertor, OptionConvertor, UnionConvertor, BufferConvertor } from "../ArgConvertors";
|
|
20
20
|
import * as idl from '../../idl';
|
|
21
21
|
import { convertDeclaration } from "../nameConvertor";
|
|
22
22
|
import { createDeclarationNameConvertor } from "../../peer-generation/idl/IdlNameConvertor";
|
|
@@ -138,6 +138,14 @@ export function generateTypeCheckerName(typeName) {
|
|
|
138
138
|
.replaceAll('.', ''); // Todo: hack for namespaces
|
|
139
139
|
return `is${typeName.replaceAll('[]', 'Brackets')}`;
|
|
140
140
|
}
|
|
141
|
+
export function generateEnumToOrdinalName(typeName) {
|
|
142
|
+
typeName = typeName.split(".").join("_");
|
|
143
|
+
return `${typeName}_ToOrdinal`;
|
|
144
|
+
}
|
|
145
|
+
export function generateEnumFromOrdinalName(typeName) {
|
|
146
|
+
typeName = typeName.split(".").join("_");
|
|
147
|
+
return `${typeName}_FromOrdinal`;
|
|
148
|
+
}
|
|
141
149
|
export function makeArrayTypeCheckCall(valueAccessor, typeName, writer) {
|
|
142
150
|
return writer.makeMethodCall("TypeChecker", generateTypeCheckerName(typeName), [writer.makeString(valueAccessor)
|
|
143
151
|
]);
|
|
@@ -154,12 +162,6 @@ export class ETSLanguageWriter extends TSLanguageWriter {
|
|
|
154
162
|
var _a;
|
|
155
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);
|
|
156
164
|
}
|
|
157
|
-
writeNativeMethodDeclaration(name, signature) {
|
|
158
|
-
if (signature.returnType === IDLThisType) {
|
|
159
|
-
throw new Error('static method can not return this!');
|
|
160
|
-
}
|
|
161
|
-
this.writeMethodDeclaration(name, signature, [MethodModifier.STATIC, MethodModifier.NATIVE]);
|
|
162
|
-
}
|
|
163
165
|
makeAssign(variableName, type, expr, isDeclared = true, isConst = true) {
|
|
164
166
|
return new EtsAssignStatement(variableName, type, expr, isDeclared, isConst);
|
|
165
167
|
}
|
|
@@ -190,10 +192,11 @@ export class ETSLanguageWriter extends TSLanguageWriter {
|
|
|
190
192
|
}
|
|
191
193
|
enumFromOrdinal(value, enumEntry) {
|
|
192
194
|
const enumName = this.getNodeName(enumEntry);
|
|
193
|
-
return this.makeString(
|
|
195
|
+
return this.makeMethodCall('TypeChecker', generateEnumFromOrdinalName(enumName), [this.makeString(value.asString())]);
|
|
194
196
|
}
|
|
195
|
-
ordinalFromEnum(value,
|
|
196
|
-
|
|
197
|
+
ordinalFromEnum(value, enumEntry) {
|
|
198
|
+
const enumName = this.getNodeName(enumEntry);
|
|
199
|
+
return this.makeMethodCall('TypeChecker', generateEnumToOrdinalName(enumName), [this.makeString(value.asString())]);
|
|
197
200
|
}
|
|
198
201
|
makeDiscriminatorFromFields(convertor, value, accessors, duplicates) {
|
|
199
202
|
if (convertor instanceof AggregateConvertor
|
|
@@ -223,6 +226,34 @@ export class ETSLanguageWriter extends TSLanguageWriter {
|
|
|
223
226
|
// ArkTS does not support - 'this.?'
|
|
224
227
|
super.writeMethodCall(receiver, method, params, nullable && receiver !== "this");
|
|
225
228
|
}
|
|
229
|
+
isDirectType(type) {
|
|
230
|
+
let converted = this.getNodeName(type);
|
|
231
|
+
return type == idl.IDLI32Type || type == idl.IDLPointerType || type == idl.IDLBooleanType
|
|
232
|
+
|| type == idl.IDLVoidType || converted == "KPointer" || converted == "KInt";
|
|
233
|
+
}
|
|
234
|
+
isQuickType(type) {
|
|
235
|
+
return idl.asPromise(type) == undefined;
|
|
236
|
+
}
|
|
237
|
+
tryWriteQuick(method) {
|
|
238
|
+
var _a;
|
|
239
|
+
if ((_a = method.modifiers) === null || _a === void 0 ? void 0 : _a.includes(MethodModifier.THROWS))
|
|
240
|
+
return;
|
|
241
|
+
if (false && this.isDirectType(method.signature.returnType) && method.signature.args.every((type) => this.isDirectType(type))) {
|
|
242
|
+
this.print('@ani.unsafe.Direct');
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
if (this.isQuickType(method.signature.returnType)) {
|
|
246
|
+
this.print('@ani.unsafe.Quick');
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
writeNativeMethodDeclaration(method) {
|
|
251
|
+
if (method.signature.returnType === IDLThisType) {
|
|
252
|
+
throw new Error('static method can not return this!');
|
|
253
|
+
}
|
|
254
|
+
this.tryWriteQuick(method);
|
|
255
|
+
this.writeMethodDeclaration(method.name, method.signature, [MethodModifier.STATIC, MethodModifier.NATIVE]);
|
|
256
|
+
}
|
|
226
257
|
writeProperty(propName, propType) {
|
|
227
258
|
throw new Error("writeProperty for ArkTS is not implemented yet.");
|
|
228
259
|
}
|
|
@@ -289,6 +320,9 @@ export class ETSLanguageWriter extends TSLanguageWriter {
|
|
|
289
320
|
if (convertor instanceof InterfaceConvertor || convertor instanceof MaterializedClassConvertor) {
|
|
290
321
|
return makeInterfaceTypeCheckerCall(value, this.getNodeName(convertor.idlType), convertor.declaration.properties.filter(it => !it.isStatic).map(it => it.name), duplicateMembers, this);
|
|
291
322
|
}
|
|
323
|
+
if (convertor instanceof BufferConvertor) {
|
|
324
|
+
return makeInterfaceTypeCheckerCall(value, this.getNodeName(convertor.idlType), [], new Set(), this);
|
|
325
|
+
}
|
|
292
326
|
if (convertor instanceof AggregateConvertor) {
|
|
293
327
|
return makeInterfaceTypeCheckerCall(value, convertor.aliasName !== undefined ? convertor.aliasName : this.getNodeName(convertor.idlType), convertor.members.map(it => it[0]), duplicateMembers, this);
|
|
294
328
|
}
|
|
@@ -35,10 +35,10 @@ export declare class JavaLanguageWriter extends CLikeLanguageWriter {
|
|
|
35
35
|
resolver?: ReferenceResolver;
|
|
36
36
|
}): LanguageWriter;
|
|
37
37
|
writeClass(name: string, op: (writer: this) => void, superClass?: string, interfaces?: string[], generics?: string[], isDeclared?: boolean, isExport?: boolean): void;
|
|
38
|
-
writeInterface(name: string, op: (writer: this) => void, superInterfaces?: string[]): void;
|
|
38
|
+
writeInterface(name: string, op: (writer: this) => void, superInterfaces?: string[], generics?: string[]): void;
|
|
39
39
|
writeMethodCall(receiver: string, method: string, params: string[], nullable?: boolean): void;
|
|
40
40
|
writeFieldDeclaration(name: string, type: idl.IDLType, modifiers: FieldModifier[] | undefined, optional: boolean, initExpr?: LanguageExpression): void;
|
|
41
|
-
writeNativeMethodDeclaration(
|
|
41
|
+
writeNativeMethodDeclaration(method: Method): void;
|
|
42
42
|
writeConstructorImplementation(className: string, signature: MethodSignature, op: (writer: this) => void, superCall?: Method, modifiers?: MethodModifier[]): void;
|
|
43
43
|
writeProperty(propName: string, propType: idl.IDLType): void;
|
|
44
44
|
writeTypeDeclaration(decl: idl.IDLTypedef): void;
|
|
@@ -116,7 +116,7 @@ export class JavaLanguageWriter extends CLikeLanguageWriter {
|
|
|
116
116
|
this.popIndent();
|
|
117
117
|
this.printer.print(`}`);
|
|
118
118
|
}
|
|
119
|
-
writeInterface(name, op, superInterfaces) {
|
|
119
|
+
writeInterface(name, op, superInterfaces, generics) {
|
|
120
120
|
let extendsClause = superInterfaces ? ` extends ${superInterfaces.join(",")}` : '';
|
|
121
121
|
this.printer.print(`interface ${name}${extendsClause} {`);
|
|
122
122
|
this.pushIndent();
|
|
@@ -136,8 +136,8 @@ export class JavaLanguageWriter extends CLikeLanguageWriter {
|
|
|
136
136
|
let prefix = this.makeFieldModifiersList(modifiers);
|
|
137
137
|
this.printer.print(`${prefix} ${(this.getNodeName(type))} ${name}${initExpr ? ` = ${initExpr.asString()}` : ""};`);
|
|
138
138
|
}
|
|
139
|
-
writeNativeMethodDeclaration(
|
|
140
|
-
this.writeMethodDeclaration(name, signature, [MethodModifier.STATIC, MethodModifier.NATIVE]);
|
|
139
|
+
writeNativeMethodDeclaration(method) {
|
|
140
|
+
this.writeMethodDeclaration(method.name, method.signature, [MethodModifier.STATIC, MethodModifier.NATIVE]);
|
|
141
141
|
}
|
|
142
142
|
writeConstructorImplementation(className, signature, op, superCall, modifiers) {
|
|
143
143
|
this.printer.print(`${modifiers ? modifiers.map((it) => MethodModifier[it].toLowerCase()).join(' ') : ''} ${className}(${signature.args.map((it, index) => `${this.getNodeName(it)} ${signature.argName(index)}`).join(", ")}) {`);
|
|
@@ -38,7 +38,7 @@ export declare class TSLanguageWriter extends LanguageWriter {
|
|
|
38
38
|
}): LanguageWriter;
|
|
39
39
|
getNodeName(type: idl.IDLNode): string;
|
|
40
40
|
writeClass(name: string, op: (writer: this) => void, superClass?: string, interfaces?: string[], generics?: string[], isDeclared?: boolean, isAbstract?: boolean): void;
|
|
41
|
-
writeInterface(name: string, op: (writer: this) => void, superInterfaces?: string[], isDeclared?: boolean): void;
|
|
41
|
+
writeInterface(name: string, op: (writer: this) => void, superInterfaces?: string[], generics?: string[], isDeclared?: boolean): void;
|
|
42
42
|
writeFunctionDeclaration(name: string, signature: MethodSignature): void;
|
|
43
43
|
writeFunctionImplementation(name: string, signature: MethodSignature, op: (writer: this) => void): void;
|
|
44
44
|
private generateFunctionDeclaration;
|
|
@@ -49,7 +49,7 @@ export declare class TSLanguageWriter extends LanguageWriter {
|
|
|
49
49
|
numberId: number;
|
|
50
50
|
}[]): void;
|
|
51
51
|
writeFieldDeclaration(name: string, type: idl.IDLType, modifiers: FieldModifier[] | undefined, optional: boolean, initExpr?: LanguageExpression): void;
|
|
52
|
-
writeNativeMethodDeclaration(
|
|
52
|
+
writeNativeMethodDeclaration(method: Method): void;
|
|
53
53
|
writeMethodDeclaration(name: string, signature: MethodSignature, modifiers?: MethodModifier[]): void;
|
|
54
54
|
writeConstructorImplementation(className: string, signature: MethodSignature, op: (writer: this) => void, superCall?: Method, modifiers?: MethodModifier[]): void;
|
|
55
55
|
writeMethodImplementation(method: Method, op: (writer: this) => void): void;
|
|
@@ -17,8 +17,9 @@ import { Language } from '../../Language';
|
|
|
17
17
|
import { IndentedPrinter } from "../../IndentedPrinter";
|
|
18
18
|
import { AssignStatement, BlockStatement, CheckOptionalStatement, ExpressionStatement, FieldModifier, IfStatement, LambdaExpression, LanguageWriter, Method, MethodModifier, NamedMethodSignature, NaryOpExpression, ReturnStatement, StringExpression } from "../LanguageWriter";
|
|
19
19
|
import { RuntimeType } from "../common";
|
|
20
|
-
import { throwException } from "../../util";
|
|
20
|
+
import { rightmostIndexOf, throwException } from "../../util";
|
|
21
21
|
import { TSKeywords } from '../../languageSpecificKeywords';
|
|
22
|
+
import { isOptionalType } from "../../idl";
|
|
22
23
|
////////////////////////////////////////////////////////////////
|
|
23
24
|
// EXPRESSIONS //
|
|
24
25
|
////////////////////////////////////////////////////////////////
|
|
@@ -155,9 +156,10 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
155
156
|
this.popIndent();
|
|
156
157
|
this.printer.print(`}`);
|
|
157
158
|
}
|
|
158
|
-
writeInterface(name, op, superInterfaces, isDeclared) {
|
|
159
|
+
writeInterface(name, op, superInterfaces, generics, isDeclared) {
|
|
160
|
+
const genericsClause = (generics === null || generics === void 0 ? void 0 : generics.length) ? `<${generics.join(", ")}>` : '';
|
|
159
161
|
let extendsClause = superInterfaces ? ` extends ${superInterfaces.join(",")}` : '';
|
|
160
|
-
this.printer.print(`export ${isDeclared ? "declare " : ""}interface ${name}${extendsClause} {`);
|
|
162
|
+
this.printer.print(`export ${isDeclared ? "declare " : ""}interface ${name}${genericsClause}${extendsClause} {`);
|
|
161
163
|
this.pushIndent();
|
|
162
164
|
op(this);
|
|
163
165
|
this.popIndent();
|
|
@@ -174,7 +176,11 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
174
176
|
this.printer.print('}');
|
|
175
177
|
}
|
|
176
178
|
generateFunctionDeclaration(name, signature) {
|
|
177
|
-
const
|
|
179
|
+
const rightmostRegularParameterIndex = rightmostIndexOf(signature.args, it => !isOptionalType(it));
|
|
180
|
+
const args = signature.args.map((it, index) => {
|
|
181
|
+
const optionalToken = idl.isOptionalType(it) && index > rightmostRegularParameterIndex ? '?' : '';
|
|
182
|
+
return `${signature.argName(index)}${optionalToken}: ${this.getNodeName(it)}`;
|
|
183
|
+
});
|
|
178
184
|
const returnType = this.getNodeName(signature.returnType);
|
|
179
185
|
return `export function ${name}(${args.join(", ")}): ${returnType}`;
|
|
180
186
|
}
|
|
@@ -202,7 +208,9 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
202
208
|
prefix += " ";
|
|
203
209
|
this.printer.print(`${prefix}${name}${optional ? "?" : ""}: ${this.getNodeName(type)}${init}`);
|
|
204
210
|
}
|
|
205
|
-
writeNativeMethodDeclaration(
|
|
211
|
+
writeNativeMethodDeclaration(method) {
|
|
212
|
+
let name = method.name;
|
|
213
|
+
let signature = method.signature;
|
|
206
214
|
this.writeMethodImplementation(new Method(name, signature, [MethodModifier.STATIC]), writer => {
|
|
207
215
|
const selfCallExpression = writer.makeFunctionCall(`this.${name}`, signature.args.map((_, i) => writer.makeString(this.escapeKeyword(signature.argName(i)))));
|
|
208
216
|
writer.writeStatement(new IfStatement(new NaryOpExpression("==", [writer.makeFunctionCall("this._LoadOnce", []), writer.makeString("true")]), new BlockStatement([
|
|
@@ -272,7 +280,7 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
272
280
|
canBeOptional.reverse();
|
|
273
281
|
const isOptional = signature.args.map((it, i) => idl.isOptionalType(it) && canBeOptional[i] && !isSetter);
|
|
274
282
|
const normalizedArgs = signature.args.map((it, i) => idl.isOptionalType(it) && isOptional[i] ? idl.maybeUnwrapOptionalType(it) : it);
|
|
275
|
-
this.printer.print(`${prefix}${name}${typeParams}(${normalizedArgs.map((it, index) => `${this.escapeKeyword(signature.argName(index))}${isOptional[index] ? "?" : ""}: ${this.getNodeName(it)}${signature.argDefault(index) ? ' = ' + signature.argDefault(index) : ""}`).join(", ")})${needReturn ? ": " + this.getNodeName(signature.returnType) : ""}
|
|
283
|
+
this.printer.print(`${prefix}${name}${typeParams}(${normalizedArgs.map((it, index) => `${this.escapeKeyword(signature.argName(index))}${isOptional[index] ? "?" : ""}: ${this.getNodeName(it)}${signature.argDefault(index) ? ' = ' + signature.argDefault(index) : ""}`).join(", ")})${needReturn ? ": " + this.getNodeName(signature.returnType) : ""}${needBracket ? " {" : ""}`);
|
|
276
284
|
}
|
|
277
285
|
makeNull() {
|
|
278
286
|
return new StringExpression("undefined");
|
|
@@ -364,7 +372,7 @@ export class TSLanguageWriter extends LanguageWriter {
|
|
|
364
372
|
return this.makeAssign(receiver, undefined, this.makeString(`[${fields.map(it => `${it}!`).join(",")}]`), false);
|
|
365
373
|
}
|
|
366
374
|
get supportedModifiers() {
|
|
367
|
-
return [MethodModifier.PUBLIC, MethodModifier.PRIVATE, MethodModifier.STATIC];
|
|
375
|
+
return [MethodModifier.PUBLIC, MethodModifier.PRIVATE, MethodModifier.PROTECTED, MethodModifier.STATIC];
|
|
368
376
|
}
|
|
369
377
|
get supportedFieldModifiers() {
|
|
370
378
|
return [FieldModifier.PUBLIC, FieldModifier.PRIVATE, FieldModifier.PROTECTED, FieldModifier.READONLY, FieldModifier.STATIC];
|