summaryrefslogtreecommitdiff
path: root/src/expand/lang_item.cpp
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-03-17 14:10:13 +0800
committerJohn Hodge <tpg@mutabah.net>2016-03-17 14:10:13 +0800
commit28e67c7ed47e9b3891f5dc72de46edf3a3b94a6e (patch)
tree456182050f337b344b6112629a026cb20adcbb83 /src/expand/lang_item.cpp
parenteba015ba443d72d49e6b3ddcb29a7f3d1efe799a (diff)
downloadmrust-28e67c7ed47e9b3891f5dc72de46edf3a3b94a6e.tar.gz
Expand - #[lang] extension
Diffstat (limited to 'src/expand/lang_item.cpp')
-rw-r--r--src/expand/lang_item.cpp23
1 files changed, 22 insertions, 1 deletions
diff --git a/src/expand/lang_item.cpp b/src/expand/lang_item.cpp
index 3df3a54f..a86cdd62 100644
--- a/src/expand/lang_item.cpp
+++ b/src/expand/lang_item.cpp
@@ -74,6 +74,21 @@ void handle_lang_item(AST::Crate& crate, const AST::Path& path, const ::std::str
else if( name == "debug_trait" ) { /* TODO: Poke derive() with this */ }
+ // Structs
+ else if( name == "non_zero" ) { }
+ else if( name == "phantom_data" ) { }
+ else if( name == "range_full" ) { }
+ else if( name == "range" ) { }
+ else if( name == "range_from" ) { }
+ else if( name == "range_to" ) { }
+ else if( name == "unsafe_cell" ) { }
+
+ // Functions
+ else if( name == "panic" ) { }
+ else if( name == "panic_bounds_check" ) { }
+ else if( name == "panic_fmt" ) { }
+ else if( name == "str_eq" ) { }
+
else {
throw CompileError::Generic(FMT("Unknown lang item '" << name << "'"));
}
@@ -90,7 +105,13 @@ public:
{
TU_MATCH_DEF(::AST::Item, (i), (e),
(
- // TODO: Error
+ TODO(Span(), "Unknown item type with #[lang] attached at " << path);
+ ),
+ (Function,
+ handle_lang_item(crate, path, attr.string(), AST::ITEM_FN);
+ ),
+ (Struct,
+ handle_lang_item(crate, path, attr.string(), AST::ITEM_STRUCT);
),
(Trait,
handle_lang_item(crate, path, attr.string(), AST::ITEM_TRAIT);