Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fileouts for Project, Package and Class are not implemented #186

Open
tukanos opened this issue Jan 24, 2025 · 9 comments
Open

Fileouts for Project, Package and Class are not implemented #186

tukanos opened this issue Jan 24, 2025 · 9 comments
Assignees
Labels
NeedsReview Bug needs review or a reproduction case P2-Significant Bug that makes performing normal tasks difficult or impossible

Comments

@tukanos
Copy link

tukanos commented Jan 24, 2025

Hi Eric,

I wanted to view the Project, Package and Class in plain text form so I tried to to File Out {Project Package Class}, but it seems that it is not yet implemented.

The code where it stops:
...self halt: 'This halt means GemTalk needs to fix something' ].

The reason being the #onCompletion: nil.

ericwinger added a commit that referenced this issue Jan 25, 2025
Pass in empty block instead of nil. 
Also removed nil check on completion block. Just put in an empty block if nil passed in. 
#186
@ericwinger ericwinger self-assigned this Jan 25, 2025
@ericwinger ericwinger added the P2-Significant Bug that makes performing normal tasks difficult or impossible label Jan 25, 2025
@ericwinger
Copy link
Member

@tukanos Thanks for catching this. I had left the nil test on the completion block to try to find places which might still need some completion block work. Probably not needed at this point, so I removed the check and fixed the three fileout methods.

It's not checked into main yet, but if you'd like to use it, you can checkout the latest eric branch in JfP.

@tukanos
Copy link
Author

tukanos commented Jan 31, 2025

Hi @ericwinger ,

I have checked this fix and it appears to have further issues.

  1. It is impossible to move the dialog window from the position where it appeared. I found out because the buttons on the window appeared outside the visible area and I wanted to move it upwards.
    Here is a short screencast of the situation:
impossible_to_move_a_dialog_window.mp4
  1. I have tried to rewrite the original file from Project file out and it brought up the debugger as it was complaining that the root path must exist. I just wanted to overwrite already existing file.

Here is the screencast:

error_when_saving.mp4

Here is debugger's walkback:

a FsENOTDIR occurred (error 2779)

[1] ProcessorScheduler >> _switchFrom:to: @2 line 8
[2] ProcessorScheduler >> _reschedule @7 line 7
[3] ProcessorScheduler >> _suspendProcess: @8 line 8
[4] GsProcess >> suspend @7 line 8
[5] [] in RowanService >> setDebugActionBlock @42 line 42
[6] ExecBlock1 (ExecBlock) >> cull: @7 line 7
[7] FsENOTDIR (AbstractException) >> _signalToDebugger @8 line 5
[8] FsENOTDIR (AbstractException) >> defaultAction @2 line 18
[9] FsENOTDIR (AbstractException) >> _defaultAction @4 line 4
[10] FsENOTDIR (AbstractException) >> _signal @2 line 20
[11] FsENOTDIR class (AbstractException class) >> signal @3 line 5
[12] FsLibcStat_Linux_x64 (FsLibcInterface) >> handleErrno: @4 line 7
[13] FsLibcStat_Linux_x64 (FsLibcStat_Linux) >> lstat: @16 line 18
[14] [] in DiskStore >> lstat: @9 line 5
[15] ExecBlock0 (ExecBlock) >> on:do: @3 line 44
[16] FsLinuxStore_x64 (DiskStore) >> lstat: @4 line 6
[17] [] in DiskStore >> exists: @7 line 4
[18] ExecBlock0 (ExecBlock) >> on:do: @3 line 44
[19] FsLinuxStore_x64 (DiskStore) >> exists: @2 line 5
[20] FsDiskFileSystem (FileSystem) >> exists: @4 line 5
[21] FileReference >> exists @2 line 3
[22] FileReference >> binaryWriteStreamOptions: @2 line 5
[23] FileReference (AbstractFileReference) >> writeStreamEncoded:options: @2 line 5
[24] FileReference (AbstractFileReference) >> writeStreamEncoded: @3 line 4
[25] RwGsModificationTopazWriterVisitorV2 >> _setBufferedStreamFor:extension: @5 line 4
[26] RwGsModificationTopazWriterVisitorV2 >> _setBufferedStreamFor: @3 line 3
[27] [] in RwGsModificationTopazWriterVisitorV2 >> export @10 line 6
[28] [] in Set >> do: @7 line 11
[29] KeyValueDictionary >> keysDo: @19 line 18
[30] Set >> do: @3 line 11
[31] RwGsModificationTopazWriterVisitorV2 >> export @3 line 3
[32] RwGsModificationTopazWriterVisitorV2 (RwModificationWriterVisitor) >> visit: @3 line 4
[33] RwResolvedProjectV2 >> exportTopazFormatTo:logClassCreation:excludeClassInitializers:excludeRemoveAllMethods: @21 line 16
[34] RwProject >> exportTopazFormatTo:logClassCreation:excludeClassInitializers:excludeRemoveAllMethods: @4 line 3
[35] RwProject >> exportTopazFormatTo: @2 line 3
[36] RowanProjectService >> exportTopazFormatTo: @3 line 3
[37] RowanProjectService (Object) >> perform:withArguments: @1 line 12
[38] RowanProjectService (RowanService) >> servicePerform:withArguments:shouldUpdate: @5 line 7
[39] RowanProjectService (RowanService) >> servicePerform:withArguments: @2 line 4
[40] RowanProjectService >> servicePerform:withArguments: @6 line 4
[41] [] in RowanService >> executeCommand @21 line 11
[42] ExecBlock0 (ExecBlock) >> on:do: @3 line 44
[43] [] in RowanService >> executeCommand @10 line 12
[44] ExecBlock0 (ExecBlock) >> on:do: @3 line 44
[45] RowanProjectService (RowanService) >> executeCommand @4 line 19
[46] RowanProjectService (Object) >> perform:withArguments: @1 line 12
[47] RsrMessageSend >> perform @5 line 4
[48] [] in RsrSendMessage >> perform:answerUsing: @9 line 6
[49] ExecBlock0 (ExecBlock) >> on:do: @3 line 44
[50] RsrSendMessage >> perform:answerUsing: @3 line 9
[51] [] in RsrSendMessage >> executeFor: @34 line 21
[52] ExecBlock0 (ExecBlock) >> on:do: @3 line 44
[53] [] in RsrSendMessage >> executeFor: @9 line 22
[54] ExecBlock0 (ExecBlock) >> ensure: @2 line 12
[55] RsrSendMessage >> executeFor: @4 line 26
[56] [] in RsrConnection >> _receivedCommand: @10 line 7
[57] [] in RsrProcessModel >> fork:named: @7 line 5
[58] ExecBlock >> valueWithArguments: @1 line 7
[59] GsProcess >> _start @7 line 16
[60] GsNMethod class >> _gsReturnToC @1 line 11
===============================================
[1] ProcessorScheduler >> _switchFrom:to: @2 line 8
	receiver oop(30625025) == aProcessorScheduler

instance variables:
	-activeProcess oop(31661057) == GsProcess(oop=31661057, status=active, priority=15, block=anExecBlock, args=anArray( ), 
   GsProcess >> _reportAt: @7 line 10
   GsProcess >> _reportOfSize: @12 line 11
   GsProcess >> _reportString ...
	-criticalMethods oop(45918721) == anIdentitySet( GsNMethod AbstractException>>_signalAsync:, GsNMethod AbstractException>>_signalTimeout:, GsNMethod GsProcess class>>_newForBlock:with:env:, GsNMethod GsProcess class>>_forkBlock:with:e...
	-delayQueue oop(30657025) == aSortedCollection( )
	-lastGroup oop(2) == 0
	-pollResults oop(30656769) == anArray( )
	-readyQueue oop(30656001) == aSortedCollection( )
	-socketsPolled oop(30657793) == anArray( aGsSignalingSocket, aGsSignalingSocket)
	-suspendedSet oop(30657281) == anIdentitySet( GsProcess(oop=31615233, status=suspended, priority=15, block=anExecBlock, args=anArray( ), 
   ProcessorScheduler >> _switchFrom:to: @2 line 8
   ProcessorScheduler >> _reschedule @7 li...
	-timeoutThreadActive oop(12) == false
	-waitingSet oop(30657537) == anIdentitySet( GsProcess(oop=31983617, status=waiting on a Semaphore, priority=30, block=anExecBlock, args=anArray( ), 
   ProcessorScheduler >> _switchFrom:to: @2 line 8
   ProcessorScheduler >> _res...

temporary variables and parameters:
	newProcess oop(31661057) == GsProcess(oop=31661057, status=active, priority=15, block=anExecBlock, args=anArray( ), 
   GsProcess >> _reportAt: @7 line 10
   GsProcess >> _reportOfSize: @12 line 11
   GsProcess >> _reportString ...
	oldProcess oop(31615233) == GsProcess(oop=31615233, status=suspended, priority=15, block=anExecBlock, args=anArray( ), 
   ProcessorScheduler >> _switchFrom:to: @2 line 8
   ProcessorScheduler >> _reschedule @7 line 7
   Process...
----------------------------------------------------
[2] ProcessorScheduler >> _reschedule @7 line 7
	receiver oop(30625025) == aProcessorScheduler

instance variables:
	-activeProcess oop(31661057) == GsProcess(oop=31661057, status=active, priority=15, block=anExecBlock, args=anArray( ), 
   GsProcess >> _reportAt: @7 line 10
   GsProcess >> _reportOfSize: @12 line 11
   GsProcess >> _reportString ...
	-criticalMethods oop(45918721) == anIdentitySet( GsNMethod AbstractException>>_signalAsync:, GsNMethod AbstractException>>_signalTimeout:, GsNMethod GsProcess class>>_newForBlock:with:env:, GsNMethod GsProcess class>>_forkBlock:with:e...
	-delayQueue oop(30657025) == aSortedCollection( )
	-lastGroup oop(2) == 0
	-pollResults oop(30656769) == anArray( )
	-readyQueue oop(30656001) == aSortedCollection( )
	-socketsPolled oop(30657793) == anArray( aGsSignalingSocket, aGsSignalingSocket)
	-suspendedSet oop(30657281) == anIdentitySet( GsProcess(oop=31615233, status=suspended, priority=15, block=anExecBlock, args=anArray( ), 
   ProcessorScheduler >> _switchFrom:to: @2 line 8
   ProcessorScheduler >> _reschedule @7 li...
	-timeoutThreadActive oop(12) == false
	-waitingSet oop(30657537) == anIdentitySet( GsProcess(oop=31983617, status=waiting on a Semaphore, priority=30, block=anExecBlock, args=anArray( ), 
   ProcessorScheduler >> _switchFrom:to: @2 line 8
   ProcessorScheduler >> _res...

temporary variables and parameters:
	newProc oop(31661057) == GsProcess(oop=31661057, status=active, priority=15, block=anExecBlock, args=anArray( ), 
   GsProcess >> _reportAt: @7 line 10
   GsProcess >> _reportOfSize: @12 line 11
   GsProcess >> _reportString ...
	oldProc oop(31615233) == GsProcess(oop=31615233, status=suspended, priority=15, block=anExecBlock, args=anArray( ), 
   ProcessorScheduler >> _switchFrom:to: @2 line 8
   ProcessorScheduler >> _reschedule @7 line 7
   Process...
----------------------------------------------------
[3] ProcessorScheduler >> _suspendProcess: @8 line 8
	receiver oop(30625025) == aProcessorScheduler

instance variables:
	-activeProcess oop(31661057) == GsProcess(oop=31661057, status=active, priority=15, block=anExecBlock, args=anArray( ), 
   GsProcess >> _reportAt: @7 line 10
   GsProcess >> _reportOfSize: @12 line 11
   GsProcess >> _reportString ...
	-criticalMethods oop(45918721) == anIdentitySet( GsNMethod AbstractException>>_signalAsync:, GsNMethod AbstractException>>_signalTimeout:, GsNMethod GsProcess class>>_newForBlock:with:env:, GsNMethod GsProcess class>>_forkBlock:with:e...
	-delayQueue oop(30657025) == aSortedCollection( )
	-lastGroup oop(2) == 0
	-pollResults oop(30656769) == anArray( )
	-readyQueue oop(30656001) == aSortedCollection( )
	-socketsPolled oop(30657793) == anArray( aGsSignalingSocket, aGsSignalingSocket)
	-suspendedSet oop(30657281) == anIdentitySet( GsProcess(oop=31615233, status=suspended, priority=15, block=anExecBlock, args=anArray( ), 
   ProcessorScheduler >> _switchFrom:to: @2 line 8
   ProcessorScheduler >> _reschedule @7 li...
	-timeoutThreadActive oop(12) == false
	-waitingSet oop(30657537) == anIdentitySet( GsProcess(oop=31983617, status=waiting on a Semaphore, priority=30, block=anExecBlock, args=anArray( ), 
   ProcessorScheduler >> _switchFrom:to: @2 line 8
   ProcessorScheduler >> _res...

temporary variables and parameters:
	aProcess oop(31615233) == GsProcess(oop=31615233, status=suspended, priority=15, block=anExecBlock, args=anArray( ), 
   ProcessorScheduler >> _switchFrom:to: @2 line 8
   ProcessorScheduler >> _reschedule @7 line 7
   Process...
	onQ oop(20) == nil
	suspSet oop(30657281) == anIdentitySet( GsProcess(oop=31615233, status=suspended, priority=15, block=anExecBlock, args=anArray( ), 
   ProcessorScheduler >> _switchFrom:to: @2 line 8
   ProcessorScheduler >> _reschedule @7 li...
----------------------------------------------------
[4] GsProcess >> suspend @7 line 8
	receiver oop(31615233) == GsProcess(oop=31615233, status=suspended, priority=15, block=anExecBlock, args=anArray( ), 
   ProcessorScheduler >> _switchFrom:to: @2 line 8
   ProcessorScheduler >> _reschedule @7 line 7
   Process...

instance variables:
	-arStack oop(31615745) == aGsStackBuffer( 164, GsNMethod ProcessorScheduler>>_switchFrom:to:, -3032, 185, GsProcess(oop=31661057, status=active, priority=15, block=anExecBlock, args=anArray( ), 
   GsProcess >> _reportAt: @7 l...
	-args oop(233217) == anArray( )
	-block oop(31587329) == anExecBlock
	-blockResult oop(276) == remoteNil
	-breakpointLevel oop(10) == 1
	-clientData oop(20) == nil
	-dbgFpsCache oop(31587073) == anArray( 3, 11, 17, 22, 29, 34, 42, 46, 51, 56, 60, 65, 73, 79, 86, 93, 99, 106, 116, 121, 126, 131, 137, 143, 149, 155, 164, 170, 182, 189, 195, 199, 208, 216, 224, 229, 234, 240, 247, 253, 260, 267,...
	-debugActionBlock oop(31586817) == anExecBlock1
	-environment oop(20) == nil
	-ffiErrno oop(162) == 20
	-group oop(20) == nil
	-interruptFlag_stEntryCount oop(10) == 1
	-ioSelectResult oop(20) == nil
	-joiners oop(20) == nil
	-lastBreakpt oop(20) == nil
	-modeInfo oop(86033629186) == 10754203648
	-msgEnvironmentId oop(2) == 0
	-name oop(31586561) == 'RowanProjectService>>executeCommand'
	-onQueue oop(30657281) == anIdentitySet( GsProcess(oop=31615233, status=suspended, priority=15, block=anExecBlock, args=anArray( ), 
   ProcessorScheduler >> _switchFrom:to: @2 line 8
   ProcessorScheduler >> _reschedule @7 li...
	-parentProcess oop(31983873) == GsProcess(oop=31983873, status=waiting on a GsSignalingSocket, priority=30, block=anExecBlock, args=anArray( ), 
   ProcessorScheduler >> _switchFrom:to: @2 line 8
   ProcessorScheduler >> _reschedule...
	-priority_use oop(131941395333130) == 16492674416641
	-signalTime oop(20) == nil
	-signalledException oop(20) == nil
	-stackId oop(18446744073709551610) == -1
	-stackSerialNum oop(69671305258) == 8708913157
	-startSeconds oop(11270936325785433606) == 760028138.060894
	-topFpOffset oop(18446744073709526850) == -3096
	-uaCount_depth oop(482) == 60
	-waitingOn oop(20) == nil

temporary variables and parameters:
----------------------------------------------------
[5] [] in RowanService >> setDebugActionBlock @42 line 42
	receiver oop(31586817) == anExecBlock1

instance variables:

temporary variables and parameters:
	compileErrorService oop(20) == nil
	debuggerResult oop(20) == nil
	debuggerResult oop(20) == nil
	ex oop(44337665) == a FsENOTDIR occurred (error 2779)
	proc oop(31615233) == GsProcess(oop=31615233, status=suspended, priority=15, block=anExecBlock, args=anArray( ), 
   ProcessorScheduler >> _switchFrom:to: @2 line 8
   ProcessorScheduler >> _reschedule @7 line 7
   Process...
	self oop(31902465) == aRowanProjectService:Announcements
	suspendedProcess oop(31615233) == GsProcess(oop=31615233, status=suspended, priority=15, block=anExecBlock, args=anArray( ), 
   ProcessorScheduler >> _switchFrom:to: @2 line 8
   ProcessorScheduler >> _reschedule @7 line 7
   Process...
	suspendedProcess oop(31615233) == GsProcess(oop=31615233, status=suspended, priority=15, block=anExecBlock, args=anArray( ), 
   ProcessorScheduler >> _switchFrom:to: @2 line 8
   ProcessorScheduler >> _reschedule @7 line 7
   Process...
----------------------------------------------------
[6] ExecBlock1 (ExecBlock) >> cull: @7 line 7
	receiver oop(31586817) == anExecBlock1

instance variables:

temporary variables and parameters:
	anArg oop(44337665) == a FsENOTDIR occurred (error 2779)
----------------------------------------------------
[7] FsENOTDIR (AbstractException) >> _signalToDebugger @8 line 5
	receiver oop(44337665) == a FsENOTDIR occurred (error 2779)

instance variables:
	-currGsHandler oop(20) == nil
	-gsArgs oop(20) == nil
	-gsDetails oop(20) == nil
	-gsNumber oop(22234) == 2779
	-gsReason oop(20) == nil
	-gsResumable oop(12) == false
	-gsStack oop(20) == nil
	-gsTrappable oop(268) == true
	-messageText oop(44337921) == 'a FsENOTDIR occurred (error 2779)'
	-tag oop(20) == nil

temporary variables and parameters:
	blk oop(31586817) == anExecBlock1
	proc oop(31615233) == GsProcess(oop=31615233, status=suspended, priority=15, block=anExecBlock, args=anArray( ), 
   ProcessorScheduler >> _switchFrom:to: @2 line 8
   ProcessorScheduler >> _reschedule @7 line 7
   Process...
	res oop(20) == nil
----------------------------------------------------
[8] FsENOTDIR (AbstractException) >> defaultAction @2 line 18
	receiver oop(44337665) == a FsENOTDIR occurred (error 2779)

instance variables:
	-currGsHandler oop(20) == nil
	-gsArgs oop(20) == nil
	-gsDetails oop(20) == nil
	-gsNumber oop(22234) == 2779
	-gsReason oop(20) == nil
	-gsResumable oop(12) == false
	-gsStack oop(20) == nil
	-gsTrappable oop(268) == true
	-messageText oop(44337921) == 'a FsENOTDIR occurred (error 2779)'
	-tag oop(20) == nil

temporary variables and parameters:
----------------------------------------------------
[9] FsENOTDIR (AbstractException) >> _defaultAction @4 line 4
	receiver oop(44337665) == a FsENOTDIR occurred (error 2779)

instance variables:
	-currGsHandler oop(20) == nil
	-gsArgs oop(20) == nil
	-gsDetails oop(20) == nil
	-gsNumber oop(22234) == 2779
	-gsReason oop(20) == nil
	-gsResumable oop(12) == false
	-gsStack oop(20) == nil
	-gsTrappable oop(268) == true
	-messageText oop(44337921) == 'a FsENOTDIR occurred (error 2779)'
	-tag oop(20) == nil

temporary variables and parameters:
	res oop(20) == nil
----------------------------------------------------
[10] FsENOTDIR (AbstractException) >> _signal @2 line 20
	receiver oop(44337665) == a FsENOTDIR occurred (error 2779)

instance variables:
	-currGsHandler oop(20) == nil
	-gsArgs oop(20) == nil
	-gsDetails oop(20) == nil
	-gsNumber oop(22234) == 2779
	-gsReason oop(20) == nil
	-gsResumable oop(12) == false
	-gsStack oop(20) == nil
	-gsTrappable oop(268) == true
	-messageText oop(44337921) == 'a FsENOTDIR occurred (error 2779)'
	-tag oop(20) == nil

temporary variables and parameters:
	res oop(20) == nil
----------------------------------------------------
[11] FsENOTDIR class (AbstractException class) >> signal @3 line 5
	receiver oop(30214401) == FsENOTDIR

instance variables:

temporary variables and parameters:
----------------------------------------------------
[12] FsLibcStat_Linux_x64 (FsLibcInterface) >> handleErrno: @4 line 7
	receiver oop(45927425) == aFsLibcStat_Linux_x64

instance variables:
	-fstat oop(20) == nil
	-library oop(45735425) == aCLibrary
	-lstat oop(45735937) == aCCallout __lxstat
	-mkdir oop(20) == nil
	-stat oop(45735681) == aCCallout __xstat

temporary variables and parameters:
	errorClass oop(30214401) == FsENOTDIR
	errorNumber oop(162) == 20
----------------------------------------------------
[13] FsLibcStat_Linux_x64 (FsLibcStat_Linux) >> lstat: @16 line 18
	receiver oop(45927425) == aFsLibcStat_Linux_x64

instance variables:
	-fstat oop(20) == nil
	-library oop(45735425) == aCLibrary
	-lstat oop(45735937) == aCCallout __lxstat
	-mkdir oop(20) == nil
	-stat oop(45735681) == aCCallout __xstat

temporary variables and parameters:
	errnoHolder oop(44342273) == anArray( 20)
	pathString oop(44338433) == '/opt/JadeiteForPharo/justToSee/Announcements./Announcements.'
	statStruct oop(44339457) == aFsStatStruct_Linux_x64
	status oop(18446744073709551610) == -1
----------------------------------------------------
[14] [] in DiskStore >> lstat: @9 line 5
	receiver oop(44342529) == anExecBlock0

instance variables:

temporary variables and parameters:
	pathString oop(44338433) == '/opt/JadeiteForPharo/justToSee/Announcements./Announcements.'
	self oop(45736961) == aFsLinuxStore_x64
----------------------------------------------------
[15] ExecBlock0 (ExecBlock) >> on:do: @3 line 44
	receiver oop(44342529) == anExecBlock0

instance variables:

temporary variables and parameters:
	exceptionSelector oop(30222849) == FsENOENT
	fastPath oop(268) == true
	handlerBlock oop(44343041) == anExecBlock
----------------------------------------------------
[16] FsLinuxStore_x64 (DiskStore) >> lstat: @4 line 6
	receiver oop(45736961) == aFsLinuxStore_x64

instance variables:
	-libcDirent oop(45758721) == aFsLibcDirent_Linux
	-libcFcntl oop(45758977) == aFsLibcFcntl_Linux
	-libcStat oop(45927425) == aFsLibcStat_Linux_x64
	-libcStdio oop(45759489) == aFsLibcStdio_Linux
	-libcUnistd oop(45759233) == aFsLibcUnistd_Linux

temporary variables and parameters:
	aPath oop(44343553) == Path / 'opt' / 'JadeiteForPharo' / 'justToSee' / 'Announcements.' / 'Announcements.'
	pathString oop(44338433) == '/opt/JadeiteForPharo/justToSee/Announcements./Announcements.'
----------------------------------------------------
[17] [] in DiskStore >> exists: @7 line 4
	receiver oop(44343809) == anExecBlock0

instance variables:

temporary variables and parameters:
	aPath oop(44343553) == Path / 'opt' / 'JadeiteForPharo' / 'justToSee' / 'Announcements.' / 'Announcements.'
	self oop(45736961) == aFsLinuxStore_x64
----------------------------------------------------
[18] ExecBlock0 (ExecBlock) >> on:do: @3 line 44
	receiver oop(44343809) == anExecBlock0

instance variables:

temporary variables and parameters:
	exceptionSelector oop(29593345) == FileDoesNotExistException
	fastPath oop(268) == true
	handlerBlock oop(44344065) == anExecBlock
----------------------------------------------------
[19] FsLinuxStore_x64 (DiskStore) >> exists: @2 line 5
	receiver oop(45736961) == aFsLinuxStore_x64

instance variables:
	-libcDirent oop(45758721) == aFsLibcDirent_Linux
	-libcFcntl oop(45758977) == aFsLibcFcntl_Linux
	-libcStat oop(45927425) == aFsLibcStat_Linux_x64
	-libcStdio oop(45759489) == aFsLibcStdio_Linux
	-libcUnistd oop(45759233) == aFsLibcUnistd_Linux

temporary variables and parameters:
	aPath oop(44343553) == Path / 'opt' / 'JadeiteForPharo' / 'justToSee' / 'Announcements.' / 'Announcements.'
	stat oop(20) == nil
----------------------------------------------------
[20] FsDiskFileSystem (FileSystem) >> exists: @4 line 5
	receiver oop(45767425) == aFsDiskFileSystem

instance variables:

temporary variables and parameters:
	aResolvable oop(44343553) == Path / 'opt' / 'JadeiteForPharo' / 'justToSee' / 'Announcements.' / 'Announcements.'
----------------------------------------------------
[21] FileReference >> exists @2 line 3
	receiver oop(44344577) == FileReference disk @ '/opt/JadeiteForPharo/justToSee/Announcements./Announcements.'

instance variables:
	-filesystem oop(45767425) == aFsDiskFileSystem
	-path oop(44343553) == Path / 'opt' / 'JadeiteForPharo' / 'justToSee' / 'Announcements.' / 'Announcements.'

temporary variables and parameters:
----------------------------------------------------
[22] FileReference >> binaryWriteStreamOptions: @2 line 5
	receiver oop(44344577) == FileReference disk @ '/opt/JadeiteForPharo/justToSee/Announcements./Announcements.'

instance variables:
	-filesystem oop(45767425) == aFsDiskFileSystem
	-path oop(44343553) == Path / 'opt' / 'JadeiteForPharo' / 'justToSee' / 'Announcements.' / 'Announcements.'

temporary variables and parameters:
	fileDescriptor oop(20) == nil
	options oop(44344833) == aFsFileOpeningOptions_Linux_x64
----------------------------------------------------
[23] FileReference (AbstractFileReference) >> writeStreamEncoded:options: @2 line 5
	receiver oop(44344577) == FileReference disk @ '/opt/JadeiteForPharo/justToSee/Announcements./Announcements.'

instance variables:
	-filesystem oop(45767425) == aFsDiskFileSystem
	-path oop(44343553) == Path / 'opt' / 'JadeiteForPharo' / 'justToSee' / 'Announcements.' / 'Announcements.'

temporary variables and parameters:
	anEncoding oop(67642113) == 'utf8'
	binaryStream oop(20) == nil
	openingOptions oop(44344833) == aFsFileOpeningOptions_Linux_x64
----------------------------------------------------
[24] FileReference (AbstractFileReference) >> writeStreamEncoded: @3 line 4
	receiver oop(44344577) == FileReference disk @ '/opt/JadeiteForPharo/justToSee/Announcements./Announcements.'

instance variables:
	-filesystem oop(45767425) == aFsDiskFileSystem
	-path oop(44343553) == Path / 'opt' / 'JadeiteForPharo' / 'justToSee' / 'Announcements.' / 'Announcements.'

temporary variables and parameters:
	anEncoding oop(67642113) == 'utf8'
----------------------------------------------------
[25] RwGsModificationTopazWriterVisitorV2 >> _setBufferedStreamFor:extension: @5 line 4
	receiver oop(44345089) == aRwGsModificationTopazWriterVisitorV2

instance variables:
	-bufferedStream oop(20) == nil
	-buildPackageNamesMap oop(268) == true
	-classDefPackageNameMap oop(45958401) == aDictionary( 'WeakAnnouncementSubscription'->'Announcements-Core-GemStone', 'GemToGemAnnouncement'->'Announcements-Core-GemStone', 'AnnouncementMockD'->'Announcements-Core-GemStone-Test', 'Announcer'-...
	-classDefinitions oop(45978369) == aDictionary( 'WeakAnnouncementSubscription'->aRwClassDefinition for WeakAnnouncementSubscription, 'GemToGemAnnouncement'->aRwClassDefinition for GemToGemAnnouncement, 'AnnouncementMockD'->aRwClassDefi...
	-classExtPackageNameMap oop(46001409) == anIdentityKeyValueDictionary( aRwClassExtensionDefinition for TestAsserter->'Announcements-Extensions-GemStone', aRwClassExtensionDefinition for ExecBlock->'Announcements-Extensions-GemStone')
	-classExtensions oop(45962241) == aDictionary( 'ExecBlock'->aSet( aRwClassExtensionDefinition for ExecBlock), 'TestAsserter'->aSet( aRwClassExtensionDefinition for TestAsserter))
	-classInitializationDefinitions oop(20) == nil
	-classSymbolDictionaryNames oop(32903425) == aDictionary( 'WeakAnnouncementSubscription'->'Globals', 'GemToGemAnnouncement'->'Globals', 'AnnouncementMockD'->'Globals', 'Announcer'->'Globals', 'Announcement'->'Globals', 'AnnouncementMockC'->'Glob...
	-currentClassDefinition oop(32904449) == aRwClassDefinition for AnnouncementMockD
	-currentClassExtension oop(31614977) == aRwClassExtensionDefinition for TestAsserter
	-currentPackageDefinition oop(44359169) == aRwPackageDefinition for Announcements-Core-GemStone-Test
	-currentProjectDefinition oop(44348929) == aRwResolvedProjectV2 for Announcements
	-currentTraitDefinition oop(20) == nil
	-excludeClassInitializers oop(12) == false
	-excludeRemoveAllMethods oop(12) == false
	-fileNamesInFileInOrder oop(20) == nil
	-filenameExtension oop(32904705) == ''
	-logCreation oop(12) == false
	-packageConvention oop(20) == nil
	-repositoryRootPath oop(45992449) == FileReference disk @ '/opt/JadeiteForPharo/justToSee/Announcements.'
	-topazFileFooter oop(20) == nil
	-topazFileHeader oop(20) == nil
	-topazFilename oop(32903681) == 'Announcements'
	-topazFilenamePackageNamesMap oop(45959425) == aDictionary( 'Announcements'->aSet( 'Announcements-Core-GemStone', 'Announcements-Extensions-GemStone', 'Announcements-Core-GemStone-Test'))
	-traitDefinitions oop(20) == nil

temporary variables and parameters:
	encodedStream oop(20) == nil
	extension oop(32904705) == ''
	filename oop(32903681) == 'Announcements'
----------------------------------------------------
[26] RwGsModificationTopazWriterVisitorV2 >> _setBufferedStreamFor: @3 line 3
	receiver oop(44345089) == aRwGsModificationTopazWriterVisitorV2

instance variables:
	-bufferedStream oop(20) == nil
	-buildPackageNamesMap oop(268) == true
	-classDefPackageNameMap oop(45958401) == aDictionary( 'WeakAnnouncementSubscription'->'Announcements-Core-GemStone', 'GemToGemAnnouncement'->'Announcements-Core-GemStone', 'AnnouncementMockD'->'Announcements-Core-GemStone-Test', 'Announcer'-...
	-classDefinitions oop(45978369) == aDictionary( 'WeakAnnouncementSubscription'->aRwClassDefinition for WeakAnnouncementSubscription, 'GemToGemAnnouncement'->aRwClassDefinition for GemToGemAnnouncement, 'AnnouncementMockD'->aRwClassDefi...
	-classExtPackageNameMap oop(46001409) == anIdentityKeyValueDictionary( aRwClassExtensionDefinition for TestAsserter->'Announcements-Extensions-GemStone', aRwClassExtensionDefinition for ExecBlock->'Announcements-Extensions-GemStone')
	-classExtensions oop(45962241) == aDictionary( 'ExecBlock'->aSet( aRwClassExtensionDefinition for ExecBlock), 'TestAsserter'->aSet( aRwClassExtensionDefinition for TestAsserter))
	-classInitializationDefinitions oop(20) == nil
	-classSymbolDictionaryNames oop(32903425) == aDictionary( 'WeakAnnouncementSubscription'->'Globals', 'GemToGemAnnouncement'->'Globals', 'AnnouncementMockD'->'Globals', 'Announcer'->'Globals', 'Announcement'->'Globals', 'AnnouncementMockC'->'Glob...
	-currentClassDefinition oop(32904449) == aRwClassDefinition for AnnouncementMockD
	-currentClassExtension oop(31614977) == aRwClassExtensionDefinition for TestAsserter
	-currentPackageDefinition oop(44359169) == aRwPackageDefinition for Announcements-Core-GemStone-Test
	-currentProjectDefinition oop(44348929) == aRwResolvedProjectV2 for Announcements
	-currentTraitDefinition oop(20) == nil
	-excludeClassInitializers oop(12) == false
	-excludeRemoveAllMethods oop(12) == false
	-fileNamesInFileInOrder oop(20) == nil
	-filenameExtension oop(32904705) == ''
	-logCreation oop(12) == false
	-packageConvention oop(20) == nil
	-repositoryRootPath oop(45992449) == FileReference disk @ '/opt/JadeiteForPharo/justToSee/Announcements.'
	-topazFileFooter oop(20) == nil
	-topazFileHeader oop(20) == nil
	-topazFilename oop(32903681) == 'Announcements'
	-topazFilenamePackageNamesMap oop(45959425) == aDictionary( 'Announcements'->aSet( 'Announcements-Core-GemStone', 'Announcements-Extensions-GemStone', 'Announcements-Core-GemStone-Test'))
	-traitDefinitions oop(20) == nil

temporary variables and parameters:
	filename oop(32903681) == 'Announcements'
----------------------------------------------------
[27] [] in RwGsModificationTopazWriterVisitorV2 >> export @10 line 6
	receiver oop(45979137) == anExecBlock1

instance variables:

temporary variables and parameters:
	classDefinitionsInOrder oop(20) == nil
	classDefinitionsList oop(20) == nil
	classDefinitionsList oop(20) == nil
	classExtensionsInOrder oop(20) == nil
	classExtensionsList oop(20) == nil
	classExtensionsList oop(20) == nil
	filename oop(32903681) == 'Announcements'
	packageNames oop(45958657) == aSet( 'Announcements-Core-GemStone', 'Announcements-Extensions-GemStone', 'Announcements-Core-GemStone-Test')
	packageNames oop(45958657) == aSet( 'Announcements-Core-GemStone', 'Announcements-Extensions-GemStone', 'Announcements-Core-GemStone-Test')
	self oop(44345089) == aRwGsModificationTopazWriterVisitorV2
	traitDefinitionsInOrder oop(20) == nil
	traitDefinitionsList oop(20) == nil
	traitDefinitionsList oop(20) == nil
----------------------------------------------------
[28] [] in Set >> do: @7 line 11
	receiver oop(45978881) == anExecBlock1

instance variables:

temporary variables and parameters:
	aBlock oop(45979137) == anExecBlock1
	aKey oop(32903681) == 'Announcements'
----------------------------------------------------
[29] KeyValueDictionary >> keysDo: @19 line 18
	receiver oop(45737473) == aKeyValueDictionary( 'Announcements'->'Announcements')

instance variables:
	-collisionLimit oop(26) == 3
	-numCollisions oop(2) == 0
	-numElements oop(10) == 1
	-tableSize oop(26) == 3

temporary variables and parameters:
	aBlock oop(45978881) == anExecBlock1
	aKey oop(32903681) == 'Announcements'
	collisionBkt oop(20) == nil
	j oop(20) == nil
	tableIndex oop(26) == 3
----------------------------------------------------
[30] Set >> do: @3 line 11
	receiver oop(45955329) == aSet( 'Announcements')

instance variables:
	-_indexedPaths oop(20) == nil
	-_levels oop(20) == nil
	-_numEntries oop(20) == nil
	-_varyingSize oop(20) == nil
	-dict oop(45737473) == aKeyValueDictionary( 'Announcements'->'Announcements')

temporary variables and parameters:
	aBlock oop(45979137) == anExecBlock1
	tmp oop(2) == 0
----------------------------------------------------
[31] RwGsModificationTopazWriterVisitorV2 >> export @3 line 3
	receiver oop(44345089) == aRwGsModificationTopazWriterVisitorV2

instance variables:
	-bufferedStream oop(20) == nil
	-buildPackageNamesMap oop(268) == true
	-classDefPackageNameMap oop(45958401) == aDictionary( 'WeakAnnouncementSubscription'->'Announcements-Core-GemStone', 'GemToGemAnnouncement'->'Announcements-Core-GemStone', 'AnnouncementMockD'->'Announcements-Core-GemStone-Test', 'Announcer'-...
	-classDefinitions oop(45978369) == aDictionary( 'WeakAnnouncementSubscription'->aRwClassDefinition for WeakAnnouncementSubscription, 'GemToGemAnnouncement'->aRwClassDefinition for GemToGemAnnouncement, 'AnnouncementMockD'->aRwClassDefi...
	-classExtPackageNameMap oop(46001409) == anIdentityKeyValueDictionary( aRwClassExtensionDefinition for TestAsserter->'Announcements-Extensions-GemStone', aRwClassExtensionDefinition for ExecBlock->'Announcements-Extensions-GemStone')
	-classExtensions oop(45962241) == aDictionary( 'ExecBlock'->aSet( aRwClassExtensionDefinition for ExecBlock), 'TestAsserter'->aSet( aRwClassExtensionDefinition for TestAsserter))
	-classInitializationDefinitions oop(20) == nil
	-classSymbolDictionaryNames oop(32903425) == aDictionary( 'WeakAnnouncementSubscription'->'Globals', 'GemToGemAnnouncement'->'Globals', 'AnnouncementMockD'->'Globals', 'Announcer'->'Globals', 'Announcement'->'Globals', 'AnnouncementMockC'->'Glob...
	-currentClassDefinition oop(32904449) == aRwClassDefinition for AnnouncementMockD
	-currentClassExtension oop(31614977) == aRwClassExtensionDefinition for TestAsserter
	-currentPackageDefinition oop(44359169) == aRwPackageDefinition for Announcements-Core-GemStone-Test
	-currentProjectDefinition oop(44348929) == aRwResolvedProjectV2 for Announcements
	-currentTraitDefinition oop(20) == nil
	-excludeClassInitializers oop(12) == false
	-excludeRemoveAllMethods oop(12) == false
	-fileNamesInFileInOrder oop(20) == nil
	-filenameExtension oop(32904705) == ''
	-logCreation oop(12) == false
	-packageConvention oop(20) == nil
	-repositoryRootPath oop(45992449) == FileReference disk @ '/opt/JadeiteForPharo/justToSee/Announcements.'
	-topazFileFooter oop(20) == nil
	-topazFileHeader oop(20) == nil
	-topazFilename oop(32903681) == 'Announcements'
	-topazFilenamePackageNamesMap oop(45959425) == aDictionary( 'Announcements'->aSet( 'Announcements-Core-GemStone', 'Announcements-Extensions-GemStone', 'Announcements-Core-GemStone-Test'))
	-traitDefinitions oop(20) == nil

temporary variables and parameters:
----------------------------------------------------
[32] RwGsModificationTopazWriterVisitorV2 (RwModificationWriterVisitor) >> visit: @3 line 4
	receiver oop(44345089) == aRwGsModificationTopazWriterVisitorV2

instance variables:
	-bufferedStream oop(20) == nil
	-buildPackageNamesMap oop(268) == true
	-classDefPackageNameMap oop(45958401) == aDictionary( 'WeakAnnouncementSubscription'->'Announcements-Core-GemStone', 'GemToGemAnnouncement'->'Announcements-Core-GemStone', 'AnnouncementMockD'->'Announcements-Core-GemStone-Test', 'Announcer'-...
	-classDefinitions oop(45978369) == aDictionary( 'WeakAnnouncementSubscription'->aRwClassDefinition for WeakAnnouncementSubscription, 'GemToGemAnnouncement'->aRwClassDefinition for GemToGemAnnouncement, 'AnnouncementMockD'->aRwClassDefi...
	-classExtPackageNameMap oop(46001409) == anIdentityKeyValueDictionary( aRwClassExtensionDefinition for TestAsserter->'Announcements-Extensions-GemStone', aRwClassExtensionDefinition for ExecBlock->'Announcements-Extensions-GemStone')
	-classExtensions oop(45962241) == aDictionary( 'ExecBlock'->aSet( aRwClassExtensionDefinition for ExecBlock), 'TestAsserter'->aSet( aRwClassExtensionDefinition for TestAsserter))
	-classInitializationDefinitions oop(20) == nil
	-classSymbolDictionaryNames oop(32903425) == aDictionary( 'WeakAnnouncementSubscription'->'Globals', 'GemToGemAnnouncement'->'Globals', 'AnnouncementMockD'->'Globals', 'Announcer'->'Globals', 'Announcement'->'Globals', 'AnnouncementMockC'->'Glob...
	-currentClassDefinition oop(32904449) == aRwClassDefinition for AnnouncementMockD
	-currentClassExtension oop(31614977) == aRwClassExtensionDefinition for TestAsserter
	-currentPackageDefinition oop(44359169) == aRwPackageDefinition for Announcements-Core-GemStone-Test
	-currentProjectDefinition oop(44348929) == aRwResolvedProjectV2 for Announcements
	-currentTraitDefinition oop(20) == nil
	-excludeClassInitializers oop(12) == false
	-excludeRemoveAllMethods oop(12) == false
	-fileNamesInFileInOrder oop(20) == nil
	-filenameExtension oop(32904705) == ''
	-logCreation oop(12) == false
	-packageConvention oop(20) == nil
	-repositoryRootPath oop(45992449) == FileReference disk @ '/opt/JadeiteForPharo/justToSee/Announcements.'
	-topazFileFooter oop(20) == nil
	-topazFileHeader oop(20) == nil
	-topazFilename oop(32903681) == 'Announcements'
	-topazFilenamePackageNamesMap oop(45959425) == aDictionary( 'Announcements'->aSet( 'Announcements-Core-GemStone', 'Announcements-Extensions-GemStone', 'Announcements-Core-GemStone-Test'))
	-traitDefinitions oop(20) == nil

temporary variables and parameters:
	aPackageSetModification oop(45992193) == aRwProjectSetModification
----------------------------------------------------
[33] RwResolvedProjectV2 >> exportTopazFormatTo:logClassCreation:excludeClassInitializers:excludeRemoveAllMethods: @21 line 16
	receiver oop(44348929) == aRwResolvedProjectV2 for Announcements

instance variables:
	-loadSpecification oop(45989889) == aRwLoadSpecificationV2 for Announcements
	-projectComponents oop(45987841) == aRwResolvedProjectComponentsV2
	-projectDefinition oop(45989121) == aRwProjectDefinition for Announcements
	-projectRepository oop(45991681) == aRwGitRepositoryDefinitionV2 for Announcements
	-projectSpecification oop(45989633) == aRwProjectSpecificationV2 for project

temporary variables and parameters:
	excludeClassInitializers oop(12) == false
	excludeRemoveAllMethods oop(12) == false
	filePath oop(45987329) == '/opt/JadeiteForPharo/justToSee/Announcements./Announcements'
	fileReference oop(45985793) == FileReference disk @ '/opt/JadeiteForPharo/justToSee/Announcements./Announcements'
	logClassCreation oop(12) == false
	projectSetDefinition oop(45987073) == aRwProjectSetDefinition
	projectSetModification oop(45992193) == aRwProjectSetModification
	visitor oop(44345089) == aRwGsModificationTopazWriterVisitorV2
----------------------------------------------------
[34] RwProject >> exportTopazFormatTo:logClassCreation:excludeClassInitializers:excludeRemoveAllMethods: @4 line 3
	receiver oop(44326145) == aRwProject for Announcements

instance variables:
	-name oop(45985025) == 'Announcements'

temporary variables and parameters:
	excludeClassInitializers oop(12) == false
	excludeRemoveAllMethods oop(12) == false
	filePath oop(45987329) == '/opt/JadeiteForPharo/justToSee/Announcements./Announcements'
	logClassCreation oop(12) == false
----------------------------------------------------
[35] RwProject >> exportTopazFormatTo: @2 line 3
	receiver oop(44326145) == aRwProject for Announcements

instance variables:
	-name oop(45985025) == 'Announcements'

temporary variables and parameters:
	filePath oop(45987329) == '/opt/JadeiteForPharo/justToSee/Announcements./Announcements'
----------------------------------------------------
[36] RowanProjectService >> exportTopazFormatTo: @3 line 3
	receiver oop(31902465) == aRowanProjectService:Announcements

instance variables:
	-_connection oop(32338433) == aRsrConnection
	-_id oop(18) == 2
	-branch oop(45981953) == 'main'
	-changes oop(20) == nil
	-command oop(37005057) == #'exportTopazFormatTo:'
	-commandArgs oop(45983745) == anArray( '/opt/JadeiteForPharo/justToSee/Announcements./Announcements')
	-componentServices oop(45980673) == aDictionary( aRowanComponentService->anArray( ), aRowanComponentService->anArray( aRowanComponentService, aRowanComponentService), aRowanComponentService->anArray( aRowanComponentService), aRowanCompo...
	-defaultSymbolDictionaryName oop(44316929) == 'UserGlobals'
	-diskSha oop(44320513) == 'df066fc'
	-existsOnDisk oop(268) == true
	-isCurrent oop(12) == false
	-isDirty oop(12) == false
	-isDiskDirty oop(12) == false
	-isLoaded oop(268) == true
	-isSkew oop(12) == false
	-name oop(45985025) == 'Announcements'
	-organizer oop(20) == nil
	-packageConvention oop(44312321) == 'RowanHybrid'
	-packageGroups oop(44312577) == anArray( )
	-packages oop(20) == nil
	-projectOop oop(354609162) == 44326145
	-projectUrl oop(45981441) == 'file:/opt/JadeiteForPharo/Announcements'
	-remoteSelf oop(32335873) == aRsrForwarder
	-rowanProjectsHome oop(45981185) == '/opt/JadeiteForPharo'
	-rwProject oop(44326145) == aRwProject for Announcements
	-sha oop(45982209) == 'df066fc'
	-shouldUpdate oop(268) == true
	-specService oop(32339713) == aRowanLoadSpecService
	-updateType oop(20) == nil
	-updates oop(45983489) == anArray( )
	-wasUpdated oop(268) == true

temporary variables and parameters:
	filePath oop(45987329) == '/opt/JadeiteForPharo/justToSee/Announcements./Announcements'
----------------------------------------------------
[37] RowanProjectService (Object) >> perform:withArguments: @1 line 12
	receiver oop(31902465) == aRowanProjectService:Announcements

instance variables:
	-_connection oop(32338433) == aRsrConnection
	-_id oop(18) == 2
	-branch oop(45981953) == 'main'
	-changes oop(20) == nil
	-command oop(37005057) == #'exportTopazFormatTo:'
	-commandArgs oop(45983745) == anArray( '/opt/JadeiteForPharo/justToSee/Announcements./Announcements')
	-componentServices oop(45980673) == aDictionary( aRowanComponentService->anArray( ), aRowanComponentService->anArray( aRowanComponentService, aRowanComponentService), aRowanComponentService->anArray( aRowanComponentService), aRowanCompo...
	-defaultSymbolDictionaryName oop(44316929) == 'UserGlobals'
	-diskSha oop(44320513) == 'df066fc'
	-existsOnDisk oop(268) == true
	-isCurrent oop(12) == false
	-isDirty oop(12) == false
	-isDiskDirty oop(12) == false
	-isLoaded oop(268) == true
	-isSkew oop(12) == false
	-name oop(45985025) == 'Announcements'
	-organizer oop(20) == nil
	-packageConvention oop(44312321) == 'RowanHybrid'
	-packageGroups oop(44312577) == anArray( )
	-packages oop(20) == nil
	-projectOop oop(354609162) == 44326145
	-projectUrl oop(45981441) == 'file:/opt/JadeiteForPharo/Announcements'
	-remoteSelf oop(32335873) == aRsrForwarder
	-rowanProjectsHome oop(45981185) == '/opt/JadeiteForPharo'
	-rwProject oop(44326145) == aRwProject for Announcements
	-sha oop(45982209) == 'df066fc'
	-shouldUpdate oop(268) == true
	-specService oop(32339713) == aRowanLoadSpecService
	-updateType oop(20) == nil
	-updates oop(45983489) == anArray( )
	-wasUpdated oop(268) == true

temporary variables and parameters:
	aSelectorSymbol oop(37005057) == #'exportTopazFormatTo:'
	anArray oop(45983745) == anArray( '/opt/JadeiteForPharo/justToSee/Announcements./Announcements')
----------------------------------------------------
[38] RowanProjectService (RowanService) >> servicePerform:withArguments:shouldUpdate: @5 line 7
	receiver oop(31902465) == aRowanProjectService:Announcements

instance variables:
	-_connection oop(32338433) == aRsrConnection
	-_id oop(18) == 2
	-branch oop(45981953) == 'main'
	-changes oop(20) == nil
	-command oop(37005057) == #'exportTopazFormatTo:'
	-commandArgs oop(45983745) == anArray( '/opt/JadeiteForPharo/justToSee/Announcements./Announcements')
	-componentServices oop(45980673) == aDictionary( aRowanComponentService->anArray( ), aRowanComponentService->anArray( aRowanComponentService, aRowanComponentService), aRowanComponentService->anArray( aRowanComponentService), aRowanCompo...
	-defaultSymbolDictionaryName oop(44316929) == 'UserGlobals'
	-diskSha oop(44320513) == 'df066fc'
	-existsOnDisk oop(268) == true
	-isCurrent oop(12) == false
	-isDirty oop(12) == false
	-isDiskDirty oop(12) == false
	-isLoaded oop(268) == true
	-isSkew oop(12) == false
	-name oop(45985025) == 'Announcements'
	-organizer oop(20) == nil
	-packageConvention oop(44312321) == 'RowanHybrid'
	-packageGroups oop(44312577) == anArray( )
	-packages oop(20) == nil
	-projectOop oop(354609162) == 44326145
	-projectUrl oop(45981441) == 'file:/opt/JadeiteForPharo/Announcements'
	-remoteSelf oop(32335873) == aRsrForwarder
	-rowanProjectsHome oop(45981185) == '/opt/JadeiteForPharo'
	-rwProject oop(44326145) == aRwProject for Announcements
	-sha oop(45982209) == 'df066fc'
	-shouldUpdate oop(268) == true
	-specService oop(32339713) == aRowanLoadSpecService
	-updateType oop(20) == nil
	-updates oop(45983489) == anArray( )
	-wasUpdated oop(268) == true

temporary variables and parameters:
	collection oop(45983745) == anArray( '/opt/JadeiteForPharo/justToSee/Announcements./Announcements')
	commandSymbol oop(37005057) == #'exportTopazFormatTo:'
	possiblyUpdate oop(268) == true
----------------------------------------------------
[39] RowanProjectService (RowanService) >> servicePerform:withArguments: @2 line 4
	receiver oop(31902465) == aRowanProjectService:Announcements

instance variables:
	-_connection oop(32338433) == aRsrConnection
	-_id oop(18) == 2
	-branch oop(45981953) == 'main'
	-changes oop(20) == nil
	-command oop(37005057) == #'exportTopazFormatTo:'
	-commandArgs oop(45983745) == anArray( '/opt/JadeiteForPharo/justToSee/Announcements./Announcements')
	-componentServices oop(45980673) == aDictionary( aRowanComponentService->anArray( ), aRowanComponentService->anArray( aRowanComponentService, aRowanComponentService), aRowanComponentService->anArray( aRowanComponentService), aRowanCompo...
	-defaultSymbolDictionaryName oop(44316929) == 'UserGlobals'
	-diskSha oop(44320513) == 'df066fc'
	-existsOnDisk oop(268) == true
	-isCurrent oop(12) == false
	-isDirty oop(12) == false
	-isDiskDirty oop(12) == false
	-isLoaded oop(268) == true
	-isSkew oop(12) == false
	-name oop(45985025) == 'Announcements'
	-organizer oop(20) == nil
	-packageConvention oop(44312321) == 'RowanHybrid'
	-packageGroups oop(44312577) == anArray( )
	-packages oop(20) == nil
	-projectOop oop(354609162) == 44326145
	-projectUrl oop(45981441) == 'file:/opt/JadeiteForPharo/Announcements'
	-remoteSelf oop(32335873) == aRsrForwarder
	-rowanProjectsHome oop(45981185) == '/opt/JadeiteForPharo'
	-rwProject oop(44326145) == aRwProject for Announcements
	-sha oop(45982209) == 'df066fc'
	-shouldUpdate oop(268) == true
	-specService oop(32339713) == aRowanLoadSpecService
	-updateType oop(20) == nil
	-updates oop(45983489) == anArray( )
	-wasUpdated oop(268) == true

temporary variables and parameters:
	collection oop(45983745) == anArray( '/opt/JadeiteForPharo/justToSee/Announcements./Announcements')
	symbol oop(37005057) == #'exportTopazFormatTo:'
----------------------------------------------------
[40] RowanProjectService >> servicePerform:withArguments: @6 line 4
	receiver oop(31902465) == aRowanProjectService:Announcements

instance variables:
	-_connection oop(32338433) == aRsrConnection
	-_id oop(18) == 2
	-branch oop(45981953) == 'main'
	-changes oop(20) == nil
	-command oop(37005057) == #'exportTopazFormatTo:'
	-commandArgs oop(45983745) == anArray( '/opt/JadeiteForPharo/justToSee/Announcements./Announcements')
	-componentServices oop(45980673) == aDictionary( aRowanComponentService->anArray( ), aRowanComponentService->anArray( aRowanComponentService, aRowanComponentService), aRowanComponentService->anArray( aRowanComponentService), aRowanCompo...
	-defaultSymbolDictionaryName oop(44316929) == 'UserGlobals'
	-diskSha oop(44320513) == 'df066fc'
	-existsOnDisk oop(268) == true
	-isCurrent oop(12) == false
	-isDirty oop(12) == false
	-isDiskDirty oop(12) == false
	-isLoaded oop(268) == true
	-isSkew oop(12) == false
	-name oop(45985025) == 'Announcements'
	-organizer oop(20) == nil
	-packageConvention oop(44312321) == 'RowanHybrid'
	-packageGroups oop(44312577) == anArray( )
	-packages oop(20) == nil
	-projectOop oop(354609162) == 44326145
	-projectUrl oop(45981441) == 'file:/opt/JadeiteForPharo/Announcements'
	-remoteSelf oop(32335873) == aRsrForwarder
	-rowanProjectsHome oop(45981185) == '/opt/JadeiteForPharo'
	-rwProject oop(44326145) == aRwProject for Announcements
	-sha oop(45982209) == 'df066fc'
	-shouldUpdate oop(268) == true
	-specService oop(32339713) == aRowanLoadSpecService
	-updateType oop(20) == nil
	-updates oop(45983489) == anArray( )
	-wasUpdated oop(268) == true

temporary variables and parameters:
	collection oop(45983745) == anArray( '/opt/JadeiteForPharo/justToSee/Announcements./Announcements')
	symbol oop(37005057) == #'exportTopazFormatTo:'
----------------------------------------------------
[41] [] in RowanService >> executeCommand @21 line 11
	receiver oop(44335873) == anExecBlock0

instance variables:

temporary variables and parameters:
	self oop(31902465) == aRowanProjectService:Announcements
----------------------------------------------------
[42] ExecBlock0 (ExecBlock) >> on:do: @3 line 44
	receiver oop(44335873) == anExecBlock0

instance variables:

temporary variables and parameters:
	exceptionSelector oop(4079361) == GsInteractionRequest
	fastPath oop(268) == true
	handlerBlock oop(44324609) == anExecBlock
----------------------------------------------------
[43] [] in RowanService >> executeCommand @10 line 12
	receiver oop(44316417) == anExecBlock0

instance variables:

temporary variables and parameters:
	self oop(31902465) == aRowanProjectService:Announcements
----------------------------------------------------
[44] ExecBlock0 (ExecBlock) >> on:do: @3 line 44
	receiver oop(44316417) == anExecBlock0

instance variables:

temporary variables and parameters:
	exceptionSelector oop(137729) == Exception
	fastPath oop(268) == true
	handlerBlock oop(79635713) == anExecBlock1
----------------------------------------------------
[45] RowanProjectService (RowanService) >> executeCommand @4 line 19
	receiver oop(31902465) == aRowanProjectService:Announcements

instance variables:
	-_connection oop(32338433) == aRsrConnection
	-_id oop(18) == 2
	-branch oop(45981953) == 'main'
	-changes oop(20) == nil
	-command oop(37005057) == #'exportTopazFormatTo:'
	-commandArgs oop(45983745) == anArray( '/opt/JadeiteForPharo/justToSee/Announcements./Announcements')
	-componentServices oop(45980673) == aDictionary( aRowanComponentService->anArray( ), aRowanComponentService->anArray( aRowanComponentService, aRowanComponentService), aRowanComponentService->anArray( aRowanComponentService), aRowanCompo...
	-defaultSymbolDictionaryName oop(44316929) == 'UserGlobals'
	-diskSha oop(44320513) == 'df066fc'
	-existsOnDisk oop(268) == true
	-isCurrent oop(12) == false
	-isDirty oop(12) == false
	-isDiskDirty oop(12) == false
	-isLoaded oop(268) == true
	-isSkew oop(12) == false
	-name oop(45985025) == 'Announcements'
	-organizer oop(20) == nil
	-packageConvention oop(44312321) == 'RowanHybrid'
	-packageGroups oop(44312577) == anArray( )
	-packages oop(20) == nil
	-projectOop oop(354609162) == 44326145
	-projectUrl oop(45981441) == 'file:/opt/JadeiteForPharo/Announcements'
	-remoteSelf oop(32335873) == aRsrForwarder
	-rowanProjectsHome oop(45981185) == '/opt/JadeiteForPharo'
	-rwProject oop(44326145) == aRwProject for Announcements
	-sha oop(45982209) == 'df066fc'
	-shouldUpdate oop(268) == true
	-specService oop(32339713) == aRowanLoadSpecService
	-updateType oop(20) == nil
	-updates oop(45983489) == anArray( )
	-wasUpdated oop(268) == true

temporary variables and parameters:
----------------------------------------------------
[46] RowanProjectService (Object) >> perform:withArguments: @1 line 12
	receiver oop(31902465) == aRowanProjectService:Announcements

instance variables:
	-_connection oop(32338433) == aRsrConnection
	-_id oop(18) == 2
	-branch oop(45981953) == 'main'
	-changes oop(20) == nil
	-command oop(37005057) == #'exportTopazFormatTo:'
	-commandArgs oop(45983745) == anArray( '/opt/JadeiteForPharo/justToSee/Announcements./Announcements')
	-componentServices oop(45980673) == aDictionary( aRowanComponentService->anArray( ), aRowanComponentService->anArray( aRowanComponentService, aRowanComponentService), aRowanComponentService->anArray( aRowanComponentService), aRowanCompo...
	-defaultSymbolDictionaryName oop(44316929) == 'UserGlobals'
	-diskSha oop(44320513) == 'df066fc'
	-existsOnDisk oop(268) == true
	-isCurrent oop(12) == false
	-isDirty oop(12) == false
	-isDiskDirty oop(12) == false
	-isLoaded oop(268) == true
	-isSkew oop(12) == false
	-name oop(45985025) == 'Announcements'
	-organizer oop(20) == nil
	-packageConvention oop(44312321) == 'RowanHybrid'
	-packageGroups oop(44312577) == anArray( )
	-packages oop(20) == nil
	-projectOop oop(354609162) == 44326145
	-projectUrl oop(45981441) == 'file:/opt/JadeiteForPharo/Announcements'
	-remoteSelf oop(32335873) == aRsrForwarder
	-rowanProjectsHome oop(45981185) == '/opt/JadeiteForPharo'
	-rwProject oop(44326145) == aRwProject for Announcements
	-sha oop(45982209) == 'df066fc'
	-shouldUpdate oop(268) == true
	-specService oop(32339713) == aRowanLoadSpecService
	-updateType oop(20) == nil
	-updates oop(45983489) == anArray( )
	-wasUpdated oop(268) == true

temporary variables and parameters:
	aSelectorSymbol oop(76247041) == #'executeCommand'
	anArray oop(44315137) == anArray( )
----------------------------------------------------
[47] RsrMessageSend >> perform @5 line 4
	receiver oop(44314881) == aRsrMessageSend

instance variables:
	-arguments oop(44315137) == anArray( )
	-receiver oop(31902465) == aRowanProjectService:Announcements
	-selector oop(76247041) == #'executeCommand'

temporary variables and parameters:
----------------------------------------------------
[48] [] in RsrSendMessage >> perform:answerUsing: @9 line 6
	receiver oop(43555585) == anExecBlock0

instance variables:

temporary variables and parameters:
	aMessageSend oop(44314881) == aRsrMessageSend
	aResolver oop(44311809) == aRsrRemotePromiseResolver
	result oop(20) == nil
----------------------------------------------------
[49] ExecBlock0 (ExecBlock) >> on:do: @3 line 44
	receiver oop(43555585) == anExecBlock0

instance variables:

temporary variables and parameters:
	exceptionSelector oop(76349441) == RsrUnhandledException
	fastPath oop(268) == true
	handlerBlock oop(44314369) == anExecBlock
----------------------------------------------------
[50] RsrSendMessage >> perform:answerUsing: @3 line 9
	receiver oop(43553537) == aRsrSendMessage

instance variables:
	-argumentReferences oop(45028865) == anArray( )
	-receiverReference oop(43556353) == aRsrServiceReference
	-selectorReference oop(45045249) == aRsrSymbolReference
	-snapshots oop(44317697) == anArray( aRsrServiceSnapshot, aRsrServiceSnapshot, aRsrServiceSnapshot, aRsrServiceSnapshot, aRsrServiceSnapshot, aRsrServiceSnapshot)
	-transaction oop(18446744073709551394) == -28

temporary variables and parameters:
	aMessageSend oop(44314881) == aRsrMessageSend
	aResolver oop(44311809) == aRsrRemotePromiseResolver
----------------------------------------------------
[51] [] in RsrSendMessage >> executeFor: @34 line 21
	receiver oop(44323841) == anExecBlock0

instance variables:

temporary variables and parameters:
	aConnection oop(32338433) == aRsrConnection
	arguments oop(44315137) == anArray( )
	messageSend oop(44314881) == aRsrMessageSend
	receiver oop(31902465) == aRowanProjectService:Announcements
	resolver oop(44311809) == aRsrRemotePromiseResolver
	selector oop(76247041) == #'executeCommand'
	self oop(43553537) == aRsrSendMessage
	servicesStrongly oop(20) == nil
----------------------------------------------------
[52] ExecBlock0 (ExecBlock) >> on:do: @3 line 44
	receiver oop(44323841) == anExecBlock0

instance variables:

temporary variables and parameters:
	exceptionSelector oop(76349441) == RsrUnhandledException
	fastPath oop(268) == true
	handlerBlock oop(45026561) == anExecBlock
----------------------------------------------------
[53] [] in RsrSendMessage >> executeFor: @9 line 22
	receiver oop(43554305) == anExecBlock0

instance variables:

temporary variables and parameters:
	self oop(43553537) == aRsrSendMessage
----------------------------------------------------
[54] ExecBlock0 (ExecBlock) >> ensure: @2 line 12
	receiver oop(43554305) == anExecBlock0

instance variables:

temporary variables and parameters:
	b oop(20) == nil
	result oop(20) == nil
	terminationBlock oop(44310017) == anExecBlock
----------------------------------------------------
[55] RsrSendMessage >> executeFor: @4 line 26
	receiver oop(43553537) == aRsrSendMessage

instance variables:
	-argumentReferences oop(45028865) == anArray( )
	-receiverReference oop(43556353) == aRsrServiceReference
	-selectorReference oop(45045249) == aRsrSymbolReference
	-snapshots oop(44317697) == anArray( aRsrServiceSnapshot, aRsrServiceSnapshot, aRsrServiceSnapshot, aRsrServiceSnapshot, aRsrServiceSnapshot, aRsrServiceSnapshot)
	-transaction oop(18446744073709551394) == -28

temporary variables and parameters:
	aConnection oop(32338433) == aRsrConnection
	arguments oop(44315137) == anArray( )
	messageSend oop(44314881) == aRsrMessageSend
	receiver oop(31902465) == aRowanProjectService:Announcements
	resolver oop(44311809) == aRsrRemotePromiseResolver
	selector oop(76247041) == #'executeCommand'
	servicesStrongly oop(20) == nil
----------------------------------------------------
[56] [] in RsrConnection >> _receivedCommand: @10 line 7
	receiver oop(44318721) == anExecBlock0

instance variables:

temporary variables and parameters:
	aCommand oop(43553537) == aRsrSendMessage
	self oop(32338433) == aRsrConnection
----------------------------------------------------
[57] [] in RsrProcessModel >> fork:named: @7 line 5
	receiver oop(31587329) == anExecBlock

instance variables:

temporary variables and parameters:
	aBlock oop(44318721) == anExecBlock0
	aString oop(44307201) == 'Processing RsrSendMessage'
	self oop(32615425) == aRsrProcessModel
----------------------------------------------------
[58] ExecBlock >> valueWithArguments: @1 line 7
	receiver oop(31587329) == anExecBlock

instance variables:

temporary variables and parameters:
	argList oop(233217) == anArray( )
----------------------------------------------------
[59] GsProcess >> _start @7 line 16
	receiver oop(31615233) == GsProcess(oop=31615233, status=suspended, priority=15, block=anExecBlock, args=anArray( ), 
   ProcessorScheduler >> _switchFrom:to: @2 line 8
   ProcessorScheduler >> _reschedule @7 line 7
   Process...

instance variables:
	-arStack oop(31615745) == aGsStackBuffer( 164, GsNMethod ProcessorScheduler>>_switchFrom:to:, -3032, 185, GsProcess(oop=31661057, status=active, priority=15, block=anExecBlock, args=anArray( ), 
   GsProcess >> _reportAt: @7 l...
	-args oop(233217) == anArray( )
	-block oop(31587329) == anExecBlock
	-blockResult oop(276) == remoteNil
	-breakpointLevel oop(10) == 1
	-clientData oop(20) == nil
	-dbgFpsCache oop(31587073) == anArray( 3, 11, 17, 22, 29, 34, 42, 46, 51, 56, 60, 65, 73, 79, 86, 93, 99, 106, 116, 121, 126, 131, 137, 143, 149, 155, 164, 170, 182, 189, 195, 199, 208, 216, 224, 229, 234, 240, 247, 253, 260, 267,...
	-debugActionBlock oop(31586817) == anExecBlock1
	-environment oop(20) == nil
	-ffiErrno oop(162) == 20
	-group oop(20) == nil
	-interruptFlag_stEntryCount oop(10) == 1
	-ioSelectResult oop(20) == nil
	-joiners oop(20) == nil
	-lastBreakpt oop(20) == nil
	-modeInfo oop(86033629186) == 10754203648
	-msgEnvironmentId oop(2) == 0
	-name oop(31586561) == 'RowanProjectService>>executeCommand'
	-onQueue oop(30657281) == anIdentitySet( GsProcess(oop=31615233, status=suspended, priority=15, block=anExecBlock, args=anArray( ), 
   ProcessorScheduler >> _switchFrom:to: @2 line 8
   ProcessorScheduler >> _reschedule @7 li...
	-parentProcess oop(31983873) == GsProcess(oop=31983873, status=waiting on a GsSignalingSocket, priority=30, block=anExecBlock, args=anArray( ), 
   ProcessorScheduler >> _switchFrom:to: @2 line 8
   ProcessorScheduler >> _reschedule...
	-priority_use oop(131941395333130) == 16492674416641
	-signalTime oop(20) == nil
	-signalledException oop(20) == nil
	-stackId oop(18446744073709551610) == -1
	-stackSerialNum oop(69671305258) == 8708913157
	-startSeconds oop(11270936325785433606) == 760028138.060894
	-topFpOffset oop(18446744073709526850) == -3096
	-uaCount_depth oop(482) == 60
	-waitingOn oop(20) == nil

temporary variables and parameters:
	curr oop(20) == nil
	res oop(20) == nil
----------------------------------------------------
[60] GsNMethod class >> _gsReturnToC @1 line 11
	receiver oop(144897) == GsNMethod

instance variables:

temporary variables and parameters:
----------------------------------------------------

@ericwinger
Copy link
Member

Putting it back into To Do and reopening for investigation.

@ericwinger ericwinger reopened this Jan 31, 2025
ericwinger added a commit that referenced this issue Feb 1, 2025
Needed to tell the morphic widget to be unsticky when opening Jadeite Modal windows. Should fix a few places where the modal window is used. May be more. 

When checking for launchers in tests, handle case where a dead launcher may have a nil window. 
#186 (comment)
@ericwinger
Copy link
Member

#1 It is impossible to move the dialog window from the position where it appeared. 

This should be fixed when the next push to main happens. The morphic widget needed to be unsticky.

@tukanos
Copy link
Author

tukanos commented Feb 3, 2025

Hi @ericwinger ,

I have read the patch, nice code. I have also retested the issue and the dialog window works as expected. Thank you.

@ericwinger
Copy link
Member

ericwinger commented Feb 5, 2025

I have tried to rewrite the original file from Project file out and it brought up the debugger as it was complaining that the root path must exist. I just wanted to overwrite already existing file.

Hi @tukanos, I looked into this and I think the problem is that the file dialog isn't as intuitive as one might hope. In the video, you actually select a file called Announcements. (note the period at end). The file dialog thinks that is a directory and it appends the file name at the bottom and tries to write that file. I can't see the path sent, but I think it's something like

.../Announcements./Announcements 

And the directory Announcements. doesn't exist hence the debugger. (fyi - I think the Announcements. file came from this bug )

I've added a label File Name: at the bottom of the dialog which should help a little. I've also added a .gs to default file name but I'd be open to ideas on how to make this very young file dialog work more intuitively.

Image

ericwinger added a commit that referenced this issue Feb 5, 2025
Add .gs extension when filing out project or package. 
Add descriptive label for File Name in file save dialog
Fixed problem opening changes on project that the commandArgs wasn't initialized. 

#186
@tukanos
Copy link
Author

tukanos commented Feb 6, 2025

@ericwinger will retest it it. I have noticed the extra . at end and wondered if you want to differentiate the output files somehow.

@ericwinger ericwinger added the NeedsReview Bug needs review or a reproduction case label Feb 7, 2025
@tukanos
Copy link
Author

tukanos commented Feb 10, 2025

Hi @ericwinger ,

I have retested it and it does not work as I would imagine. The first export works fine, but the second export does not. When I try to export it again fails with debugger showing with an exception. The exception is: a FsENOTDIR occurred (error 2779)

I would expect to get a dialog window with a question for the user: Do you want to overwrite existing file? (yes/no). With the correct action based on the answer.

@ericwinger
Copy link
Member

ericwinger commented Feb 10, 2025

I would expect to get a dialog window with a question for the user: Do you want to overwrite existing file? (yes/no). With the correct action based on the answer.

Yeah, I haven't implemented that check yet. I'll see about adding it. Like most of JfP, the file dialogs are still a work in progress.

a FsENOTDIR occurred (error 2779)

Could you show me what the dialog looks like right before you try to save and get the error? Also, can you attach a file with the stack?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
NeedsReview Bug needs review or a reproduction case P2-Significant Bug that makes performing normal tasks difficult or impossible
Projects
None yet
Development

No branches or pull requests

2 participants