this.varName = createStringTrimmed(expr, start, assignStart - start);
this.assignmentVar = varName;
this.start = skipWhitespace(expr, assignStart + 1);
if (this.start >= start + offset) {
throw new CompileException("unexpected end of statement", expr, assignStart + 1);
}
this.offset = offset - (this.start - start);
if ((fields & COMPILE_IMMEDIATE) != 0) {
this.egressType = (statement = (ExecutableStatement)
subCompileExpression(expr, this.start, this.offset, pCtx)).getKnownEgressType();
}
if (col = ((endOfName = findFirst('[', 0, this.varName.length(), indexTarget = this.varName.toCharArray())) > 0)) {
if (((this.fields |= COLLECTION) & COMPILE_IMMEDIATE) != 0) {
accExpr = (CompiledAccExpression) compileSetExpression(indexTarget, pCtx);
}
this.varName = new String(expr, start, endOfName);
index = new String(indexTarget, endOfName, indexTarget.length - endOfName);
}
try {
checkNameSafety(this.varName);
}
catch (RuntimeException e) {
throw new CompileException(e.getMessage(), expr, start);
}
}
else {
try {
checkNameSafety(this.varName = new String(expr, start, offset));
this.assignmentVar = varName;
}
catch (RuntimeException e) {
throw new CompileException(e.getMessage(), expr, start);
}
}
if ((fields & COMPILE_IMMEDIATE) != 0) {
pCtx.addVariable(this.varName, egressType);