diff options
| author | Brian Anderson <[email protected]> | 2011-02-22 20:23:38 -0500 |
|---|---|---|
| committer | Brian Anderson <[email protected]> | 2011-02-22 21:52:23 -0500 |
| commit | eac75b76486ec54f677b2460f09635380437b125 (patch) | |
| tree | cfe16a9e9a4401cd40c8603c479f12e531261eba /src | |
| parent | Rename std._io to std.io since 'io' is no longer a keyword (diff) | |
| download | rust-eac75b76486ec54f677b2460f09635380437b125.tar.xz rust-eac75b76486ec54f677b2460f09635380437b125.zip | |
Teach rustc about reserved keywords
Diffstat (limited to 'src')
| -rw-r--r-- | src/Makefile | 7 | ||||
| -rw-r--r-- | src/comp/front/lexer.rs | 17 | ||||
| -rw-r--r-- | src/test/compile-fail/reserved-dec.rs | 5 | ||||
| -rw-r--r-- | src/test/compile-fail/reserved-f128.rs | 5 | ||||
| -rw-r--r-- | src/test/compile-fail/reserved-f16.rs | 5 | ||||
| -rw-r--r-- | src/test/compile-fail/reserved-f80.rs | 5 | ||||
| -rw-r--r-- | src/test/compile-fail/reserved-m128.rs | 5 | ||||
| -rw-r--r-- | src/test/compile-fail/reserved-m32.rs | 5 | ||||
| -rw-r--r-- | src/test/compile-fail/reserved-m64.rs | 5 |
9 files changed, 58 insertions, 1 deletions
diff --git a/src/Makefile b/src/Makefile index 2616ae47..551a7001 100644 --- a/src/Makefile +++ b/src/Makefile @@ -569,6 +569,13 @@ TEST_XFAILS_RUSTC := $(filter-out \ multiline-comment-line-tracking.rs \ output-type-mismatch.rs \ rec-missing-fields.rs \ + reserved-dec.rs \ + reserved-f128.rs \ + reserved-f16.rs \ + reserved-f80.rs \ + reserved-m128.rs \ + reserved-m32.rs \ + reserved-m64.rs \ tail-non-call.rs \ tail-typeck.rs \ type-shadow.rs \ diff --git a/src/comp/front/lexer.rs b/src/comp/front/lexer.rs index 481fc5dd..99e9217f 100644 --- a/src/comp/front/lexer.rs +++ b/src/comp/front/lexer.rs @@ -90,7 +90,6 @@ fn new_reader(stdio_reader rdr, str filename) -> reader } auto keywords = new_str_hash[token.token](); - auto reserved = new_str_hash[()](); keywords.insert("mod", token.MOD); keywords.insert("use", token.USE); @@ -191,6 +190,16 @@ fn new_reader(stdio_reader rdr, str filename) -> reader keywords.insert("f32", token.MACH(common.ty_f32)); keywords.insert("f64", token.MACH(common.ty_f64)); + auto reserved = new_str_hash[()](); + + reserved.insert("f16", ()); // IEEE 754-2008 'binary16' interchange fmt + reserved.insert("f80", ()); // IEEE 754-1985 'extended' + reserved.insert("f128", ()); // IEEE 754-2008 'binary128' + reserved.insert("m32", ()); // IEEE 754-2008 'decimal32' + reserved.insert("m64", ()); // IEEE 754-2008 'decimal64' + reserved.insert("m128", ()); // IEEE 754-2008 'decimal128' + reserved.insert("dec", ()); // One of m32, m64, m128 + ret reader(rdr, filename, rdr.getc() as char, rdr.getc() as char, 1u, 0u, 1u, 0u, keywords, reserved); } @@ -425,6 +434,12 @@ impure fn next_token(reader rdr) -> token.token { ret kwds.get(accum_str); } + auto rsvd = rdr.get_reserved(); + if (rsvd.contains_key(accum_str)) { + log "reserved keyword"; + fail; + } + ret token.IDENT(accum_str); } diff --git a/src/test/compile-fail/reserved-dec.rs b/src/test/compile-fail/reserved-dec.rs new file mode 100644 index 00000000..d8c204d9 --- /dev/null +++ b/src/test/compile-fail/reserved-dec.rs @@ -0,0 +1,5 @@ +// error-pattern:reserved keyword + +fn main() { + let int dec = 0; +} diff --git a/src/test/compile-fail/reserved-f128.rs b/src/test/compile-fail/reserved-f128.rs new file mode 100644 index 00000000..63d00f70 --- /dev/null +++ b/src/test/compile-fail/reserved-f128.rs @@ -0,0 +1,5 @@ +// error-pattern:reserved keyword + +fn main() { + let int f128 = 0; +} diff --git a/src/test/compile-fail/reserved-f16.rs b/src/test/compile-fail/reserved-f16.rs new file mode 100644 index 00000000..bfb14cd8 --- /dev/null +++ b/src/test/compile-fail/reserved-f16.rs @@ -0,0 +1,5 @@ +// error-pattern:reserved keyword + +fn main() { + let int f16 = 0; +} diff --git a/src/test/compile-fail/reserved-f80.rs b/src/test/compile-fail/reserved-f80.rs new file mode 100644 index 00000000..33e8bd5e --- /dev/null +++ b/src/test/compile-fail/reserved-f80.rs @@ -0,0 +1,5 @@ +// error-pattern:reserved keyword + +fn main() { + let int f80 = 0; +} diff --git a/src/test/compile-fail/reserved-m128.rs b/src/test/compile-fail/reserved-m128.rs new file mode 100644 index 00000000..c4d36bf7 --- /dev/null +++ b/src/test/compile-fail/reserved-m128.rs @@ -0,0 +1,5 @@ +// error-pattern:reserved keyword + +fn main() { + let int m128 = 0; +} diff --git a/src/test/compile-fail/reserved-m32.rs b/src/test/compile-fail/reserved-m32.rs new file mode 100644 index 00000000..bdb3a427 --- /dev/null +++ b/src/test/compile-fail/reserved-m32.rs @@ -0,0 +1,5 @@ +// error-pattern:reserved keyword + +fn main() { + let int m32 = 0; +} diff --git a/src/test/compile-fail/reserved-m64.rs b/src/test/compile-fail/reserved-m64.rs new file mode 100644 index 00000000..034884a6 --- /dev/null +++ b/src/test/compile-fail/reserved-m64.rs @@ -0,0 +1,5 @@ +// error-pattern:reserved keyword + +fn main() { + let int m64 = 0; +} |