[Newbies] Porting an old app to a recent image

Matthias Korn matthias.korn at uni-siegen.de
Thu Oct 9 13:37:39 UTC 2008


Hi,

I already tried to fileIn a minimal part (one Morph class) of the
application I want to port and started resolving the errors in the
debugger one by one. Still, now I am stuck with the following error:
Metaclass(Object)>>doesNotUnderstand: #category
(the full Stack Trace is attached)

Were there some changes in the Metaclass between V2 and V3 that explain
this error?

Thanks for the hint, though Karl. I didn't know about that possibility.

Regards,
Matthias


Am Wed, 8 Oct 2008 18:07:55 +0200
schrieb Karl Ramberg <karlramberg at gmail.com>:

> Matthias Korn wrote:
> > Hi all,
> >
> > is there some documentation, help, tools, etc. to port a Squeak app
> > written in SqueakV2.sources to a recent image?
> >
> > fileOut -> fileIn gives me all sorts of error messages I cannot
> > understand/debug.
> >
> > I actually just want to port parts of the app to re-use the code.
> > But it proofs really difficult for me
> Hi,
> in FileList you can try to look at the code with the CodeBrowser.
> Select the file you want to load, press the code button, or select 
> browse code from the context menu.
> This will load the code in a temporary way and you can browse it and
> see the methods that change, and file in the parts you want.
> 
> Karl
-------------- next part --------------
Subject: [BUG]Metaclass(Object)>>doesNotUnderstand: #category

9 October 2008 3:22:39 pm

VM: unix - a SmalltalkImage
Image: Squeak3.10beta [latest update: #7159]

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir /home/matsch/apps/sq3.10-7159dev08.03.1
Trusted Dir /home/matsch/apps/sq3.10-7159dev08.03.1/secure
Untrusted Dir /home/matsch/apps/sq3.10-7159dev08.03.1/My Squeak

Metaclass(Object)>>doesNotUnderstand: #category
	Receiver: ScratchFrameMorph class
	Arguments and temporary variables: 
		aMessage: 	category
	Receiver's instance variables: 
		superclass: 	Morph class
		methodDict: 	a MethodDictionary(#includeInNewMorphMenu->a CompiledMethod (127) #...etc...
		format: 	156
		instanceVariables: 	nil
		organization: 	('class initialization' initialize)
('instance creation' includeI...etc...
		thisClass: 	ScratchFrameMorph
		traitComposition: 	nil
		localSelectors: 	nil

Parser>>notify:at:
	Receiver: a Parser
	Arguments and temporary variables: 
		string: 	'out of scope'
		location: 	1653
	Receiver's instance variables: 
		source: 	a ReadStream 'readPaintSkinFrom: aDirectory
	"Read the Forms for my pai...etc...
		mark: 	1657
		hereChar: 	$,
		aheadChar: 	Character space
		token: 	'root'
		tokenType: 	#word
		currentComment: 	nil
		buffer: 	a WriteStream 'root'
		typeTable: 	#(#xBinary #xBinary #xBinary #xBinary #xBinary #xBinary #xBinary #xB...etc...
		here: 	#_
		hereType: 	#leftArrow
		hereMark: 	1655
		hereEnd: 	1655
		prevMark: 	1653
		prevEnd: 	1653
		encoder: 	{an Encoder}
		requestor: 	nil
		parseNode: 	{#(#Left #Middle #Right )}
		failBlock: 	[] in Compiler>>translate:noPattern:ifFail: {[^ failBlock value]}
		requestorOffset: 	0
		tempsMark: 	452
		doitFlag: 	false
		properties: 	a MethodProperties
		category: 	#'scratch skin'

Parser>>notify:
	Receiver: a Parser
	Arguments and temporary variables: 
		aString: 	'out of scope'
	Receiver's instance variables: 
		source: 	a ReadStream 'readPaintSkinFrom: aDirectory
	"Read the Forms for my pai...etc...
		mark: 	1657
		hereChar: 	$,
		aheadChar: 	Character space
		token: 	'root'
		tokenType: 	#word
		currentComment: 	nil
		buffer: 	a WriteStream 'root'
		typeTable: 	#(#xBinary #xBinary #xBinary #xBinary #xBinary #xBinary #xBinary #xB...etc...
		here: 	#_
		hereType: 	#leftArrow
		hereMark: 	1655
		hereEnd: 	1655
		prevMark: 	1653
		prevEnd: 	1653
		encoder: 	{an Encoder}
		requestor: 	nil
		parseNode: 	{#(#Left #Middle #Right )}
		failBlock: 	[] in Compiler>>translate:noPattern:ifFail: {[^ failBlock value]}
		requestorOffset: 	0
		tempsMark: 	452
		doitFlag: 	false
		properties: 	a MethodProperties
		category: 	#'scratch skin'

Encoder>>notify:
	Receiver: {an Encoder}
	Arguments and temporary variables: 
		string: 	'out of scope'
		req: 	a Parser
	Receiver's instance variables: 
		comment: 	nil
		pc: 	nil
		scopeTable: 	a Dictionary('aDirectory'->{aDirectory} 'category'->{category} 'cla...etc...
		nTemps: 	7
		supered: 	false
		requestor: 	nil
		class: 	ScratchFrameMorph class
		literalStream: 	a WriteStream #()
		selectorSet: 	a Dictionary(#*->{*} #+->{+} #,->{,} #-->{-} #/->{/} #'//'->{//} #...etc...
		litIndSet: 	a Dictionary(#ScratchSkin->nil->{ScratchSkin} #Utilities->{Utilities...etc...
		litSet: 	a LiteralDictionary(#(#Left #Middle #Right)->{#(#Left #Middle #Right )}...etc...
		sourceRanges: 	a Dictionary({normal := n , 'Button'}->(960 to: 972) {normal := n...etc...
		globalSourceRanges: 	an OrderedCollection({'ScratchSkin' . (648 to: 658) . false...etc...


--- The full stack ---
Metaclass(Object)>>doesNotUnderstand: #category
Parser>>notify:at:
Parser>>notify:
Encoder>>notify:
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Encoder>>encodeVariable:sourceRange:ifUnknown:
Parser>>variable
Parser>>expression
Parser>>statements:innerBlock:
Parser>>blockExpression
Parser>>primaryExpression
Parser>>messagePart:repeat:
Parser>>expression
Parser>>statements:innerBlock:
Parser>>blockExpression
Parser>>primaryExpression
Parser>>messagePart:repeat:
Parser>>expression
Parser>>statements:innerBlock:
Parser>>method:context:encoder:
[] in Parser>>parse:class:noPattern:context:notifying:ifFail: {[methNode := self     method: noPattern     context: ctxt     encoder: (Enco...]}
BlockContext>>on:do:
Parser>>parse:class:noPattern:context:notifying:ifFail:
Parser>>parse:class:category:noPattern:context:notifying:ifFail:
Compiler>>translate:noPattern:ifFail:
...etc...


More information about the Beginners mailing list