Mantis Bugtracker
  

Viewing Issue Simple Details Jump to Notes ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0007133 [Squeak] Compiler crash always 07-23-08 00:41 02-06-11 23:48
Reporter akuhn View Status public  
Assigned To leves
Priority normal Resolution fixed  
Status closed   Product Version
Summary 0007133: CompiledMethod#getSourceFor:In: crashed for non-standard method signatures
Description If a class refines Behavior#compilerClass with a custom compiler, the method CompiledMethod#getSourceFor:In: will crash because it does not take into account that methods may contain non-standard source code.

In particular it is the piece of code in CompiledMethod#getSourceFor:In: that tries to replace selectors in the source code if they are different that given in the method dictionary.

As a solution I suggest to just not doing any selector-magic when a class has a custom compiler.
Additional Information To reproduce

1. Subclass Compiler and make it accept methods like 'Foo foo: Bar bar ^bar' (eg by removing all uppercase words from the to be compiler sources).
2. Make a class which uses the new compiler as its compiler.
3. Make a method with above content.
4. compile fine, but ...
5. crashed when IDE calls CompiledMethod#getSourceFor:In:
Attached Files

- Relationships

- Notes
(0013861 - 188 - 212 - 212 - 212 - 212 - 212)
nicolas cellier
09-07-10 19:10

#getSourceFor:in: class changed in trunk 4.1
The new version exploits trailer. Is this problematic ?

Otherwise, subclass can also provide its own #getSourceFor:in:
What do you think ?
 
(0013901 - 227 - 227 - 227 - 227 - 227 - 227)
leves
11-06-10 06:08

The old Traits implementation shared methods between traits and classes. If a method was renamed in a class or a trait, then the name was changed in #getSourceFor:in:. Since methods are no longer shared, this problem is solved.
 

- Issue History
Date Modified Username Field Change
07-23-08 00:41 akuhn New Issue
09-07-10 19:10 nicolas cellier Note Added: 0013861
09-07-10 19:10 nicolas cellier Status new => feedback
11-06-10 06:08 leves Status feedback => resolved
11-06-10 06:08 leves Fixed in Version  => 4.1
11-06-10 06:08 leves Resolution open => fixed
11-06-10 06:08 leves Assigned To  => leves
11-06-10 06:08 leves Note Added: 0013901
02-06-11 23:48 leves Status resolved => closed


Mantis 1.0.8[^]
Copyright © 2000 - 2007 Mantis Group
43 total queries executed.
34 unique queries executed.
Powered by Mantis Bugtracker