cast question

2012-10-31 Thread Dan

Why do the commented out calls to goo fail?

Thanks
Dan

-
import std.stdio;
struct S {
}
void goo(const ref S s) {
  writeln(s);
}
struct T {
  S s;
  void foo(const ref T other) const {
goo(s);
// Error: function fdsaf.goo (ref const(S) s) is
//not callable using argument types (S)
// goo(cast(S)s);
// goo(cast()s);   // same error
writeln(typeid(S),  , typeid(s),  ,
typeid(cast()s),  , typeid(cast(S)s));

  }
}
void main() {
  T t;
  t.foo(t);
  const S s1;
  S s2;
  goo(s1);
  goo(s2);
  goo(cast(S) s2);
  // goo(cast(S) s1); Also fails
}



Re: cast question

2012-10-31 Thread Tobias Pankrath

On Wednesday, 31 October 2012 at 16:59:14 UTC, Dan wrote:

Why do the commented out calls to goo fail?

Thanks
Dan



Compiles fine with git-head.


Re: cast question

2012-10-31 Thread Dan
On Wednesday, 31 October 2012 at 17:11:47 UTC, Tobias Pankrath 
wrote:

On Wednesday, 31 October 2012 at 16:59:14 UTC, Dan wrote:

Why do the commented out calls to goo fail?

Thanks
Dan



Compiles fine with git-head.


I did git clone: git clone 
https://github.com/D-Programming-Language/dmd.git

The top of history is:
-
Commits in HEAD
1e720552 * origin/master origin/HEAD master
 | Author: Walter Bright wal...@walterbright.com
 | Date:   Wed Oct 31 02:33:17 2012 -0700
-
Then I built only dmd per instructions here 
http://xtzgzorex.wordpress.com/2011/07/31/d-building-dmd-and-phobos-on-linux/


dmd -v
DMD64 D Compiler v2.061

I assume that is all that is necessary. I ran this dmd on the 
code (with comments removed of course) and got the same error:


dmd  -g -w -property  /.../tmp/fdsaf.d
/.../tmp/fdsaf.d(11): Error: function fdsaf.goo (ref const(S) s) 
is not callable using argument types (S)
/.../tmp/fdsaf.d(12): Error: function fdsaf.goo (ref const(S) s) 
is not callable using argument types (S)
/.../tmp/fdsaf.d(26): Error: function fdsaf.goo (ref const(S) s) 
is not callable using argument types (S)


Any suggestions?

Thanks
Dan



Re: cast question

2012-10-31 Thread Tobias Pankrath
Ah, okay. I just dumped it into a file and ran dmd before leaving 
the office.


This looks like a compiler bug to me. The struct should be 
implicitly convertable to const(S)