aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBrian Anderson <[email protected]>2011-02-22 20:23:38 -0500
committerBrian Anderson <[email protected]>2011-02-22 21:52:23 -0500
commiteac75b76486ec54f677b2460f09635380437b125 (patch)
treecfe16a9e9a4401cd40c8603c479f12e531261eba /src
parentRename std._io to std.io since 'io' is no longer a keyword (diff)
downloadrust-eac75b76486ec54f677b2460f09635380437b125.tar.xz
rust-eac75b76486ec54f677b2460f09635380437b125.zip
Teach rustc about reserved keywords
Diffstat (limited to 'src')
-rw-r--r--src/Makefile7
-rw-r--r--src/comp/front/lexer.rs17
-rw-r--r--src/test/compile-fail/reserved-dec.rs5
-rw-r--r--src/test/compile-fail/reserved-f128.rs5
-rw-r--r--src/test/compile-fail/reserved-f16.rs5
-rw-r--r--src/test/compile-fail/reserved-f80.rs5
-rw-r--r--src/test/compile-fail/reserved-m128.rs5
-rw-r--r--src/test/compile-fail/reserved-m32.rs5
-rw-r--r--src/test/compile-fail/reserved-m64.rs5
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;
+}