summaryrefslogtreecommitdiff
path: root/src/ast/provided_module.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ast/provided_module.cpp')
-rw-r--r--src/ast/provided_module.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/ast/provided_module.cpp b/src/ast/provided_module.cpp
index bb1da26b..7bea81d4 100644
--- a/src/ast/provided_module.cpp
+++ b/src/ast/provided_module.cpp
@@ -12,7 +12,31 @@ void AST_InitProvidedModule()
});
AST::Path copy_marker_path({AST::PathNode("marker"),AST::PathNode("Copy")});
+ g_compiler_module.add_impl(AST::Impl(AST::TypeParams(), TypeRef(CORETYPE_U8), copy_marker_path));
+ g_compiler_module.add_impl(AST::Impl(AST::TypeParams(), TypeRef(CORETYPE_U16), copy_marker_path));
+ g_compiler_module.add_impl(AST::Impl(AST::TypeParams(), TypeRef(CORETYPE_U32), copy_marker_path));
+ g_compiler_module.add_impl(AST::Impl(AST::TypeParams(), TypeRef(CORETYPE_U64), copy_marker_path));
+ g_compiler_module.add_impl(AST::Impl(AST::TypeParams(), TypeRef(CORETYPE_UINT), copy_marker_path));
+
+ g_compiler_module.add_impl(AST::Impl(AST::TypeParams(), TypeRef(CORETYPE_I8), copy_marker_path));
+ g_compiler_module.add_impl(AST::Impl(AST::TypeParams(), TypeRef(CORETYPE_I16), copy_marker_path));
+ g_compiler_module.add_impl(AST::Impl(AST::TypeParams(), TypeRef(CORETYPE_I32), copy_marker_path));
+ g_compiler_module.add_impl(AST::Impl(AST::TypeParams(), TypeRef(CORETYPE_I64), copy_marker_path));
+ g_compiler_module.add_impl(AST::Impl(AST::TypeParams(), TypeRef(CORETYPE_INT), copy_marker_path));
+
g_compiler_module.add_impl(AST::Impl(AST::TypeParams(), TypeRef(CORETYPE_F32), copy_marker_path));
g_compiler_module.add_impl(AST::Impl(AST::TypeParams(), TypeRef(CORETYPE_F64), copy_marker_path));
+
+ // A hacky default impl of 'Sized', with a negative impl on [T]
+ AST::Path sized_marker_path({AST::PathNode("marker"),AST::PathNode("Sized")});
+ g_compiler_module.add_impl(AST::Impl(AST::TypeParams(), TypeRef(), copy_marker_path));
+ AST::TypeParams tps;
+ tps.add_ty_param( AST::TypeParam("T") );
+ g_compiler_module.add_impl(AST::Impl(
+ AST::Impl::TagNegative(),
+ ::std::move(tps),
+ TypeRef(TypeRef::TagUnsizedArray(), TypeRef(TypeRef::TagArg(), "T")),
+ copy_marker_path
+ ));
}