Bug 90 – local object.d overrides real object.d causing crash
Status
RESOLVED
Resolution
FIXED
Severity
minor
Priority
P3
Component
dmd
Product
D
Version
D1 (retired)
Platform
x86
OS
All
Creation time
2006-04-06T19:20:00Z
Last change time
2014-02-15T02:08:20Z
Assigned to
bugzilla
Creator
regan
Comments
Comment #0 by regan — 2006-04-06T19:20:45Z
[object.d] (an empty file)
[bug.d]
class A {}
void main() {}
C:\>dmd bug.d
bug.d(1): identifier 'Object' is not defined
bug.d(1): Object is used as a type
Assertion failure: 'b->type->ty == Tclass' on line 286 in file 'class.c'
abnormal program termination
The presence of an object.d file in the local directory overrides the real and required object.d in the dmd directory. This results in weird errors and a compiler crash.
FYI: Removing the class declaration from bug.d avoids the issue.
Suggestions (one or more of these would be nice):
1- Refuse to compile reserved file names.
2- Rename the reserved files to something less likely to collide.
3- Ignore reserved files (and .obj files for them) in any directory but the expected dmd directory.
Obviously doing #2 only, will only partially solve the problem (there remains a chance it will occur in the future), but, it does make the complete solution, involving #1 or #3, less likely to be a problem when a collision does occur.
Comment #1 by thomas-dloop — 2006-04-08T14:25:18Z
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
[email protected] schrieb am 2006-04-07:
> http://d.puremagic.com/bugzilla/show_bug.cgi?id=90
> [object.d] (an empty file)
>
> [bug.d]
> class A {}
> void main() {}
>
> C:\>dmd bug.d
> bug.d(1): identifier 'Object' is not defined
> bug.d(1): Object is used as a type
> Assertion failure: 'b->type->ty == Tclass' on line 286 in file 'class.c'
>
> abnormal program termination
>
> The presence of an object.d file in the local directory overrides the real and
> required object.d in the dmd directory. This results in weird errors and a
> compiler crash.
Added to DStress as
http://dstress.kuehne.cn/complex/object_02
Thomas
-----BEGIN PGP SIGNATURE-----
iD8DBQFEOBqr3w+/yD4P9tIRAhsGAKCTMWrTuMpR4Ru6JDycxDApPkNBXwCgksBU
LAySEK8qdbU5jKnJDhhpBA4=
=B0Nt
-----END PGP SIGNATURE-----