use syntax::codemap::Span;
use syntax::visit;
use syntax::visit::Visitor;
+use syntax::parse::token;
use driver::session::Session;
("once_fns", Active),
("asm", Active),
("managed_boxes", Active),
+ ("non_ascii_idents", Active),
// These are used to test this portion of the compiler, they don't actually
// mean anything
}
impl Visitor<()> for Context {
+ fn visit_ident(&mut self, sp: Span, id: ast::Ident, _: ()) {
+ let s = token::ident_to_str(&id);
+
+ if !s.is_ascii() {
+ self.gate_feature("non_ascii_idents", sp,
+ "non-ascii idents are not fully supported.");
+ }
+ }
+
fn visit_view_item(&mut self, i: &ast::view_item, _: ()) {
match i.node {
ast::view_item_use(ref paths) => {
--- /dev/null
+// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// xfail-fast feature doesn't work.
+
+#[feature(struct_variant)];
+
+extern mod bäz; //~ ERROR non-ascii idents
+
+use föö::bar; //~ ERROR non-ascii idents
+
+mod föö { //~ ERROR non-ascii idents
+ pub fn bar() {}
+}
+
+fn bär( //~ ERROR non-ascii idents
+ bäz: int //~ ERROR non-ascii idents
+ ) {
+ let _ö: int; //~ ERROR non-ascii idents
+
+ match (1, 2) {
+ (_ä, _) => {} //~ ERROR non-ascii idents
+ }
+}
+
+struct Föö { //~ ERROR non-ascii idents
+ föö: int //~ ERROR non-ascii idents
+}
+
+enum Bär { //~ ERROR non-ascii idents
+ Bäz { //~ ERROR non-ascii idents
+ qüx: int //~ ERROR non-ascii idents
+ }
+}
+
+extern {
+ fn qüx(); //~ ERROR non-ascii idents
+}
+
+fn main() {}
// option. This file may not be copied, modified, or distributed
// except according to those terms.
+// xfail-fast feature doesn't work.
+
#[forbid(non_camel_case_types)];
#[forbid(non_uppercase_statics)];
+#[feature(non_ascii_idents)];
// Some scripts (e.g. hiragana) don't have a concept of
// upper/lowercase
// option. This file may not be copied, modified, or distributed
// except according to those terms.
+// xfail-fast feature doesn't work.
+
+#[feature(non_ascii_idents)];
+
use std::num;
pub fn main() {