mirror of
https://github.com/adelphes/android-dev-ext.git
synced 2025-12-23 09:59:25 +00:00
check castability using type assignments
This commit is contained in:
@@ -7,7 +7,7 @@ const { Expression } = require("./Expression");
|
|||||||
const { AnyType, MultiValueType, TypeIdentType } = require('../anys');
|
const { AnyType, MultiValueType, TypeIdentType } = require('../anys');
|
||||||
const ParseProblem = require('../parsetypes/parse-problem');
|
const ParseProblem = require('../parsetypes/parse-problem');
|
||||||
const { JavaType, PrimitiveType, NullType, CEIType, ArrayType } = require('java-mti');
|
const { JavaType, PrimitiveType, NullType, CEIType, ArrayType } = require('java-mti');
|
||||||
const { getTypeInheritanceList } = require('../expression-resolver');
|
const { isTypeAssignable } = require('../expression-resolver');
|
||||||
const { NumberLiteral } = require('../expressiontypes/literals/Number');
|
const { NumberLiteral } = require('../expressiontypes/literals/Number');
|
||||||
|
|
||||||
class CastExpression extends Expression {
|
class CastExpression extends Expression {
|
||||||
@@ -91,11 +91,11 @@ function isTypeCastable(source_type, cast_type) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// for other class casts, one type must be in the inheritence tree of the other
|
// for other class casts, one type must be assignable to the other
|
||||||
if (getTypeInheritanceList(source_type).includes(cast_type)) {
|
if (isTypeAssignable(source_type, cast_type)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (getTypeInheritanceList(cast_type).includes(source_type)) {
|
if (isTypeAssignable(cast_type, source_type)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user