Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 1x 1x 1x 1x 1x 1x 1x 1133x 1133x 689x 689x 444x 444x 1133x 436x 436x 10x 10x 436x 1133x 8x 8x 1133x 1x | import {ExpressionNode} from "../../nodes";
import {CharacterType, IntegerType, StringType} from "../../types/basic";
import {AbstractType} from "../../types/basic/_abstract_type";
import {Integer} from "../../2_statements/expressions";
export class Constant {
public static runSyntax(node: ExpressionNode): AbstractType {
// todo: ConcatenatedConstant is not used?
if (node.findDirectExpression(Integer)) {
return IntegerType.get({derivedFromConstant: true});
}
const first = node.getFirstToken().getStr();
if (first.startsWith("'")) {
let len = first.length - 2;
if (len <= 0) {
len = 1;
}
return new CharacterType(len, {derivedFromConstant: true});
} else if (first.startsWith("`")) {
return StringType.get({derivedFromConstant: true});
} else {
return StringType.get();
}
}
} |