Pitel
10/11/2021, 9:41 AMclass TemplateParser : StreamParser {
override fun token(stream: StringStream, state: dynamic): String? {
console.log(stream, state)
return null
}
}
This gets compile to this JS:
function TemplateParser() {}
TemplateParser.prototype.token_qt5re9_k$ = function(stream, state) {
console.log(stream, state);
return null;
}
;
TemplateParser.prototype.token = function(stream, state) {
return this.token_qt5re9_k$(stream, state);
}
;
Which crashes with Uncaught TypeError: this.token_qt5re9_k$ is not a function
WTF?!Svyatoslav Kuzmich [JB]
10/11/2021, 10:14 AMtoken
is probably called without an object instance:
> var tp = new TemplateParser();
undefined
> tp.token("A", "B")
A B
null
> var token = tp.token
undefined
> token("A", "B")
Uncaught TypeError: this.token_qt5re9_k$ is not a function
at TemplateParser.token (REPL9:2:21)
Pitel
10/11/2021, 10:24 AMclass
to just simple jsObject
of that interface with var token
and lambda, it's working.Svyatoslav Kuzmich [JB]
10/11/2021, 10:52 AMexternal interface StreamParser {
val token: (stream: StringStream, state: dynamic) -> String?
}
class TemplateParser : StreamParser {
override val token = fun (stream: StringStream, state: dynamic): String? {
…
}
}