diff options
author | Philip Herron <philip.herron@embecosm.com> | 2021-02-11 15:04:26 +0000 |
---|---|---|
committer | Philip Herron <herron.philip@googlemail.com> | 2021-02-13 09:54:47 +0000 |
commit | 3ae8d55860cbe95f80d5e5c76ca71883dbde0e10 (patch) | |
tree | 3fc0385c18fe11a4ceb8ae34ad3c208f027efebb /gcc/rust/backend | |
parent | fac8276f737351afbde34a85f2b6c224b400313b (diff) | |
download | gcc-3ae8d55860cbe95f80d5e5c76ca71883dbde0e10.zip gcc-3ae8d55860cbe95f80d5e5c76ca71883dbde0e10.tar.gz gcc-3ae8d55860cbe95f80d5e5c76ca71883dbde0e10.tar.bz2 |
Add char type
This might need changes in the Lexer to allow for wchar_t to be preserved.
Addresses #85
Diffstat (limited to 'gcc/rust/backend')
-rw-r--r-- | gcc/rust/backend/rust-compile-context.h | 8 | ||||
-rw-r--r-- | gcc/rust/backend/rust-compile-expr.h | 7 | ||||
-rw-r--r-- | gcc/rust/backend/rust-compile-tyty.h | 6 |
3 files changed, 21 insertions, 0 deletions
diff --git a/gcc/rust/backend/rust-compile-context.h b/gcc/rust/backend/rust-compile-context.h index 76255b0..3955a5b 100644 --- a/gcc/rust/backend/rust-compile-context.h +++ b/gcc/rust/backend/rust-compile-context.h @@ -437,6 +437,14 @@ public: translated = compiled_type; } + void visit (TyTy::CharType &type) override + { + ::Btype *compiled_type = nullptr; + bool ok = ctx->lookup_compiled_types (type.get_ty_ref (), &compiled_type); + rust_assert (ok); + translated = compiled_type; + } + private: TyTyResolveCompile (Context *ctx) : ctx (ctx) {} diff --git a/gcc/rust/backend/rust-compile-expr.h b/gcc/rust/backend/rust-compile-expr.h index 1e4aef6..c63479c 100644 --- a/gcc/rust/backend/rust-compile-expr.h +++ b/gcc/rust/backend/rust-compile-expr.h @@ -218,6 +218,13 @@ public: } return; + case HIR::Literal::CHAR: { + // FIXME needs wchar_t + char c = literal_value->as_string ().c_str ()[0]; + translated = ctx->get_backend ()->wchar_constant_expression (c); + } + return; + default: rust_fatal_error (expr.get_locus (), "unknown literal"); return; diff --git a/gcc/rust/backend/rust-compile-tyty.h b/gcc/rust/backend/rust-compile-tyty.h index 0629cbe..f591696 100644 --- a/gcc/rust/backend/rust-compile-tyty.h +++ b/gcc/rust/backend/rust-compile-tyty.h @@ -201,6 +201,12 @@ public: Linemap::predeclared_location ()); } + void visit (TyTy::CharType &) override + { + translated = backend->named_type ("char", backend->wchar_type (), + Linemap::predeclared_location ()); + } + private: TyTyCompile (::Backend *backend) : backend (backend), translated (nullptr), |