Status: Accepted Owner: stephane...@gmail.com Labels: Milestone-1.3 New issue 3666 by stephane...@gmail.com: Ensure that classOrTraitNamed: doesn't return globals. http://code.google.com/p/pharo/issues/detail?id=3666 Ensure that classOrTraitNamed: doesn't return globals. =============== Diff against System-ul.409 =============== Item was changed: ----- Method: SystemDictionary>>classOrTraitNamed: (in category 'classes and traits') ----- classOrTraitNamed: aString "aString is either a class or trait name or a class or trait name followed by ' class' or 'classTrait' respectively. Answer the class or metaclass it names." + | meta baseName | - | meta baseName baseClass | (aString endsWith: ' class') ifTrue: [meta := true. baseName := aString copyFrom: 1 to: aString size - 6] ifFalse: [ (aString endsWith: ' classTrait') ifTrue: [ meta := true. baseName := aString copyFrom: 1 to: aString size - 11] ifFalse: [ meta := false. baseName := aString]]. + + ^self at: baseName asSymbol ifPresent: + [ :global | + global isBehavior ifTrue: + [ meta + ifFalse: [ global ] + ifTrue: [ global classSide ]]]! - baseClass := Smalltalk at: baseName asSymbol ifAbsent: [^ nil]. - meta - ifTrue: [^ baseClass classSide] - ifFalse: [^ baseClass]!