@vlocode/apex
Version:
Salesforce APEX Parser and Grammar
62 lines • 1.83 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.FieldDeclarationVisitor = void 0;
const types_1 = require("../types");
const declarationVisitor_1 = require("./declarationVisitor");
const typeRefVisitor_1 = require("./typeRefVisitor");
/**
* Represents a visitor for field declarations in Apex.
*/
class FieldDeclarationVisitor extends declarationVisitor_1.DeclarationVisitor {
constructor(state) {
super(state ?? {
name: '',
type: {
name: '',
isSystemType: false,
source: 'field'
},
sourceRange: types_1.ApexSourceRange.empty,
});
}
visitModifier(ctx) {
this.visitAccessModifier(ctx) || this.visitFieldModifiers(ctx);
return this.state;
}
visitFieldModifiers(ctx) {
if (ctx.STATIC()) {
this.state.isStatic = true;
}
else if (ctx.FINAL()) {
this.state.isFinal = true;
}
else if (ctx.TRANSIENT()) {
this.state.isTransient = true;
}
else {
return false;
}
return true;
}
visitVariableDeclarator(ctx) {
const name = ctx.id().getText();
if (this.state.name) {
if (!Array.isArray(this.state.name)) {
this.state.name = [this.state.name, name];
}
else {
this.state.name.push(name);
}
}
else {
this.state.name = name;
}
return this.state;
}
visitTypeRef(ctx) {
new typeRefVisitor_1.TypeRefVisitor(this.state.type).visit(ctx);
return this.state;
}
}
exports.FieldDeclarationVisitor = FieldDeclarationVisitor;
//# sourceMappingURL=fieldDeclarationVisitor.js.map