Skip to content

Conversation

@MarcusDenker
Copy link
Member

This PR enables the option for Full Blocks ot not have an outerContext if it is not needed.

Let's see how many tests fail

…t if it is not needed.

Let's see how many tests fail
@MarcusDenker MarcusDenker added the Status: Need more work The issue is nearly ready. Waiting some last bits. label Jul 7, 2025
@MarcusDenker
Copy link
Member Author

So.. 87 failing tests, we need to check them one-by one

AST.Core.Tests.OCCodeSnippetTest.testDecompile(#snippet->an OCCodeSnippet(| a | [ a := 10 ]. ^ a))
Debugger.Model.Tests.RestartTest.testRestartTestShouldKeepTestGreen
Debugger.Model.Tests.StepIntoTest.testStepIntoDoIt
Debugger.Model.Tests.StepIntoTest.testStepIntoUntilTermination
Debugger.Model.Tests.StepIntoTest.testStepIntoUntilTerminationClean
Debugger.Model.Tests.StepOverTest.testStepOverNonErrorExceptionSignalWithHandlerDeeperInTheContextStack
Debugger.Model.Tests.StepThroughTest.testStepThrough
Debugger.Model.Tests.StepThroughTest.testStepThroughUntilTermination
Debugging.Utils.Tests.CodeSimulationWithHaltTest.testHalt
Debugging.Utils.Tests.CodeSimulationWithHaltTest.testHaltWithHaltHandler
EmergencyDebugger.Tests.EDDebuggingAPITest.testRevertToInContext
EmergencyDebugger.Tests.EDEmergencyDebuggerTest.testSelectedMethodVersionsSize
EmergencyDebugger.Tests.EDEmergencyDebuggerTest.testShowOlderMethodVersion
Flashback.Decompiler.Tests.FBDDecompilerTest.testBlockArgument
Flashback.Decompiler.Tests.FBDDecompilerTest.testBlockExternal
Flashback.Decompiler.Tests.FBDDecompilerTest.testBlockExternal2
Flashback.Decompiler.Tests.FBDDecompilerTest.testBlockExternalArg
Flashback.Decompiler.Tests.FBDDecompilerTest.testBlockExternalNested
Flashback.Decompiler.Tests.FBDDecompilerTest.testBlockNumCopied
Flashback.Decompiler.Tests.FBDDecompilerTest.testCascadeIntoBlockWithTempIfTrueIfFalse
Flashback.Decompiler.Tests.FBDDecompilerTest.testCascadeIntoBlockWithTempIntoCascade
Flashback.Decompiler.Tests.FBDDecompilerTest.testCopyingBlock
Flashback.Decompiler.Tests.FBDDecompilerTest.testDoubleRemoteAnidatedBlocks
Flashback.Decompiler.Tests.FBDDecompilerTest.testFullBlock
Flashback.Decompiler.Tests.FBDDecompilerTest.testInlineBlockCollectionLR3
Flashback.Decompiler.Tests.FBDDecompilerTest.testMethodTempInNestedBlock
Flashback.Decompiler.Tests.FBDDecompilerTest.testNestedBlockScoping
Flashback.Decompiler.Tests.FBDDecompilerTest.testNestedBlocksRemoteInBlockCase1
Flashback.Decompiler.Tests.FBDDecompilerTest.testNestedBlocksRemoteInBlockCase2
Flashback.Decompiler.Tests.FBDDecompilerTest.testNestedBlocksRemoteInBlockCase3
Flashback.Decompiler.Tests.FBDDecompilerTest.testNoRemoteBlockArgument
Flashback.Decompiler.Tests.FBDDecompilerTest.testNoRemoteBlockTemp
Flashback.Decompiler.Tests.FBDDecompilerTest.testNoRemoteReadInBlock
Flashback.Decompiler.Tests.FBDDecompilerTest.testNoRemoteReadNestedBlocks
Flashback.Decompiler.Tests.FBDDecompilerTest.testOptimizedBlockWrittenAfterClosedOverCase1
Flashback.Decompiler.Tests.FBDDecompilerTest.testOptimizedBlockWrittenAfterClosedOverCase2
Flashback.Decompiler.Tests.FBDDecompilerTest.testSimpleBlockLocalIfNested
Flashback.Decompiler.Tests.FBDDecompilerTest.testSimpleBlockLocalWhile
Flashback.Decompiler.Tests.FBDDecompilerTest.testSimpleBlockNested
Flashback.Decompiler.Tests.FBDDecompilerTest.testSimpleBlockiVar
Flashback.Decompiler.Tests.FBDDecompilerTest.testSuperCallInBlock
Flashback.Decompiler.Tests.FBDDecompilerTest.testSuperCallInBlockClassSide
Flashback.Decompiler.Tests.FBDDecompilerTest.testToDo5
Flashback.Decompiler.Tests.FBDDecompilerTest.testToDoArgument
Flashback.Decompiler.Tests.FBDDecompilerTest.testToDoArgumentNotInlined
Flashback.Decompiler.Tests.FBDDecompilerTest.testToDoInsideBlock
Flashback.Decompiler.Tests.FBDDecompilerTest.testToDoInsideTemp
Flashback.Decompiler.Tests.FBDDecompilerTest.testToDoInsideTempNotInlined
Flashback.Decompiler.Tests.FBDDecompilerTest.testToDoOutsideTemp
Flashback.Decompiler.Tests.FBDDecompilerTest.testToDoOutsideTempNotInlined
Flashback.Decompiler.Tests.FBDDecompilerTest.testWhileModificationAfterNotInlined
Flashback.Decompiler.Tests.FBDDecompilerTest.testWhileModificationBefore
Flashback.Decompiler.Tests.FBDDecompilerTest.testWhileModificationBeforeNotInlined
Flashback.Decompiler.Tests.FBDDecompilerTest.testWhileNoModification
Flashback.Decompiler.Tests.FBDDecompilerTest.testWhileWithTemp
Flashback.Decompiler.Tests.FBDDecompilerTest.testWhileWithTempNotInlined
Fuel.Core.Tests.FLBlockClosureSerializationTest.testBlockClosureChangeDifferentBytecodesFull
Fuel.Core.Tests.FLBlockClosureSerializationTest.testBlockClosureChangeSameBytecodesFull
Fuel.Core.Tests.FLBlockClosureSerializationTest.testBlockClosureRemovedFull
Fuel.Core.Tests.FLFullBlockClosureSerializationTest.testBlockClosureChangeDifferentBytecodesNonClean
Fuel.Core.Tests.FLFullBlockClosureSerializationTest.testBlockClosureRemovedFull
Kernel.Extended.Tests.CodeSimulationTest.testErrorWithErrorHandler
Kernel.Extended.Tests.CodeSimulationTest.testTranscriptPrinting
Kernel.Extended.Tests.CodeSimulationTest.testTranscriptPrintingWithOpenedTranscriptExists
Kernel.Extended.Tests.InstructionStreamTest.testSimulatedTerminationOfProcessDoNotCorruptTheContext
Kernel.Extended.Tests.InstructionStreamTest.testSimulatingAMethodWithHaltHasCorrectContext
Kernel.Extended.Tests.InstructionStreamTest.testSteppingSendsDirectSend
Kernel.Extended.Tests.ProcessTest.testTerminateInTerminate
Kernel.Tests.BlockClosureTest.testSetUp
Kernel.Tests.BlockClosureTest.testTallyMethods
NewTools.Debugger.Tests.StDebuggerTest.testContextTempVarListUpdatesTempsWhenEnteringOrLeavingInlinedBlocksWithRunTo
NewTools.Sindarin.Commands.Tests.SindarinCommandsTest.testStepToNextCallInClassNeverFinishes
OpalCompiler.Tests.OCClosureCompilerTest.testDebuggerTempAccess
OpalCompiler.Tests.OCContextTempMappingTest.testAccessingTempsVectorInBlock2
PharoDocComment.Tests.CommentTestCase.nil
Sindarin.Tests.SindarinDebuggerTest.testContinue
Sindarin.Tests.SindarinDebuggerTest.testIsExecutionFinished
Sindarin.Tests.SindarinDebuggerTest.testMoveToNodeWhenFromNonInlinedBlockToOuterContext
Sindarin.Tests.SindarinDebuggerTest.testMoveToNodeWhenFromNonInlinedEmbeddedBlockToHomeContext
Sindarin.Tests.SindarinDebuggerTest.testMoveToNodeWhenNodeIsInBlockThatCreatesContextAndBlockCreationIsFirstBytecodeInFirstStatement
Sindarin.Tests.SindarinDebuggerTest.testMoveToNodeWhenNodeIsInBlockThatCreatesContextAndBlockHasBeenCreated
Sindarin.Tests.SindarinDebuggerTest.testMoveToNodeWhenNodeIsInBlockThatCreatesContextAndBlockHasBeenCreatedBackward
Sindarin.Tests.SindarinDebuggerTest.testMoveToNodeWhenNodeIsNonInlinedAndEmbeddedInNonInlinedBlock
Sindarin.Tests.SindarinDebuggerTest.testStepOverFinishedExecution
Sindarin.Tests.SindarinDebuggerTest.testStepUntilOverAnEnsureBlock
Tool.Profilers.Tests.MessageTallyTest.testClosedTally
Tool.Profilers.Tests.MessageTallyTest.testTallySends

@guillep
Copy link
Member

guillep commented Jul 7, 2025

The decompiler seems to fail because it is not implemented:

imagen

@guillep
Copy link
Member

guillep commented Jul 7, 2025

The sindarin ones seem to fail because of a broken AST mapping. It tries to find the temp vector but it finds a full block closure.

imagen

To reproduce I didd the following:

methodWithEmbeddedBlock

<compilerOptions: #(+ optionBlockClosureOptionalOuter) >
	| a |
	
	a := 1.
	[ :each | a := a + each. [ a := a + 1 ]. a * 42 ].
	a := a + 2.
	^ a * 42

@MarcusDenker
Copy link
Member Author

I added an issue to remove #outerContext from Context: #18383

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Status: Need more work The issue is nearly ready. Waiting some last bits.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants