edwadli / note-hashtag

3 stars 0 forks source link

Cannot pass user-defined types to functions #105

Closed kevin1 closed 8 years ago

kevin1 commented 8 years ago

test program:

type t = {
  member = 1
}
fun F x = x

F (init t)

c++ (we need to add struct t; to the beginning of the program)

#include <iostream>
#include <string>
#include <vector>
#include "support.hpp"
t F(t);
struct t {
int64_t member;

t(int64_t member) : member(member) {}
};

int main()
{
return [&] () -> int64_t {
return [&] () -> int64_t {
[&] () -> t {
return ::F([&] () -> t {
return t(1);
}
());
}
();
return 0;
}
();
}
();
}

t F(t x)
{
return [&] () -> t {
return x;
}
();
}

clang:

<stdin>:5:1: error: unknown type name 't'
t F(t);
^
<stdin>:5:5: error: unknown type name 't'
t F(t);
    ^
2 errors generated.
error: Internal error: C++ compilation failed
edwadli commented 8 years ago

fixed by 4f323448