aboutsummaryrefslogtreecommitdiff
path: root/src/js_lexer.zig
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-04-20 15:31:39 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-04-20 15:31:39 -0700
commit4ff1850768cc9203db825401db9aca6ea2fcad08 (patch)
treeb1cf48413be25e5b71c6ebb0df8336a752a163a5 /src/js_lexer.zig
parent775bac7bbcf50eae02b73916e02fbd4f4e87baeb (diff)
downloadbun-4ff1850768cc9203db825401db9aca6ea2fcad08.tar.gz
bun-4ff1850768cc9203db825401db9aca6ea2fcad08.tar.zst
bun-4ff1850768cc9203db825401db9aca6ea2fcad08.zip
asedasd
Diffstat (limited to 'src/js_lexer.zig')
-rw-r--r--src/js_lexer.zig39
1 files changed, 34 insertions, 5 deletions
diff --git a/src/js_lexer.zig b/src/js_lexer.zig
index 5aeecba9e..56b824ffa 100644
--- a/src/js_lexer.zig
+++ b/src/js_lexer.zig
@@ -263,17 +263,17 @@ pub const Lexer = struct {
pub fn expect(self: *Lexer, token: T) void {
if (self.token != token) {
- lexer.expected(token);
+ self.expected(token);
}
- lexer.next();
+ self.next();
}
pub fn expectOrInsertSemicolon(lexer: *Lexer) void {
- if (lexer.token == T.semicolon || (!lexer.has_newline_before and
- lexer.token != T.close_brace and lexer.token != T.t_end_of_file))
+ if (lexer.token == T.t_semicolon or (!lexer.has_newline_before and
+ lexer.token != T.t_close_brace and lexer.token != T.t_end_of_file))
{
- lexer.expect(T.semicolon);
+ lexer.expect(T.t_semicolon);
}
}
@@ -299,6 +299,13 @@ pub const Lexer = struct {
}
}
+ pub fn expectContextualKeyword(self: *Lexer, keyword: string) void {
+ if (!self.isContextualKeyword(keyword)) {
+ self.addError(self.start, "\"{s}\"", .{keyword}, true);
+ }
+ self.next();
+ }
+
pub fn next(lexer: *Lexer) void {
lexer.has_newline_before = lexer.end == 0;
@@ -1168,6 +1175,28 @@ fn isWhitespace(codepoint: CodePoint) bool {
}
}
+// TODO: implement this to actually work right
+// this fn is a stub!
+pub fn rangeOfIdentifier(source: *Source, loc: logger.Loc) logger.Range {
+ var r = logger.Range{ .loc = loc, .len = 0 };
+ var i: usize = 0;
+ for (source.contents[loc..]) |c| {
+ if (isIdentifierStart(@as(c, CodePoint))) {
+ for (source.contents[loc + i ..]) |c_| {
+ if (!isIdentifierContinue(c_)) {
+ r.len = i;
+ return r;
+ }
+ i += 1;
+ }
+ }
+
+ i += 1;
+ }
+
+ return r;
+}
+
fn float64(num: anytype) callconv(.Inline) f64 {
return @intToFloat(f64, num);
}