diff options
author | John Hodge <tpg@mutabah.net> | 2016-03-17 14:10:13 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-03-17 14:10:13 +0800 |
commit | 28e67c7ed47e9b3891f5dc72de46edf3a3b94a6e (patch) | |
tree | 456182050f337b344b6112629a026cb20adcbb83 /src/expand/lang_item.cpp | |
parent | eba015ba443d72d49e6b3ddcb29a7f3d1efe799a (diff) | |
download | mrust-28e67c7ed47e9b3891f5dc72de46edf3a3b94a6e.tar.gz |
Expand - #[lang] extension
Diffstat (limited to 'src/expand/lang_item.cpp')
-rw-r--r-- | src/expand/lang_item.cpp | 23 |
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); |