mirror of
https://github.com/adelphes/android-dev-ext.git
synced 2025-12-23 01:48:18 +00:00
extract expression types into separate files
This commit is contained in:
@@ -14,8 +14,19 @@ const { resolveTypeOrPackage, resolveNextTypeOrPackage } = require('./type-resol
|
|||||||
const { genericTypeArgs, typeIdent, typeIdentList } = require('./typeident');
|
const { genericTypeArgs, typeIdent, typeIdentList } = require('./typeident');
|
||||||
const { TokenList } = require("./TokenList");
|
const { TokenList } = require("./TokenList");
|
||||||
const { AnyMethod, AnyType, AnyValue, ArrayLiteral, Label, LiteralNumber, LiteralValue, Local,
|
const { AnyMethod, AnyType, AnyValue, ArrayLiteral, Label, LiteralNumber, LiteralValue, Local,
|
||||||
MethodDeclarations, ResolvedIdent, Value, ValueBase } = require("./body-types");
|
MethodDeclarations, ResolvedIdent, Value, } = require("./body-types");
|
||||||
const { resolveImports, resolveSingleImport } = require('../java/import-resolver');
|
const { resolveImports, resolveSingleImport } = require('../java/import-resolver');
|
||||||
|
const { ArrayIndexExpression } = require("./expressiontypes/ArrayIndexExpression");
|
||||||
|
const { BinaryOpExpression } = require("./expressiontypes/BinaryOpExpression");
|
||||||
|
const { BracketedExpression } = require("./expressiontypes/BracketedExpression");
|
||||||
|
const { CastExpression } = require("./expressiontypes/CastExpression");
|
||||||
|
const { ClassMemberExpression } = require("./expressiontypes/ClassMemberExpression");
|
||||||
|
const { IncDecExpression } = require("./expressiontypes/IncDecExpression");
|
||||||
|
const { LambdaExpression } = require("./expressiontypes/LambdaExpression");
|
||||||
|
const { MemberExpression } = require("./expressiontypes/MemberExpression");
|
||||||
|
const { MethodCallExpression } = require("./expressiontypes/MethodCallExpression");
|
||||||
|
const { TernaryOpExpression } = require("./expressiontypes/TernaryOpExpression");
|
||||||
|
const { ThisMemberExpression } = require("./expressiontypes/ThisMemberExpression");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {SourceMethod|SourceConstructor|SourceInitialiser} SourceMC
|
* @typedef {SourceMethod|SourceConstructor|SourceInitialiser} SourceMC
|
||||||
@@ -480,140 +491,6 @@ class AssertStatement extends Statement {
|
|||||||
message = null;
|
message = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
class Expression extends ValueBase {}
|
|
||||||
class BinaryOpExpression extends Expression {
|
|
||||||
/**
|
|
||||||
* @param {ResolvedIdent} lhs
|
|
||||||
* @param {Token} op
|
|
||||||
* @param {ResolvedIdent} rhs
|
|
||||||
*/
|
|
||||||
constructor(lhs, op, rhs) {
|
|
||||||
super();
|
|
||||||
this.lhs = lhs;
|
|
||||||
this.op = op;
|
|
||||||
this.rhs = rhs;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
class TernaryOpExpression extends Expression {
|
|
||||||
/**
|
|
||||||
* @param {ResolvedIdent} test
|
|
||||||
* @param {ResolvedIdent} truthExpression
|
|
||||||
* @param {ResolvedIdent} falseExpression
|
|
||||||
*/
|
|
||||||
constructor(test, truthExpression, falseExpression) {
|
|
||||||
super();
|
|
||||||
this.test = test;
|
|
||||||
this.truthExpression = truthExpression;
|
|
||||||
this.falseExpression = falseExpression;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
class CastExpression extends Expression {
|
|
||||||
/**
|
|
||||||
* @param {ResolvedIdent} castType
|
|
||||||
* @param {ResolvedIdent} expression
|
|
||||||
*/
|
|
||||||
constructor(castType, expression) {
|
|
||||||
super();
|
|
||||||
this.castType = castType;
|
|
||||||
this.expression = expression;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
class BracketedExpression extends Expression {
|
|
||||||
/**
|
|
||||||
* @param {ResolvedIdent} expression
|
|
||||||
*/
|
|
||||||
constructor(expression) {
|
|
||||||
super();
|
|
||||||
this.expression = expression;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
class LambdaExpression extends Expression {
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param {*[]} params
|
|
||||||
* @param {Expression|Block} body
|
|
||||||
*/
|
|
||||||
constructor(params, body) {
|
|
||||||
super();
|
|
||||||
this.params = params;
|
|
||||||
this.body = body;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
class IncDecExpression extends Expression {
|
|
||||||
/**
|
|
||||||
* @param {ResolvedIdent} expr
|
|
||||||
* @param {Token} operator
|
|
||||||
* @param {'prefix'|'postfix'} which
|
|
||||||
*/
|
|
||||||
constructor(expr, operator, which) {
|
|
||||||
super();
|
|
||||||
this.expr = expr;
|
|
||||||
this.operator = operator;
|
|
||||||
this.which = which;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
class MethodCallExpression extends Expression {
|
|
||||||
/**
|
|
||||||
* @param {ResolvedIdent} instance
|
|
||||||
* @param {ResolvedIdent[]} args
|
|
||||||
*/
|
|
||||||
constructor(instance, args) {
|
|
||||||
super();
|
|
||||||
this.instance = instance;
|
|
||||||
this.args = args;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
class MemberExpression extends Expression {
|
|
||||||
/**
|
|
||||||
* @param {ResolvedIdent} instance
|
|
||||||
* @param {Token|null} member
|
|
||||||
*/
|
|
||||||
constructor(instance, member) {
|
|
||||||
super();
|
|
||||||
this.instance = instance;
|
|
||||||
// member will be null for incomplete expressions
|
|
||||||
this.member = member;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class ThisMemberExpression extends Expression {
|
|
||||||
/**
|
|
||||||
* @param {ResolvedIdent} instance
|
|
||||||
* @param {Token} this_token
|
|
||||||
*/
|
|
||||||
constructor(instance, this_token) {
|
|
||||||
super();
|
|
||||||
this.instance = instance;
|
|
||||||
this.thisToken = this_token;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class ClassMemberExpression extends Expression {
|
|
||||||
/**
|
|
||||||
* @param {ResolvedIdent} instance
|
|
||||||
* @param {Token} class_token
|
|
||||||
*/
|
|
||||||
constructor(instance, class_token) {
|
|
||||||
super();
|
|
||||||
this.instance = instance;
|
|
||||||
this.classToken = class_token;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class ArrayIndexExpression extends Expression {
|
|
||||||
/**
|
|
||||||
* @param {ResolvedIdent} instance
|
|
||||||
* @param {ResolvedIdent} index
|
|
||||||
*/
|
|
||||||
constructor(instance, index) {
|
|
||||||
super();
|
|
||||||
this.instance = instance;
|
|
||||||
this.index = index;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Token[]} modifiers
|
* @param {Token[]} modifiers
|
||||||
* @param {TokenList} tokens
|
* @param {TokenList} tokens
|
||||||
|
|||||||
18
langserver/java/expressiontypes/ArrayIndexExpression.js
Normal file
18
langserver/java/expressiontypes/ArrayIndexExpression.js
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
/**
|
||||||
|
* @typedef {import('../body-types').ResolvedIdent} ResolvedIdent
|
||||||
|
*/
|
||||||
|
const { Expression } = require("./Expression");
|
||||||
|
|
||||||
|
class ArrayIndexExpression extends Expression {
|
||||||
|
/**
|
||||||
|
* @param {ResolvedIdent} instance
|
||||||
|
* @param {ResolvedIdent} index
|
||||||
|
*/
|
||||||
|
constructor(instance, index) {
|
||||||
|
super();
|
||||||
|
this.instance = instance;
|
||||||
|
this.index = index;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.ArrayIndexExpression = ArrayIndexExpression;
|
||||||
21
langserver/java/expressiontypes/BinaryOpExpression.js
Normal file
21
langserver/java/expressiontypes/BinaryOpExpression.js
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
/**
|
||||||
|
* @typedef {import('../body-types').ResolvedIdent} ResolvedIdent
|
||||||
|
* @typedef {import('../tokenizer').Token} Token
|
||||||
|
*/
|
||||||
|
const { Expression } = require("./Expression");
|
||||||
|
|
||||||
|
class BinaryOpExpression extends Expression {
|
||||||
|
/**
|
||||||
|
* @param {ResolvedIdent} lhs
|
||||||
|
* @param {Token} op
|
||||||
|
* @param {ResolvedIdent} rhs
|
||||||
|
*/
|
||||||
|
constructor(lhs, op, rhs) {
|
||||||
|
super();
|
||||||
|
this.lhs = lhs;
|
||||||
|
this.op = op;
|
||||||
|
this.rhs = rhs;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.BinaryOpExpression = BinaryOpExpression;
|
||||||
16
langserver/java/expressiontypes/BracketedExpression.js
Normal file
16
langserver/java/expressiontypes/BracketedExpression.js
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
/**
|
||||||
|
* @typedef {import('../body-types').ResolvedIdent} ResolvedIdent
|
||||||
|
*/
|
||||||
|
const { Expression } = require("./Expression");
|
||||||
|
|
||||||
|
class BracketedExpression extends Expression {
|
||||||
|
/**
|
||||||
|
* @param {ResolvedIdent} expression
|
||||||
|
*/
|
||||||
|
constructor(expression) {
|
||||||
|
super();
|
||||||
|
this.expression = expression;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.BracketedExpression = BracketedExpression;
|
||||||
18
langserver/java/expressiontypes/CastExpression.js
Normal file
18
langserver/java/expressiontypes/CastExpression.js
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
/**
|
||||||
|
* @typedef {import('../body-types').ResolvedIdent} ResolvedIdent
|
||||||
|
*/
|
||||||
|
const { Expression } = require("./Expression");
|
||||||
|
|
||||||
|
class CastExpression extends Expression {
|
||||||
|
/**
|
||||||
|
* @param {ResolvedIdent} castType
|
||||||
|
* @param {ResolvedIdent} expression
|
||||||
|
*/
|
||||||
|
constructor(castType, expression) {
|
||||||
|
super();
|
||||||
|
this.castType = castType;
|
||||||
|
this.expression = expression;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.CastExpression = CastExpression;
|
||||||
18
langserver/java/expressiontypes/ClassMemberExpression.js
Normal file
18
langserver/java/expressiontypes/ClassMemberExpression.js
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
/**
|
||||||
|
* @typedef {import('../body-types').ResolvedIdent} ResolvedIdent
|
||||||
|
* @typedef {import('../tokenizer').Token} Token
|
||||||
|
*/
|
||||||
|
const { Expression } = require("./Expression");
|
||||||
|
|
||||||
|
class ClassMemberExpression extends Expression {
|
||||||
|
/**
|
||||||
|
* @param {ResolvedIdent} instance
|
||||||
|
* @param {Token} class_token
|
||||||
|
*/
|
||||||
|
constructor(instance, class_token) {
|
||||||
|
super();
|
||||||
|
this.instance = instance;
|
||||||
|
this.classToken = class_token;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.ClassMemberExpression = ClassMemberExpression;
|
||||||
6
langserver/java/expressiontypes/Expression.js
Normal file
6
langserver/java/expressiontypes/Expression.js
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
const { ValueBase } = require("../body-types");
|
||||||
|
|
||||||
|
class Expression extends ValueBase {
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.Expression = Expression;
|
||||||
21
langserver/java/expressiontypes/IncDecExpression.js
Normal file
21
langserver/java/expressiontypes/IncDecExpression.js
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
/**
|
||||||
|
* @typedef {import('../body-types').ResolvedIdent} ResolvedIdent
|
||||||
|
* @typedef {import('../tokenizer').Token} Token
|
||||||
|
*/
|
||||||
|
const { Expression } = require("./Expression");
|
||||||
|
|
||||||
|
class IncDecExpression extends Expression {
|
||||||
|
/**
|
||||||
|
* @param {ResolvedIdent} expr
|
||||||
|
* @param {Token} operator
|
||||||
|
* @param {'prefix'|'postfix'} which
|
||||||
|
*/
|
||||||
|
constructor(expr, operator, which) {
|
||||||
|
super();
|
||||||
|
this.expr = expr;
|
||||||
|
this.operator = operator;
|
||||||
|
this.which = which;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.IncDecExpression = IncDecExpression;
|
||||||
19
langserver/java/expressiontypes/LambdaExpression.js
Normal file
19
langserver/java/expressiontypes/LambdaExpression.js
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
/**
|
||||||
|
* @typedef {import('../body-types').ResolvedIdent} ResolvedIdent
|
||||||
|
* @typedef {import('../tokenizer').Token} Token
|
||||||
|
*/
|
||||||
|
const { Expression } = require("./Expression");
|
||||||
|
|
||||||
|
class LambdaExpression extends Expression {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param {*[]} params
|
||||||
|
* @param {Expression|Block} body
|
||||||
|
*/
|
||||||
|
constructor(params, body) {
|
||||||
|
super();
|
||||||
|
this.params = params;
|
||||||
|
this.body = body;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.LambdaExpression = LambdaExpression;
|
||||||
20
langserver/java/expressiontypes/MemberExpression.js
Normal file
20
langserver/java/expressiontypes/MemberExpression.js
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
/**
|
||||||
|
* @typedef {import('../body-types').ResolvedIdent} ResolvedIdent
|
||||||
|
* @typedef {import('../tokenizer').Token} Token
|
||||||
|
*/
|
||||||
|
const { Expression } = require("./Expression");
|
||||||
|
|
||||||
|
class MemberExpression extends Expression {
|
||||||
|
/**
|
||||||
|
* @param {ResolvedIdent} instance
|
||||||
|
* @param {Token|null} member
|
||||||
|
*/
|
||||||
|
constructor(instance, member) {
|
||||||
|
super();
|
||||||
|
this.instance = instance;
|
||||||
|
// member will be null for incomplete expressions
|
||||||
|
this.member = member;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.MemberExpression = MemberExpression;
|
||||||
18
langserver/java/expressiontypes/MethodCallExpression.js
Normal file
18
langserver/java/expressiontypes/MethodCallExpression.js
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
/**
|
||||||
|
* @typedef {import('../body-types').ResolvedIdent} ResolvedIdent
|
||||||
|
*/
|
||||||
|
const { Expression } = require("./Expression");
|
||||||
|
|
||||||
|
class MethodCallExpression extends Expression {
|
||||||
|
/**
|
||||||
|
* @param {ResolvedIdent} instance
|
||||||
|
* @param {ResolvedIdent[]} args
|
||||||
|
*/
|
||||||
|
constructor(instance, args) {
|
||||||
|
super();
|
||||||
|
this.instance = instance;
|
||||||
|
this.args = args;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.MethodCallExpression = MethodCallExpression;
|
||||||
20
langserver/java/expressiontypes/TernaryOpExpression.js
Normal file
20
langserver/java/expressiontypes/TernaryOpExpression.js
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
/**
|
||||||
|
* @typedef {import('../body-types').ResolvedIdent} ResolvedIdent
|
||||||
|
*/
|
||||||
|
const { Expression } = require("./Expression");
|
||||||
|
|
||||||
|
class TernaryOpExpression extends Expression {
|
||||||
|
/**
|
||||||
|
* @param {ResolvedIdent} test
|
||||||
|
* @param {ResolvedIdent} truthExpression
|
||||||
|
* @param {ResolvedIdent} falseExpression
|
||||||
|
*/
|
||||||
|
constructor(test, truthExpression, falseExpression) {
|
||||||
|
super();
|
||||||
|
this.test = test;
|
||||||
|
this.truthExpression = truthExpression;
|
||||||
|
this.falseExpression = falseExpression;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.TernaryOpExpression = TernaryOpExpression;
|
||||||
19
langserver/java/expressiontypes/ThisMemberExpression.js
Normal file
19
langserver/java/expressiontypes/ThisMemberExpression.js
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
/**
|
||||||
|
* @typedef {import('../body-types').ResolvedIdent} ResolvedIdent
|
||||||
|
* @typedef {import('../tokenizer').Token} Token
|
||||||
|
*/
|
||||||
|
const { Expression } = require("./Expression");
|
||||||
|
|
||||||
|
class ThisMemberExpression extends Expression {
|
||||||
|
/**
|
||||||
|
* @param {ResolvedIdent} instance
|
||||||
|
* @param {Token} this_token
|
||||||
|
*/
|
||||||
|
constructor(instance, this_token) {
|
||||||
|
super();
|
||||||
|
this.instance = instance;
|
||||||
|
this.thisToken = this_token;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.ThisMemberExpression = ThisMemberExpression;
|
||||||
Reference in New Issue
Block a user