brighterscript 1.0.0-alpha.17 → 1.0.0-alpha.18
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/CHANGELOG.md +18 -0
- package/dist/DiagnosticMessages.d.ts +16 -1
- package/dist/DiagnosticMessages.js +15 -0
- package/dist/DiagnosticMessages.js.map +1 -1
- package/dist/Scope.d.ts +58 -8
- package/dist/Scope.js +128 -16
- package/dist/Scope.js.map +1 -1
- package/dist/astUtils/reflection.d.ts +6 -4
- package/dist/astUtils/reflection.js +14 -6
- package/dist/astUtils/reflection.js.map +1 -1
- package/dist/astUtils/reflection.spec.js +10 -0
- package/dist/astUtils/reflection.spec.js.map +1 -1
- package/dist/astUtils/visitors.d.ts +4 -1
- package/dist/astUtils/visitors.js.map +1 -1
- package/dist/files/BrsFile.Class.spec.js +2 -2
- package/dist/files/BrsFile.Class.spec.js.map +1 -1
- package/dist/files/BrsFile.d.ts +1 -0
- package/dist/files/BrsFile.js +65 -39
- package/dist/files/BrsFile.js.map +1 -1
- package/dist/files/BrsFile.spec.js +16 -3
- package/dist/files/BrsFile.spec.js.map +1 -1
- package/dist/globalCallables.js +79 -79
- package/dist/globalCallables.js.map +1 -1
- package/dist/interfaces.d.ts +43 -4
- package/dist/parser/Expression.d.ts +8 -3
- package/dist/parser/Expression.js +15 -5
- package/dist/parser/Expression.js.map +1 -1
- package/dist/parser/Parser.Class.spec.js +5 -5
- package/dist/parser/Parser.Class.spec.js.map +1 -1
- package/dist/parser/Parser.d.ts +2 -5
- package/dist/parser/Parser.js +105 -105
- package/dist/parser/Parser.js.map +1 -1
- package/dist/parser/Parser.spec.js +4 -4
- package/dist/parser/Parser.spec.js.map +1 -1
- package/dist/parser/SGTypes.d.ts +2 -2
- package/dist/parser/SGTypes.js +2 -2
- package/dist/parser/SGTypes.js.map +1 -1
- package/dist/parser/Statement.d.ts +52 -36
- package/dist/parser/Statement.js +109 -76
- package/dist/parser/Statement.js.map +1 -1
- package/dist/parser/tests/statement/InterfaceStatement.spec.js +181 -0
- package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -1
- package/dist/parser/tests/statement/TryCatch.spec.js +7 -5
- package/dist/parser/tests/statement/TryCatch.spec.js.map +1 -1
- package/dist/types/ArrayType.js +4 -1
- package/dist/types/ArrayType.js.map +1 -1
- package/dist/types/ArrayType.spec.js +3 -1
- package/dist/types/ArrayType.spec.js.map +1 -1
- package/dist/types/BooleanType.js +2 -1
- package/dist/types/BooleanType.js.map +1 -1
- package/dist/types/BooleanType.spec.js +3 -1
- package/dist/types/BooleanType.spec.js.map +1 -1
- package/dist/types/BscType.d.ts +1 -0
- package/dist/types/BscType.js +16 -1
- package/dist/types/BscType.js.map +1 -1
- package/dist/types/CustomType.js +10 -0
- package/dist/types/CustomType.js.map +1 -1
- package/dist/types/DoubleType.js +2 -1
- package/dist/types/DoubleType.js.map +1 -1
- package/dist/types/DoubleType.spec.js +3 -1
- package/dist/types/DoubleType.spec.js.map +1 -1
- package/dist/types/FloatType.js +2 -1
- package/dist/types/FloatType.js.map +1 -1
- package/dist/types/FloatType.spec.js +2 -0
- package/dist/types/FloatType.spec.js.map +1 -1
- package/dist/types/FunctionType.d.ts +3 -22
- package/dist/types/FunctionType.js +8 -68
- package/dist/types/FunctionType.js.map +1 -1
- package/dist/types/IntegerType.js +2 -1
- package/dist/types/IntegerType.js.map +1 -1
- package/dist/types/IntegerType.spec.js +3 -1
- package/dist/types/IntegerType.spec.js.map +1 -1
- package/dist/types/InterfaceType.d.ts +13 -10
- package/dist/types/InterfaceType.js +33 -29
- package/dist/types/InterfaceType.js.map +1 -1
- package/dist/types/InterfaceType.spec.js +36 -16
- package/dist/types/InterfaceType.spec.js.map +1 -1
- package/dist/types/InvalidType.js +2 -1
- package/dist/types/InvalidType.js.map +1 -1
- package/dist/types/InvalidType.spec.js +2 -0
- package/dist/types/InvalidType.spec.js.map +1 -1
- package/dist/types/LazyType.js +4 -0
- package/dist/types/LazyType.js.map +1 -1
- package/dist/types/LongIntegerType.js +2 -1
- package/dist/types/LongIntegerType.js.map +1 -1
- package/dist/types/LongIntegerType.spec.js +2 -0
- package/dist/types/LongIntegerType.spec.js.map +1 -1
- package/dist/types/StringType.js +2 -1
- package/dist/types/StringType.js.map +1 -1
- package/dist/types/StringType.spec.js +2 -0
- package/dist/types/StringType.spec.js.map +1 -1
- package/dist/types/TypedFunctionType.d.ts +28 -0
- package/dist/types/TypedFunctionType.js +88 -0
- package/dist/types/TypedFunctionType.js.map +1 -0
- package/dist/types/{FunctionType.spec.d.ts → TypedFunctionType.spec.d.ts} +0 -0
- package/dist/types/TypedFunctionType.spec.js +37 -0
- package/dist/types/TypedFunctionType.spec.js.map +1 -0
- package/dist/types/helpers.js +7 -2
- package/dist/types/helpers.js.map +1 -1
- package/dist/util.d.ts +2 -2
- package/dist/util.js +5 -5
- package/dist/util.js.map +1 -1
- package/dist/validators/ClassValidator.d.ts +14 -1
- package/dist/validators/ClassValidator.js +127 -80
- package/dist/validators/ClassValidator.js.map +1 -1
- package/package.json +1 -1
- package/dist/types/FunctionType.spec.js +0 -35
- package/dist/types/FunctionType.spec.js.map +0 -1
- package/dist/types/UniversalFunctionType.d.ts +0 -9
- package/dist/types/UniversalFunctionType.js +0 -25
- package/dist/types/UniversalFunctionType.js.map +0 -1
|
@@ -3,82 +3,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.FunctionType = void 0;
|
|
4
4
|
const reflection_1 = require("../astUtils/reflection");
|
|
5
5
|
const DynamicType_1 = require("./DynamicType");
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
isSub = false, params = [], isNew = false, isVariadic = false) {
|
|
12
|
-
this.returnType = returnType;
|
|
13
|
-
this.isSub = isSub;
|
|
14
|
-
this.params = params;
|
|
15
|
-
this.isNew = isNew;
|
|
16
|
-
this.isVariadic = isVariadic;
|
|
6
|
+
const TypedFunctionType_1 = require("./TypedFunctionType");
|
|
7
|
+
class FunctionType extends TypedFunctionType_1.TypedFunctionType {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(new DynamicType_1.DynamicType());
|
|
10
|
+
this.isVariadic = true;
|
|
17
11
|
}
|
|
18
12
|
setName(name) {
|
|
19
|
-
|
|
13
|
+
// noop
|
|
20
14
|
return this;
|
|
21
15
|
}
|
|
22
16
|
addParameter(paramOrName, type, isOptional) {
|
|
23
|
-
|
|
24
|
-
this.params.push({
|
|
25
|
-
name: paramOrName,
|
|
26
|
-
type: type !== null && type !== void 0 ? type : new DynamicType_1.DynamicType(),
|
|
27
|
-
isOptional: isOptional === true ? true : false,
|
|
28
|
-
isRestArgument: false
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
this.params.push(paramOrName);
|
|
33
|
-
}
|
|
17
|
+
// noop
|
|
34
18
|
return this;
|
|
35
19
|
}
|
|
36
|
-
isAssignableTo(targetType, context) {
|
|
37
|
-
if ((0, reflection_1.isFunctionType)(targetType)) {
|
|
38
|
-
if (!targetType.isVariadic) {
|
|
39
|
-
//compare all parameters
|
|
40
|
-
let len = Math.max(this.params.length, targetType.params.length);
|
|
41
|
-
for (let i = 0; i < len; i++) {
|
|
42
|
-
let myParam = this.params[i];
|
|
43
|
-
let targetParam = targetType.params[i];
|
|
44
|
-
if (!myParam || !targetParam || !myParam.type.isAssignableTo(targetParam.type, context)) {
|
|
45
|
-
return false;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
//compare return type
|
|
50
|
-
if (!this.returnType || !targetType.returnType || !this.returnType.isAssignableTo(targetType.returnType, context)) {
|
|
51
|
-
return false;
|
|
52
|
-
}
|
|
53
|
-
//made it here, all params and return type are equivalent
|
|
54
|
-
return true;
|
|
55
|
-
}
|
|
56
|
-
else if ((0, reflection_1.isDynamicType)(targetType)) {
|
|
57
|
-
return true;
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
return false;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
isConvertibleTo(targetType, context) {
|
|
64
|
-
return this.isAssignableTo(targetType, context);
|
|
65
|
-
}
|
|
66
|
-
toString(context) {
|
|
67
|
-
var _a, _b;
|
|
68
|
-
let paramTexts = [];
|
|
69
|
-
for (let param of this.params) {
|
|
70
|
-
paramTexts.push(`${param.name}${param.isOptional ? '?' : ''} as ${param.type.toString(context)}`);
|
|
71
|
-
}
|
|
72
|
-
if (this.isNew) {
|
|
73
|
-
return `new ${(_a = this.name) !== null && _a !== void 0 ? _a : ''}(${paramTexts.join(', ')})`;
|
|
74
|
-
}
|
|
75
|
-
return `${this.isSub ? 'sub' : 'function'} ${(_b = this.name) !== null && _b !== void 0 ? _b : ''}(${paramTexts.join(', ')}) as ${this.returnType.toString(context)}`;
|
|
76
|
-
}
|
|
77
|
-
toTypeString() {
|
|
78
|
-
return 'Function';
|
|
79
|
-
}
|
|
80
20
|
equals(targetType, context) {
|
|
81
|
-
return ((0, reflection_1.isFunctionType)(targetType))
|
|
21
|
+
return ((0, reflection_1.isFunctionType)(targetType));
|
|
82
22
|
}
|
|
83
23
|
}
|
|
84
24
|
exports.FunctionType = FunctionType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FunctionType.js","sourceRoot":"","sources":["../../src/types/FunctionType.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"FunctionType.js","sourceRoot":"","sources":["../../src/types/FunctionType.ts"],"names":[],"mappings":";;;AAAA,uDAAwD;AAGxD,+CAA4C;AAC5C,2DAAwD;AAExD,MAAa,YAAa,SAAQ,qCAAiB;IAE/C;QAEI,KAAK,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAC3B,CAAC;IAEM,OAAO,CAAC,IAAY;QACvB,OAAO;QACP,OAAO,IAAI,CAAC;IAChB,CAAC;IACM,YAAY,CAAC,WAAmC,EAAE,IAAc,EAAE,UAAoB;QACzF,OAAO;QACP,OAAO,IAAI,CAAC;IAChB,CAAC;IAEM,MAAM,CAAC,UAAmB,EAAE,OAAqB;QACpD,OAAO,CAAC,IAAA,2BAAc,EAAC,UAAU,CAAC,CAAC,CAAC;IACxC,CAAC;CACJ;AApBD,oCAoBC"}
|
|
@@ -8,7 +8,8 @@ class IntegerType {
|
|
|
8
8
|
}
|
|
9
9
|
isAssignableTo(targetType) {
|
|
10
10
|
return ((0, reflection_1.isIntegerType)(targetType) ||
|
|
11
|
-
(0, reflection_1.isDynamicType)(targetType)
|
|
11
|
+
(0, reflection_1.isDynamicType)(targetType) ||
|
|
12
|
+
(0, reflection_1.isObjectType)(targetType));
|
|
12
13
|
}
|
|
13
14
|
isConvertibleTo(targetType) {
|
|
14
15
|
if ((0, reflection_1.isDynamicType)(targetType) ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntegerType.js","sourceRoot":"","sources":["../../src/types/IntegerType.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"IntegerType.js","sourceRoot":"","sources":["../../src/types/IntegerType.ts"],"names":[],"mappings":";;;AAAA,uDAAkI;AAIlI,MAAa,WAAW;IACpB,YACW,QAAiB;QAAjB,aAAQ,GAAR,QAAQ,CAAS;IACxB,CAAC;IAEE,cAAc,CAAC,UAAmB;QACrC,OAAO,CACH,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,yBAAY,EAAC,UAAU,CAAC,CAC3B,CAAC;IACN,CAAC;IAEM,eAAe,CAAC,UAAmB;QACtC,IACI,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,wBAAW,EAAC,UAAU,CAAC;YACvB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,8BAAiB,EAAC,UAAU,CAAC,EAC/B;YACE,OAAO,IAAI,CAAC;SACf;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;IAEM,QAAQ;;QACX,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,SAAS,CAAC;IACtC,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAEM,MAAM,CAAC,UAAmB;QAC7B,OAAO,IAAI,CAAC,QAAQ,EAAE,MAAK,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,QAAQ,EAAE,CAAA,CAAC;IACtD,CAAC;CACJ;AAtCD,kCAsCC"}
|
|
@@ -3,10 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const chai_1 = require("chai");
|
|
4
4
|
const DynamicType_1 = require("./DynamicType");
|
|
5
5
|
const IntegerType_1 = require("./IntegerType");
|
|
6
|
+
const ObjectType_1 = require("./ObjectType");
|
|
6
7
|
describe('IntegerType', () => {
|
|
7
|
-
it('is
|
|
8
|
+
it('is assignable to other proper types', () => {
|
|
8
9
|
(0, chai_1.expect)(new IntegerType_1.IntegerType().isAssignableTo(new IntegerType_1.IntegerType())).to.be.true;
|
|
9
10
|
(0, chai_1.expect)(new IntegerType_1.IntegerType().isAssignableTo(new DynamicType_1.DynamicType())).to.be.true;
|
|
11
|
+
(0, chai_1.expect)(new IntegerType_1.IntegerType().isAssignableTo(new ObjectType_1.ObjectType())).to.be.true;
|
|
10
12
|
});
|
|
11
13
|
});
|
|
12
14
|
//# sourceMappingURL=IntegerType.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IntegerType.spec.js","sourceRoot":"","sources":["../../src/types/IntegerType.spec.ts"],"names":[],"mappings":";;AAAA,+BAA8B;
|
|
1
|
+
{"version":3,"file":"IntegerType.spec.js","sourceRoot":"","sources":["../../src/types/IntegerType.spec.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAC9B,+CAA4C;AAC5C,+CAA4C;AAC5C,6CAA0C;AAE1C,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC3C,IAAA,aAAM,EAAC,IAAI,yBAAW,EAAE,CAAC,cAAc,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACvE,IAAA,aAAM,EAAC,IAAI,yBAAW,EAAE,CAAC,cAAc,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACvE,IAAA,aAAM,EAAC,IAAI,yBAAW,EAAE,CAAC,cAAc,CAAC,IAAI,uBAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC1E,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
constructor(members: Map<string, BscType>);
|
|
5
|
-
/**
|
|
6
|
-
* The name of the interface. Can be null.
|
|
7
|
-
*/
|
|
1
|
+
import type { SymbolTable } from '../SymbolTable';
|
|
2
|
+
import type { BscType, SymbolContainer, TypeContext } from './BscType';
|
|
3
|
+
export declare class InterfaceType implements BscType, SymbolContainer {
|
|
8
4
|
name: string;
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
memberTable: SymbolTable;
|
|
6
|
+
constructor(name: string, memberTable?: SymbolTable);
|
|
7
|
+
isAssignableTo(targetType: BscType, context?: TypeContext): any;
|
|
8
|
+
isConvertibleTo(targetType: BscType): any;
|
|
11
9
|
toString(): string;
|
|
10
|
+
/**
|
|
11
|
+
* Gets a string representation of the Interface that looks like javascript
|
|
12
|
+
* @returns {string}
|
|
13
|
+
*/
|
|
14
|
+
toJsString(): string;
|
|
12
15
|
toTypeString(): string;
|
|
13
|
-
equals(targetType: BscType): boolean;
|
|
16
|
+
equals(targetType: BscType, context?: TypeContext): boolean;
|
|
14
17
|
}
|
|
@@ -2,44 +2,51 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.InterfaceType = void 0;
|
|
4
4
|
const reflection_1 = require("../astUtils/reflection");
|
|
5
|
+
const BscType_1 = require("./BscType");
|
|
5
6
|
class InterfaceType {
|
|
6
|
-
constructor(
|
|
7
|
-
this.
|
|
7
|
+
constructor(name, memberTable = null) {
|
|
8
|
+
this.name = name;
|
|
9
|
+
this.memberTable = memberTable;
|
|
8
10
|
}
|
|
9
|
-
isAssignableTo(targetType) {
|
|
10
|
-
|
|
11
|
-
if ((0, reflection_1.
|
|
12
|
-
for (const [targetMemberName, targetMemberType] of targetType.members) {
|
|
13
|
-
//we don't have the target member
|
|
14
|
-
if (!this.members.has(targetMemberName)) {
|
|
15
|
-
return false;
|
|
16
|
-
}
|
|
17
|
-
//our member's type is not assignable to the target member type
|
|
18
|
-
if (!this.members.get(targetMemberName).isAssignableTo(targetMemberType)) {
|
|
19
|
-
return false;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
//we have all of the target member's types. we are assignable!
|
|
11
|
+
isAssignableTo(targetType, context) {
|
|
12
|
+
var _a;
|
|
13
|
+
if ((0, reflection_1.isObjectType)(targetType)) {
|
|
23
14
|
return true;
|
|
24
|
-
//we are always assignable to dynamic or object
|
|
25
15
|
}
|
|
26
|
-
|
|
16
|
+
const ancestorTypes = (_a = context === null || context === void 0 ? void 0 : context.scope) === null || _a === void 0 ? void 0 : _a.getAncestorTypeListByContext(this, context);
|
|
17
|
+
if (ancestorTypes === null || ancestorTypes === void 0 ? void 0 : ancestorTypes.find(ancestorType => targetType.equals(ancestorType, context))) {
|
|
27
18
|
return true;
|
|
28
|
-
//not assignable to any other object types
|
|
29
19
|
}
|
|
30
|
-
|
|
31
|
-
|
|
20
|
+
if (this.memberTable && targetType.memberTable) {
|
|
21
|
+
// both have symbol tables, so check if this interface has all the members of the target
|
|
22
|
+
return (0, BscType_1.checkAssignabilityToInterface)(this, targetType, context);
|
|
32
23
|
}
|
|
24
|
+
return (this.equals(targetType, context) ||
|
|
25
|
+
(0, reflection_1.isObjectType)(targetType) ||
|
|
26
|
+
(0, reflection_1.isDynamicType)(targetType));
|
|
33
27
|
}
|
|
34
28
|
isConvertibleTo(targetType) {
|
|
35
29
|
return this.isAssignableTo(targetType);
|
|
36
30
|
}
|
|
37
31
|
toString() {
|
|
32
|
+
return this.name;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Gets a string representation of the Interface that looks like javascript
|
|
36
|
+
* @returns {string}
|
|
37
|
+
*/
|
|
38
|
+
toJsString() {
|
|
39
|
+
var _a;
|
|
38
40
|
let result = '{';
|
|
39
|
-
|
|
40
|
-
|
|
41
|
+
const memberSymbols = (((_a = this.memberTable) === null || _a === void 0 ? void 0 : _a.getAllSymbols()) || []).sort((a, b) => a.name.localeCompare(b.name));
|
|
42
|
+
for (const symbol of memberSymbols) {
|
|
43
|
+
let symbolTypeString = symbol.type.toString();
|
|
44
|
+
if ((0, reflection_1.isInterfaceType)(symbol.type)) {
|
|
45
|
+
symbolTypeString = symbol.type.toJsString();
|
|
46
|
+
}
|
|
47
|
+
result += ' ' + symbol.name + ': ' + symbolTypeString + ';';
|
|
41
48
|
}
|
|
42
|
-
if (
|
|
49
|
+
if (memberSymbols.length > 0) {
|
|
43
50
|
result += ' ';
|
|
44
51
|
}
|
|
45
52
|
return result + '}';
|
|
@@ -47,12 +54,9 @@ class InterfaceType {
|
|
|
47
54
|
toTypeString() {
|
|
48
55
|
return 'object';
|
|
49
56
|
}
|
|
50
|
-
equals(targetType) {
|
|
57
|
+
equals(targetType, context) {
|
|
51
58
|
if ((0, reflection_1.isInterfaceType)(targetType)) {
|
|
52
|
-
|
|
53
|
-
return false;
|
|
54
|
-
}
|
|
55
|
-
return targetType.isAssignableTo(this);
|
|
59
|
+
return this.isAssignableTo(targetType, context) && targetType.isAssignableTo(this, context);
|
|
56
60
|
}
|
|
57
61
|
return false;
|
|
58
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InterfaceType.js","sourceRoot":"","sources":["../../src/types/InterfaceType.ts"],"names":[],"mappings":";;;AAAA,uDAAsF;AAGtF,MAAa,aAAa;IACtB,YACW,
|
|
1
|
+
{"version":3,"file":"InterfaceType.js","sourceRoot":"","sources":["../../src/types/InterfaceType.ts"],"names":[],"mappings":";;;AAAA,uDAAsF;AAGtF,uCAA0D;AAE1D,MAAa,aAAa;IACtB,YACW,IAAY,EAAS,cAA2B,IAAI;QAApD,SAAI,GAAJ,IAAI,CAAQ;QAAS,gBAAW,GAAX,WAAW,CAAoB;IAG/D,CAAC;IAEM,cAAc,CAAC,UAAmB,EAAE,OAAqB;;QAC5D,IAAI,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE;YAC1B,OAAO,IAAI,CAAC;SACf;QACD,MAAM,aAAa,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,0CAAE,4BAA4B,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAClF,IAAI,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,EAAE;YAC/E,OAAO,IAAI,CAAC;SACf;QACD,IAAI,IAAI,CAAC,WAAW,IAAI,UAAU,CAAC,WAAW,EAAE;YAC5C,wFAAwF;YACxF,OAAO,IAAA,uCAA6B,EAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;SACnE;QACD,OAAO,CACH,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC;YAChC,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,0BAAa,EAAC,UAAU,CAAC,CAC5B,CAAC;IACN,CAAC;IAEM,eAAe,CAAC,UAAmB;QACtC,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAEM,QAAQ;QACX,OAAO,IAAI,CAAC,IAAI,CAAC;IACrB,CAAC;IAED;;;OAGG;IACI,UAAU;;QACb,IAAI,MAAM,GAAG,GAAG,CAAC;QACjB,MAAM,aAAa,GAAG,CAAC,CAAA,MAAA,IAAI,CAAC,WAAW,0CAAE,aAAa,EAAE,KAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7G,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE;YAChC,IAAI,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9C,IAAI,IAAA,4BAAe,EAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBAC9B,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;aAC/C;YACD,MAAM,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,GAAG,IAAI,GAAG,gBAAgB,GAAG,GAAG,CAAC;SAC/D;QACD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1B,MAAM,IAAI,GAAG,CAAC;SACjB;QACD,OAAO,MAAM,GAAG,GAAG,CAAC;IACxB,CAAC;IAEM,YAAY;QACf,OAAO,QAAQ,CAAC;IACpB,CAAC;IAEM,MAAM,CAAC,UAAmB,EAAE,OAAqB;QAEpD,IAAI,IAAA,4BAAe,EAAC,UAAU,CAAC,EAAE;YAC7B,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SAC/F;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;CAEJ;AAlED,sCAkEC"}
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const chai_1 = require("chai");
|
|
4
4
|
const sinon_1 = require("sinon");
|
|
5
|
+
const SymbolTable_1 = require("../SymbolTable");
|
|
6
|
+
const CustomType_1 = require("./CustomType");
|
|
5
7
|
const DynamicType_1 = require("./DynamicType");
|
|
6
8
|
const IntegerType_1 = require("./IntegerType");
|
|
7
9
|
const InterfaceType_1 = require("./InterfaceType");
|
|
@@ -10,10 +12,10 @@ const StringType_1 = require("./StringType");
|
|
|
10
12
|
describe('InterfaceType', () => {
|
|
11
13
|
describe('toString', () => {
|
|
12
14
|
it('returns empty curly braces when no members', () => {
|
|
13
|
-
(0, chai_1.expect)(iface({}).
|
|
15
|
+
(0, chai_1.expect)(iface({}).toJsString()).to.eql('{}');
|
|
14
16
|
});
|
|
15
17
|
it('includes member types', () => {
|
|
16
|
-
(0, chai_1.expect)(iface({ name: new StringType_1.StringType() }).
|
|
18
|
+
(0, chai_1.expect)(iface({ name: new StringType_1.StringType() }).toJsString()).to.eql('{ name: string; }');
|
|
17
19
|
});
|
|
18
20
|
it('includes nested object types', () => {
|
|
19
21
|
(0, chai_1.expect)(iface({
|
|
@@ -21,7 +23,7 @@ describe('InterfaceType', () => {
|
|
|
21
23
|
parent: iface({
|
|
22
24
|
age: new IntegerType_1.IntegerType()
|
|
23
25
|
})
|
|
24
|
-
}).
|
|
26
|
+
}).toJsString()).to.eql('{ name: string; parent: { age: integer; }; }');
|
|
25
27
|
});
|
|
26
28
|
});
|
|
27
29
|
describe('isConvertibleTo', () => {
|
|
@@ -40,6 +42,9 @@ describe('InterfaceType', () => {
|
|
|
40
42
|
it('does not match inequal objects', () => {
|
|
41
43
|
(0, chai_1.expect)(iface({ name: new StringType_1.StringType() }).equals(iface({ name: new IntegerType_1.IntegerType() }))).to.be.false;
|
|
42
44
|
});
|
|
45
|
+
it('ignores order', () => {
|
|
46
|
+
(0, chai_1.expect)(iface({ name: new StringType_1.StringType(), age: new IntegerType_1.IntegerType(), data: new CustomType_1.CustomType('data') }).equals(iface({ age: new IntegerType_1.IntegerType(), data: new CustomType_1.CustomType('data'), name: new StringType_1.StringType() }))).to.be.true;
|
|
47
|
+
});
|
|
43
48
|
});
|
|
44
49
|
describe('isAssignableTo', () => {
|
|
45
50
|
it('rejects being assignable to other types', () => {
|
|
@@ -71,13 +76,15 @@ describe('InterfaceType', () => {
|
|
|
71
76
|
});
|
|
72
77
|
});
|
|
73
78
|
it('matches properties in mismatched order', () => {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
const symbolTable1 = makeSymbolTable({
|
|
80
|
+
name: new StringType_1.StringType(),
|
|
81
|
+
age: new IntegerType_1.IntegerType()
|
|
82
|
+
});
|
|
83
|
+
const symbolTable2 = makeSymbolTable({
|
|
84
|
+
age: new IntegerType_1.IntegerType(),
|
|
85
|
+
name: new StringType_1.StringType()
|
|
86
|
+
});
|
|
87
|
+
(0, chai_1.expect)(new InterfaceType_1.InterfaceType('interfaceOne', symbolTable1).isAssignableTo(new InterfaceType_1.InterfaceType('interfaceTwo', symbolTable2))).to.be.true;
|
|
81
88
|
});
|
|
82
89
|
it('rejects with member having mismatched type', () => {
|
|
83
90
|
expectNotAssignable({
|
|
@@ -122,7 +129,7 @@ describe('InterfaceType', () => {
|
|
|
122
129
|
})
|
|
123
130
|
});
|
|
124
131
|
});
|
|
125
|
-
it('accepts with source member having
|
|
132
|
+
it('accepts with source member having dynamic prop type', () => {
|
|
126
133
|
expectAssignable({
|
|
127
134
|
parent: iface({
|
|
128
135
|
name: new StringType_1.StringType(),
|
|
@@ -132,7 +139,10 @@ describe('InterfaceType', () => {
|
|
|
132
139
|
parent: new DynamicType_1.DynamicType()
|
|
133
140
|
});
|
|
134
141
|
});
|
|
135
|
-
it('accepts with
|
|
142
|
+
it('accepts with source member having dynamic prop type', () => {
|
|
143
|
+
(0, chai_1.expect)(iface({ name: new StringType_1.StringType() }).isAssignableTo(new ObjectType_1.ObjectType())).to.be.true;
|
|
144
|
+
});
|
|
145
|
+
it('accepts with target member having dynamic prop type', () => {
|
|
136
146
|
expectAssignable({
|
|
137
147
|
parent: new DynamicType_1.DynamicType()
|
|
138
148
|
}, {
|
|
@@ -154,21 +164,31 @@ describe('InterfaceType', () => {
|
|
|
154
164
|
});
|
|
155
165
|
});
|
|
156
166
|
});
|
|
157
|
-
|
|
158
|
-
|
|
167
|
+
let ifaceCount = 0;
|
|
168
|
+
function iface(members, name) {
|
|
169
|
+
name = name !== null && name !== void 0 ? name : 'SomeIFace' + ifaceCount;
|
|
170
|
+
ifaceCount++;
|
|
171
|
+
return new InterfaceType_1.InterfaceType(name, makeSymbolTable(members));
|
|
172
|
+
}
|
|
173
|
+
function makeSymbolTable(members) {
|
|
174
|
+
const symbols = new SymbolTable_1.SymbolTable();
|
|
175
|
+
for (const key in members) {
|
|
176
|
+
symbols.addSymbol(key, null, members[key]);
|
|
177
|
+
}
|
|
178
|
+
return symbols;
|
|
159
179
|
}
|
|
160
180
|
function expectAssignable(targetMembers, sourceMembers) {
|
|
161
181
|
const targetIface = iface(targetMembers);
|
|
162
182
|
const sourceIface = iface(sourceMembers);
|
|
163
183
|
if (!sourceIface.isAssignableTo(targetIface)) {
|
|
164
|
-
sinon_1.assert.fail(`expected type ${targetIface.
|
|
184
|
+
sinon_1.assert.fail(`expected type ${targetIface.toJsString()} to be assignable to type ${sourceIface.toJsString()}`);
|
|
165
185
|
}
|
|
166
186
|
}
|
|
167
187
|
function expectNotAssignable(targetMembers, sourceMembers) {
|
|
168
188
|
const targetIface = iface(targetMembers);
|
|
169
189
|
const sourceIface = iface(sourceMembers);
|
|
170
190
|
if (sourceIface.isAssignableTo(targetIface)) {
|
|
171
|
-
sinon_1.assert.fail(`expected type ${targetIface.
|
|
191
|
+
sinon_1.assert.fail(`expected type ${targetIface.toJsString()} to not be assignable to type ${sourceIface.toJsString()}`);
|
|
172
192
|
}
|
|
173
193
|
}
|
|
174
194
|
//# sourceMappingURL=InterfaceType.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InterfaceType.spec.js","sourceRoot":"","sources":["../../src/types/InterfaceType.spec.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAC9B,iCAA+B;
|
|
1
|
+
{"version":3,"file":"InterfaceType.spec.js","sourceRoot":"","sources":["../../src/types/InterfaceType.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,8 @@ class InvalidType {
|
|
|
8
8
|
}
|
|
9
9
|
isAssignableTo(targetType) {
|
|
10
10
|
return ((0, reflection_1.isInvalidType)(targetType) ||
|
|
11
|
-
(0, reflection_1.isDynamicType)(targetType)
|
|
11
|
+
(0, reflection_1.isDynamicType)(targetType) ||
|
|
12
|
+
(0, reflection_1.isObjectType)(targetType));
|
|
12
13
|
}
|
|
13
14
|
isConvertibleTo(targetType) {
|
|
14
15
|
return this.isAssignableTo(targetType) || (0, reflection_1.isCustomType)(targetType) || (0, reflection_1.isObjectType)(targetType);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InvalidType.js","sourceRoot":"","sources":["../../src/types/InvalidType.ts"],"names":[],"mappings":";;;AAAA,uDAAkG;AAGlG,MAAa,WAAW;IACpB,YACW,QAAiB;QAAjB,aAAQ,GAAR,QAAQ,CAAS;IACxB,CAAC;IAEE,cAAc,CAAC,UAAmB;QACrC,OAAO,CACH,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,0BAAa,EAAC,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"InvalidType.js","sourceRoot":"","sources":["../../src/types/InvalidType.ts"],"names":[],"mappings":";;;AAAA,uDAAkG;AAGlG,MAAa,WAAW;IACpB,YACW,QAAiB;QAAjB,aAAQ,GAAR,QAAQ,CAAS;IACxB,CAAC;IAEE,cAAc,CAAC,UAAmB;QACrC,OAAO,CACH,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,yBAAY,EAAC,UAAU,CAAC,CAC3B,CAAC;IACN,CAAC;IAEM,eAAe,CAAC,UAAmB;QACtC,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,IAAA,yBAAY,EAAC,UAAU,CAAC,IAAI,IAAA,yBAAY,EAAC,UAAU,CAAC,CAAC;IACnG,CAAC;IAEM,QAAQ;;QACX,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,SAAS,CAAC;IACtC,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAEM,MAAM,CAAC,UAAmB;QAC7B,OAAO,IAAA,0BAAa,EAAC,UAAU,CAAC,CAAC;IACrC,CAAC;CACJ;AA5BD,kCA4BC"}
|
|
@@ -3,10 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const chai_1 = require("chai");
|
|
4
4
|
const DynamicType_1 = require("./DynamicType");
|
|
5
5
|
const InvalidType_1 = require("./InvalidType");
|
|
6
|
+
const ObjectType_1 = require("./ObjectType");
|
|
6
7
|
describe('InvalidType', () => {
|
|
7
8
|
it('is equivalent to invalid types', () => {
|
|
8
9
|
(0, chai_1.expect)(new InvalidType_1.InvalidType().isAssignableTo(new InvalidType_1.InvalidType())).to.be.true;
|
|
9
10
|
(0, chai_1.expect)(new InvalidType_1.InvalidType().isAssignableTo(new DynamicType_1.DynamicType())).to.be.true;
|
|
11
|
+
(0, chai_1.expect)(new InvalidType_1.InvalidType().isAssignableTo(new ObjectType_1.ObjectType())).to.be.true;
|
|
10
12
|
});
|
|
11
13
|
});
|
|
12
14
|
//# sourceMappingURL=InvalidType.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InvalidType.spec.js","sourceRoot":"","sources":["../../src/types/InvalidType.spec.ts"],"names":[],"mappings":";;AAAA,+BAA8B;
|
|
1
|
+
{"version":3,"file":"InvalidType.spec.js","sourceRoot":"","sources":["../../src/types/InvalidType.spec.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAC9B,+CAA4C;AAC5C,+CAA4C;AAC5C,6CAA0C;AAE1C,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACtC,IAAA,aAAM,EAAC,IAAI,yBAAW,EAAE,CAAC,cAAc,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACvE,IAAA,aAAM,EAAC,IAAI,yBAAW,EAAE,CAAC,cAAc,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACvE,IAAA,aAAM,EAAC,IAAI,yBAAW,EAAE,CAAC,cAAc,CAAC,IAAI,uBAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC1E,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
package/dist/types/LazyType.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.LazyType = void 0;
|
|
4
|
+
const reflection_1 = require("../astUtils/reflection");
|
|
4
5
|
/**
|
|
5
6
|
* A type whose actual type is not computed until requested.
|
|
6
7
|
* This is useful when the parser creates types in the middle of the file that depend on items further down in the file that haven't been parsed yet
|
|
@@ -16,6 +17,9 @@ class LazyType {
|
|
|
16
17
|
return this.factory(context);
|
|
17
18
|
}
|
|
18
19
|
isAssignableTo(targetType, context) {
|
|
20
|
+
if ((0, reflection_1.isObjectType)(targetType)) {
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
19
23
|
const foundType = this.getTypeFromContext(context);
|
|
20
24
|
return foundType === null || foundType === void 0 ? void 0 : foundType.isAssignableTo(targetType, context);
|
|
21
25
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LazyType.js","sourceRoot":"","sources":["../../src/types/LazyType.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"LazyType.js","sourceRoot":"","sources":["../../src/types/LazyType.ts"],"names":[],"mappings":";;;AAAA,uDAAsD;AAGtD;;;GAGG;AACH,MAAa,QAAQ;IACjB,YACY,OAA2C;QAA3C,YAAO,GAAP,OAAO,CAAoC;IAEvD,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;IACM,kBAAkB,CAAC,OAAqB;QAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAEM,cAAc,CAAC,UAAmB,EAAE,OAAqB;QAC5D,IAAI,IAAA,yBAAY,EAAC,UAAU,CAAC,EAAE;YAC1B,OAAO,IAAI,CAAC;SACf;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QACnD,OAAO,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAEM,eAAe,CAAC,UAAmB,EAAE,OAAqB;;QAC7D,OAAO,MAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,0CAAE,eAAe,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAClF,CAAC;IAEM,QAAQ,CAAC,OAAqB;;QACjC,OAAO,MAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,0CAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC/D,CAAC;IAEM,YAAY,CAAC,OAAqB;;QACrC,OAAO,MAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,0CAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IACnE,CAAC;IAEM,MAAM,CAAC,UAAmB,EAAE,OAAqB;;QACpD,OAAO,MAAA,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,0CAAE,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;CACJ;AApCD,4BAoCC"}
|
|
@@ -8,7 +8,8 @@ class LongIntegerType {
|
|
|
8
8
|
}
|
|
9
9
|
isAssignableTo(targetType) {
|
|
10
10
|
return ((0, reflection_1.isLongIntegerType)(targetType) ||
|
|
11
|
-
(0, reflection_1.isDynamicType)(targetType)
|
|
11
|
+
(0, reflection_1.isDynamicType)(targetType) ||
|
|
12
|
+
(0, reflection_1.isObjectType)(targetType));
|
|
12
13
|
}
|
|
13
14
|
isConvertibleTo(targetType) {
|
|
14
15
|
if ((0, reflection_1.isDynamicType)(targetType) ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LongIntegerType.js","sourceRoot":"","sources":["../../src/types/LongIntegerType.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"LongIntegerType.js","sourceRoot":"","sources":["../../src/types/LongIntegerType.ts"],"names":[],"mappings":";;;AAAA,uDAAkI;AAGlI,MAAa,eAAe;IACxB,YACW,QAAiB;QAAjB,aAAQ,GAAR,QAAQ,CAAS;IACxB,CAAC;IAEE,cAAc,CAAC,UAAmB;QACrC,OAAO,CACH,IAAA,8BAAiB,EAAC,UAAU,CAAC;YAC7B,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,yBAAY,EAAC,UAAU,CAAC,CAC3B,CAAC;IACN,CAAC;IAEM,eAAe,CAAC,UAAmB;QACtC,IACI,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,wBAAW,EAAC,UAAU,CAAC;YACvB,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,8BAAiB,EAAC,UAAU,CAAC,EAC/B;YACE,OAAO,IAAI,CAAC;SACf;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;IAEM,QAAQ;;QACX,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,aAAa,CAAC;IAC1C,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAEM,MAAM,CAAC,UAAmB;QAC7B,OAAO,IAAA,8BAAiB,EAAC,UAAU,CAAC,CAAC;IACzC,CAAC;CACJ;AAtCD,0CAsCC"}
|
|
@@ -3,10 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const chai_1 = require("chai");
|
|
4
4
|
const DynamicType_1 = require("./DynamicType");
|
|
5
5
|
const LongIntegerType_1 = require("./LongIntegerType");
|
|
6
|
+
const ObjectType_1 = require("./ObjectType");
|
|
6
7
|
describe('LongIntegerType', () => {
|
|
7
8
|
it('is equivalent to other long integer types', () => {
|
|
8
9
|
(0, chai_1.expect)(new LongIntegerType_1.LongIntegerType().isAssignableTo(new LongIntegerType_1.LongIntegerType())).to.be.true;
|
|
9
10
|
(0, chai_1.expect)(new LongIntegerType_1.LongIntegerType().isAssignableTo(new DynamicType_1.DynamicType())).to.be.true;
|
|
11
|
+
(0, chai_1.expect)(new LongIntegerType_1.LongIntegerType().isAssignableTo(new ObjectType_1.ObjectType())).to.be.true;
|
|
10
12
|
});
|
|
11
13
|
});
|
|
12
14
|
//# sourceMappingURL=LongIntegerType.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LongIntegerType.spec.js","sourceRoot":"","sources":["../../src/types/LongIntegerType.spec.ts"],"names":[],"mappings":";;AAAA,+BAA8B;
|
|
1
|
+
{"version":3,"file":"LongIntegerType.spec.js","sourceRoot":"","sources":["../../src/types/LongIntegerType.spec.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAC9B,+CAA4C;AAC5C,uDAAoD;AACpD,6CAA0C;AAE1C,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACjD,IAAA,aAAM,EAAC,IAAI,iCAAe,EAAE,CAAC,cAAc,CAAC,IAAI,iCAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC/E,IAAA,aAAM,EAAC,IAAI,iCAAe,EAAE,CAAC,cAAc,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAC3E,IAAA,aAAM,EAAC,IAAI,iCAAe,EAAE,CAAC,cAAc,CAAC,IAAI,uBAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9E,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
package/dist/types/StringType.js
CHANGED
|
@@ -8,7 +8,8 @@ class StringType {
|
|
|
8
8
|
}
|
|
9
9
|
isAssignableTo(targetType) {
|
|
10
10
|
return ((0, reflection_1.isStringType)(targetType) ||
|
|
11
|
-
(0, reflection_1.isDynamicType)(targetType)
|
|
11
|
+
(0, reflection_1.isDynamicType)(targetType) ||
|
|
12
|
+
(0, reflection_1.isObjectType)(targetType));
|
|
12
13
|
}
|
|
13
14
|
isConvertibleTo(targetType) {
|
|
14
15
|
return this.isAssignableTo(targetType);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StringType.js","sourceRoot":"","sources":["../../src/types/StringType.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"StringType.js","sourceRoot":"","sources":["../../src/types/StringType.ts"],"names":[],"mappings":";;;AAAA,uDAAmF;AAGnF,MAAa,UAAU;IACnB,YACW,QAAiB;QAAjB,aAAQ,GAAR,QAAQ,CAAS;IACxB,CAAC;IAEE,cAAc,CAAC,UAAmB;QACrC,OAAO,CACH,IAAA,yBAAY,EAAC,UAAU,CAAC;YACxB,IAAA,0BAAa,EAAC,UAAU,CAAC;YACzB,IAAA,yBAAY,EAAC,UAAU,CAAC,CAC3B,CAAC;IACN,CAAC;IAEM,eAAe,CAAC,UAAmB;QACtC,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAEM,QAAQ;;QACX,OAAO,MAAA,IAAI,CAAC,QAAQ,mCAAI,QAAQ,CAAC;IACrC,CAAC;IAEM,YAAY;QACf,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAEM,MAAM,CAAC,UAAmB;QAC7B,OAAO,IAAA,yBAAY,EAAC,UAAU,CAAC,CAAC;IACpC,CAAC;CACJ;AA5BD,gCA4BC"}
|
|
@@ -2,11 +2,13 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const chai_1 = require("chai");
|
|
4
4
|
const DynamicType_1 = require("./DynamicType");
|
|
5
|
+
const ObjectType_1 = require("./ObjectType");
|
|
5
6
|
const StringType_1 = require("./StringType");
|
|
6
7
|
describe('StringType', () => {
|
|
7
8
|
it('is equivalent to string types', () => {
|
|
8
9
|
(0, chai_1.expect)(new StringType_1.StringType().isAssignableTo(new StringType_1.StringType())).to.be.true;
|
|
9
10
|
(0, chai_1.expect)(new StringType_1.StringType().isAssignableTo(new DynamicType_1.DynamicType())).to.be.true;
|
|
11
|
+
(0, chai_1.expect)(new StringType_1.StringType().isAssignableTo(new ObjectType_1.ObjectType())).to.be.true;
|
|
10
12
|
});
|
|
11
13
|
});
|
|
12
14
|
//# sourceMappingURL=StringType.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StringType.spec.js","sourceRoot":"","sources":["../../src/types/StringType.spec.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAE9B,+CAA4C;AAC5C,6CAA0C;AAE1C,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACrC,IAAA,aAAM,EAAC,IAAI,uBAAU,EAAE,CAAC,cAAc,CAAC,IAAI,uBAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACrE,IAAA,aAAM,EAAC,IAAI,uBAAU,EAAE,CAAC,cAAc,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"StringType.spec.js","sourceRoot":"","sources":["../../src/types/StringType.spec.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAE9B,+CAA4C;AAC5C,6CAA0C;AAC1C,6CAA0C;AAE1C,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACrC,IAAA,aAAM,EAAC,IAAI,uBAAU,EAAE,CAAC,cAAc,CAAC,IAAI,uBAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACrE,IAAA,aAAM,EAAC,IAAI,uBAAU,EAAE,CAAC,cAAc,CAAC,IAAI,yBAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QACtE,IAAA,aAAM,EAAC,IAAI,uBAAU,EAAE,CAAC,cAAc,CAAC,IAAI,uBAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IACzE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { CallableParam } from '../interfaces';
|
|
2
|
+
import type { BscType, TypeContext } from './BscType';
|
|
3
|
+
export declare class TypedFunctionType implements BscType {
|
|
4
|
+
returnType: BscType;
|
|
5
|
+
/**
|
|
6
|
+
* Determines if this is a sub or not
|
|
7
|
+
*/
|
|
8
|
+
isSub: boolean;
|
|
9
|
+
params: CallableParam[];
|
|
10
|
+
isNew: boolean;
|
|
11
|
+
isVariadic: boolean;
|
|
12
|
+
constructor(returnType: BscType,
|
|
13
|
+
/**
|
|
14
|
+
* Determines if this is a sub or not
|
|
15
|
+
*/
|
|
16
|
+
isSub?: boolean, params?: CallableParam[], isNew?: boolean, isVariadic?: boolean);
|
|
17
|
+
/**
|
|
18
|
+
* The name of the function for this type. Can be null
|
|
19
|
+
*/
|
|
20
|
+
name: string;
|
|
21
|
+
setName(name: string): this;
|
|
22
|
+
addParameter(paramOrName: CallableParam | string, type?: BscType, isOptional?: boolean): this;
|
|
23
|
+
isAssignableTo(targetType: BscType, context?: TypeContext): boolean;
|
|
24
|
+
isConvertibleTo(targetType: BscType, context?: TypeContext): boolean;
|
|
25
|
+
toString(context?: TypeContext): string;
|
|
26
|
+
toTypeString(): string;
|
|
27
|
+
equals(targetType: BscType, context?: TypeContext): boolean;
|
|
28
|
+
}
|