in src/langs/swift/combinator.js [493:528]
grammerVar(emitter, gram, ignoreCast, emitType = true) {
let name = gram.name ? gram.name : gram.key;
name = _name(name);
let st = gram.varType === 'var' ? 'var' : 'let';
if (gram.varType === 'static_class') {
emitter.emit(`${this.resolveName(name)}`);
} else if (gram.varType === 'var' || gram.varType === 'const') {
if (!this.hasStatement(name) && emitType) {
emitter.emit(`${st} ${name}: ${this.emitType(gram.type)}${gram.isOptional ? '?' : ''}`);
this.addStatement(name, gram.type);
} else {
if (gram.needToReadable) {
emitter.emit(`${this.config.tea.core.name}.${this.config.tea.core.toReadable}(`);
}
var resolve = false;
if (gram.expected instanceof TypeInteger && gram.type instanceof TypeInteger) {
emitter.emit(`${this.emitType(gram.expected)}(`);
resolve = true;
}
emitter.emit(`${name}`);
if (resolve) {
emitter.emit(')');
}
if (gram.needToReadable) {
emitter.emit(')');
} else if (!resolve && !ignoreCast && gram.type && gram.needCast) {
emitter.emit(` as! ${this.emitType(gram.type)}`);
}
}
if (!this.hasStatement(name)) {
this.addStatement(name, gram.type);
}
} else {
debug.stack(gram);
}
}