in gdscript/src/main/kotlin/gdscript/parser/common/GdTypedParser.kt [24:56]
fun parseWithAssignTypedAndExpr(b: GdPsiBuilder, l: Int, optional: Boolean): Boolean {
if (!b.recursionGuard(l, "TypedAndExpr")) return false
val m = b.mark()
var ok = true
if (b.nextTokenIs(CEQ)) {
ok = ok && b.mcToken(ASSIGN_TYPED, CEQ)
if (ok) {
ok = ok && GdExprParser.parse(b, l + 1)
if (!ok) b.error("EXPRESSION")
}
} else if (b.nextTokenIs(COLON)) {
ok = ok && parse(b, l + 1, optional)
if (ok && b.mcToken(ASSIGN_TYPED, EQ)) {
if (ok) {
ok = ok && GdExprParser.parse(b, l + 1)
if (!ok) b.error("EXPRESSION")
}
}
} else if (b.mcToken(ASSIGN_TYPED, EQ)) {
if (ok) {
ok = ok && GdExprParser.parse(b, l + 1)
if (!ok) b.error("EXPRESSION")
}
} else if (!optional) {
m.drop()
return false
}
if (ok || optional) m.drop()
else m.rollbackTo()
return ok || optional
}