[Issue 2171] errors involving anonymous class literals expose	compiler internals
    d-bugmail at puremagic.com 
    d-bugmail at puremagic.com
       
    Thu Sep 27 01:26:50 PDT 2012
    
    
  
http://d.puremagic.com/issues/show_bug.cgi?id=2171
Don <clugdbug at yahoo.com.au> changed:
           What    |Removed                     |Added
----------------------------------------------------------------------------
            Version|D1                          |D1 & D2
            Summary|bizzare toCBuffer result    |errors involving anonymous
                   |when emit error message for |class literals expose
                   |bad source code             |compiler internals
--- Comment #1 from Don <clugdbug at yahoo.com.au> 2012-09-27 01:27:29 PDT ---
Original title:
bizzare toCBuffer result when emit error message for bad source code
Applies to both D1 and D2.
Reduced test case:
void f() {
  int k = new class(){};
}
-----
bug.d(3): Error: cannot implicitly convert expression (class __anonclass1 :
Object
{
    void* this;
}
 , new __anonclass1) of type bug.f.__anonclass1 to int
-----
Another example, not involving an error:
void f() {
        pragma(msg, (new class(){ void get(char[] s){} }).stringof);
}
which prints invalid D code:
----------------------------------
class __anonclass1 : Object
{
    void get(char[] s)
{
assert(this,"null this");
}
    void* this;
}
 , new __anonclass1
----------------------------------
When printing the expression I don't think it should be printing the class
contents. Would be enough to display:
bug.d(3): Error: cannot implicitly convert expression `new __anonclass1` of
type bug.f.__anonclass1 to int
-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
    
    
More information about the Digitalmars-d-bugs
mailing list