aboutsummaryrefslogtreecommitdiff
path: root/gcc/input.h
diff options
context:
space:
mode:
authorPhilip Herron <herron.philip@googlemail.com>2024-09-19 16:45:54 +0100
committerPhilip Herron <philip.herron@embecosm.com>2024-09-27 10:01:40 +0000
commitc6a479fb9312b9166ca94a588aa85c9172f5ae19 (patch)
tree966cb6a96a6a09412811aff1c582075bc94c5b88 /gcc/input.h
parent423122c2f082da15d8546f3d4beeb5b2b7da4446 (diff)
downloadgcc-c6a479fb9312b9166ca94a588aa85c9172f5ae19.zip
gcc-c6a479fb9312b9166ca94a588aa85c9172f5ae19.tar.gz
gcc-c6a479fb9312b9166ca94a588aa85c9172f5ae19.tar.bz2
rust: Add support for Clone and Copy derive on generic types
When we generate derivations for Copy and Clone we need to make sure the associated impl block sets up the generic parameters and arguments correctly. This patch introduces the framework to copy chunks of the AST because we need to make sure these new AST nodes have their own associated id, calling clone on the nodes will just confuse name-resolution and subsequent mappings. Fixes #3139 gcc/rust/ChangeLog: * Make-lang.in: new objects * ast/rust-ast-builder.cc (Builder::generic_type_path_segment): new helper (Builder::single_generic_type_path): likewise (Builder::new_type): likewise (Builder::new_lifetime_param): likewise (Builder::new_type_param): likewise (Builder::new_lifetime): likewise (Builder::new_generic_args): likewise * ast/rust-ast-builder.h: new helper decls * ast/rust-ast.h: new const getters * ast/rust-path.h: likewise * ast/rust-type.h: likewise * expand/rust-derive-clone.cc (DeriveClone::clone_impl): take the types generics (DeriveClone::visit_tuple): likewise (DeriveClone::visit_struct): likewise (DeriveClone::visit_union): likewise * expand/rust-derive-clone.h: update header * expand/rust-derive-copy.cc (DeriveCopy::copy_impl): similarly take type generics (DeriveCopy::visit_struct): likewise (DeriveCopy::visit_tuple): likewise (DeriveCopy::visit_enum): likewise (DeriveCopy::visit_union): likewise * expand/rust-derive-copy.h: likewse * ast/rust-ast-builder-type.cc: New file. * ast/rust-ast-builder-type.h: New file. gcc/testsuite/ChangeLog: * rust/compile/issue-3139-1.rs: New test. * rust/compile/issue-3139-2.rs: New test. * rust/compile/issue-3139-3.rs: New test. * rust/compile/nr2/exclude: these all break nr2
Diffstat (limited to 'gcc/input.h')
0 files changed, 0 insertions, 0 deletions