www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Bug 90] New: local object.d overrides real object.d causing crash

reply d-bugmail puremagic.com writes:
http://d.puremagic.com/bugzilla/show_bug.cgi?id=90

           Summary: local object.d overrides real object.d causing crash
           Product: D
           Version: 0.151
          Platform: PC
        OS/Version: All
            Status: NEW
          Severity: minor
          Priority: P3
         Component: DMD
        AssignedTo: bugzilla digitalmars.com
        ReportedBy: regan netwin.co.nz


[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.


-- 
Apr 06 2006
next sibling parent Thomas Kuehne <thomas-dloop kuehne.cn> writes:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

d-bugmail puremagic.com 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-----
Apr 08 2006
prev sibling parent d-bugmail puremagic.com writes:
http://d.puremagic.com/bugzilla/show_bug.cgi?id=90


bugzilla digitalmars.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED




------- Comment #2 from bugzilla digitalmars.com  2006-04-11 01:33 -------
Fixed 0.153


-- 
Apr 10 2006