March 06, 2003 Re: DMD 0.58 release | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel Yokomiso | "Daniel Yokomiso" <Daniel_member@pathlink.com> wrote in message news:b47sc8$ch3$1@digitaldaemon.com... > In article <b43dg1$rq7$1@digitaldaemon.com>, Walter says... > >"Daniel Yokomiso" <daniel_yokomiso@yahoo.com.br> wrote in message news:b432o0$krg$1@digitaldaemon.com... > >> It's only possible with global world analysis. Eiffel has such holes, > >> and they are trying to close them now, at least some, in the ECMA > >standard. > >> I vote against such feature in D. It'll be very easy to produce correct > ^^^^^^^ > >code > >> for it if there's no restriction. > >Hmm, you mean you are against the virtual type feature because you think it > >will be too easy to produce incorrect code? > Errr, yes. My mistake. With such feature (without the restrictions) it'll be > easy to forget about covariant attribute type changes when using frameworks or > other functions. I believe that's better safe than sorry. I'm just going to set aside the virtual type thing for the time being, as it clearly needs a lot more thought before it's workable. |
March 07, 2003 Re: DMD 0.58 release | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter | Long-standing: interface Interface { int foo; } class Class : Interface { } int main() { Class x = new Class; Interface y = x; printf("%d\n", y.foo); return 0; } This links, although of course it doesn't work properly - Interface should be rejected by semantic0 for having a field. |
March 07, 2003 Re: DMD 0.58 release | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter | Here are two minor bugs: // 1. bug template Ttest(T) { class Base { } } // DMD crashes if type ".Base" is ommitted class MyClass : instance Ttest(MyClass)/*.Base*/ { } // 2. bug void func(void function () v) { } int main(char args[][]) { static void f1(); func(&f1); // works // error: function func (void(*v)()) does not match argument types (void()) func(f1); return 0; } |
March 12, 2003 Re: DMD 0.58 release | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter | Using 0.59. Long-standing, I think: char[][2][] foo; void main() { char[][2] bar; foo ~= bar; } This fails compilation with "Internal error: ..\ztc\cod1.c 2608". |
March 12, 2003 Re: DMD 0.58 release | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter | With DMD 0.59. This code fails compilation with "Assertion failure: '!scopesym->isWithScopeSymbol()' on line 2241 in file 'mtype.c'": class Foo { struct Bar { } } void main() { with (new Foo) { Bar z; /* Offending line here. */ } } |
March 13, 2003 Re: DMD 0.58 release | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter | DMD 0.59. This code fails to compile with "non-constant expression _init_array___anonymous_ArrayRank__Rank": template ArrayRank() { struct Rank { } } template Array() { struct Array { typedef instance ArrayRank().Rank Rank1; Rank1 data; } } typedef instance Array().Array Array_int1; This code causes a null memory reference when compiling: template ArrayRank() { struct Rank { } } template Array() { typedef instance ArrayRank() foo; struct Array { foo.Rank data; } } typedef instance Array().Array Array_int1; |
March 13, 2003 Re: DMD 0.58 release | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter | With DMD 0.59: struct vec { int x; } typedef vec vec2; class Node { vec2 v; } This fails compilation with "non-constant expression _init_f_vec". struct vec { int x; } typedef vec vec2 = { 0 }; class Node { vec2 v; } Note the initialiser. This fails compilation with "Assertion failure: '0' on line 154 in file 'init.c'". |
March 14, 2003 Re: DMD 0.58 release | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter | DMD 0.59, long standing. This code does not compile, reporting "cannot implicitly convert void* to Object": void main() { Object x; x = 0 ? x : null; } |
March 18, 2003 Re: DMD 0.58 release | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter | DMD 0.59. This code compiles and runs but produces incorrect results: interface I { } class C : I { int x = 432; } int main() { C c = new C; printf("%p %d\n", c, c.x); printf("%p\n", (I) c); c = (C) (I) c; printf("%p %d\n", c, c.x); return 0; } This prints: 00880FD0 432 00880FDC 00880FDC 8720156 So casting from the interface to the instance doesn't adjust the pointer. When I add a method such as in the following, the cast from the interface to the class results in an Access Violation: interface I { void foo(); } class C : I { int x = 432; void foo() { } } |
March 19, 2003 Re: DMD 0.58 release | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter | DMD 0.59, a two-module error. Here's module f.d: class F { import g; void method(); } Here's module g.d: import f; class G : F { override void method(); } Compiling with "dmd f.d g.d" or "dmd f.d", I get "g.d(5): function method function method does not override any". This error disappears if the import statement in f.d is moved below the method declaration. |
Copyright © 1999-2021 by the D Language Foundation