+ Module *module = new Module(parser.parse(*io, "<builtin>", BUILTIN_SOURCE));
+
+ NodeList<Statement> &shared_body = module->shared.content.body;
+ NodeList<Statement>::iterator insert_point = shared_body.begin();
+
+ RefPtr<BasicTypeDeclaration> type = new BasicTypeDeclaration;
+ type->source = BUILTIN_SOURCE;
+ type->name = "void";
+ type->kind = BasicTypeDeclaration::VOID;
+ shared_body.insert(insert_point, type);
+
+ type = new BasicTypeDeclaration;
+ type->source = BUILTIN_SOURCE;
+ type->name = "bool";
+ type->size = 1;
+ type->kind = BasicTypeDeclaration::BOOL;
+ shared_body.insert(insert_point, type);
+
+ type = new BasicTypeDeclaration;
+ type->source = BUILTIN_SOURCE;
+ type->name = "int";
+ type->size = 32;
+ type->kind = BasicTypeDeclaration::INT;
+ shared_body.insert(insert_point, type);
+
+ type = new BasicTypeDeclaration;
+ type->source = BUILTIN_SOURCE;
+ type->name = "float";
+ type->size = 32;
+ type->kind = BasicTypeDeclaration::FLOAT;
+ shared_body.insert(insert_point, type);
+
+ populate_types(module->shared);