Open dalehenrich opened 4 years ago
@dalehenrich Since we'll be supporting older server versions for awhile, it might be worth running your query against 3.2.15. For example, I see GsProcess _stepThrough
is implemented in 3.2.15.
'Sent but not implemented from #''JadeServer64bit32>>stepThrough:inFrame:'''
'#''_stepThrough'''
GsProcess>>_stepThrough
"Step execution over the next message send, stopping in
blocks for which the top frame is a home method.
Returns the receiver unless the receiver completes in which
case the result of the completion is returned.
Execution of this method must be in interpreted mode."
^ self _stepOverInFrame: 16r100000001
Alternatively, you can post the code used to generate this list in this issue and I can run it against 3.2.15.
The sent but not implemented test is part of the 3.2.15 test suite starting in candidateV2.0 ... so when you start developing Jadeite for V2, the test will be present ...
I don't think it is necessary to run the test against 3.2.15 for RowanV1.2 ...
The main motivation for cleaning up the sent but not implemented is because we do sent but not implemented testing in the base and as Rowan becomes part of 3.6.0, we'll want to have Rowan/Jadeite cleaned up ..
If you want to run the sent but not implemented test for V1.2, the code is here
Ok, I'll leave this for now. Assigning to @LisaAlmarode for guidance on what project to put it in so it doesn't get left behind when we start working on Rowan V2.0.
As of 3.2.12 with the 3.7 rowan branch, there are lots left. Using the code:
| sent implemented map notImplemented notImplementedMap report |
sent := IdentitySet new.
implemented := IdentitySet new.
map := IdentityDictionary new.
ClassOrganizer new classes
do: [ :class |
| metaClass |
class selectors
do: [ :sel |
| meth |
implemented add: sel.
meth := class compiledMethodAt: sel.
map at: meth put: meth _selectorPool.
sent addAll: meth _selectorPool ].
metaClass := class class.
metaClass selectors
do: [ :sel |
| meth |
implemented add: sel.
meth := metaClass compiledMethodAt: sel.
map at: meth put: meth _selectorPool.
sent addAll: meth _selectorPool ] ].
notImplemented := sent - implemented.
notImplementedMap := SymbolKeyValueDictionary new.
notImplemented
do: [ :sel |
map
keysAndValuesDo: [ :meth :selectors |
(selectors includes: sel)
ifTrue: [
| methName |
methName := (meth homeMethod inClass printString , '>>'
, meth homeMethod selector asString) asSymbol.
(notImplementedMap
at: methName
ifAbsent: [ notImplementedMap at: methName put: IdentitySet new ])
add: sel ] ] ].
report := String new.
notImplementedMap keys asSortedCollection do: [:key |
report add: key; lf.
(notImplementedMap at: key) do: [:aVal |
report tab; add: aVal; lf
].
report lf.
].
report.
I generate a long list:
'AbstractBinaryFileStream>>next
ifEmpty:ifNotEmpty:
Behavior>>moveMethod:toCategory:environmentId:
_announceMethodMoved:oldCategory:
Behavior>>renameCategory:to:environmentId:
_announceMethodMoved:oldCategory:
Behavior>>renameOrMergeCategory:to:environmentId:
_announceMethodMoved:oldCategory:
Class>>_newKernelByteSubclass:classVars:poolDictionaries:inDictionary:options:reservedOop:
_unsafeSetOop:
Class>>_newKernelIndexableSubclass:instVarNames:classVars:classInstVars:poolDictionaries:inDictionary:options:reservedOop:
_unsafeSetOop:
Class>>_newKernelSubclass:subclassOf:instVarNames:classVars:classInstVars:poolDictionaries:inDictionary:options:reservedOop:
_unsafeSetOop:
ClassOrganizer>>searchForCategory:in:
notify:
CypressClassDefinition>>accept:
visitClassDefinition:
CypressClassDefinition>>createOrReviseClass:environmentLoader:
createOrReviseIndexableClass:environmentLoader:
createOrReviseByteClass:environmentLoader:
CypressEnvironmentPackageManager>>loadResolvedReferences:
readPackageStructureForPackageNamed:files:
CypressMethodDefinition>>accept:
visitMethodDefinition:
DiskStore>>checkName:fixErrors:
contractTo:
DiskStore>>openFileStream:writable:
readOnlyFileNamed:
File class>>sync:
self
primitiveFailed
FileHandle class>>startUp:
allInstancesDo:
FileLocator class>>clientWorkingDirectory
client
FileLocator class>>serverWorkingDirectory
server
FileReference>>nextNameFor:extension:
collect:thenSelect:
splitOn:
FileReference>>nextVersion
squeezeNumberOutOfString:ifFail:
select:thenCollect:
FileStreamPortable class>>onHandle:
open:forWrite:
concreteStream
FileSystemStore class>>delimiter
shouldBeImplemented
FileSystemStore class>>isCaseSensitive
shouldBeImplemented
FileSystemStore class>>separator
shouldBeImplemented
GsFileinPackager>>createClassDefinitionFromCommentCategoryImmediateInvariantGsComCascadeNode:
leaf
litValue
GsNMethod class>>generateFromIR:
newPrinting
summary
GsPackageLibrary class>>lastFileNameOf:inDirectory:
sortBy:
childFiles
GsPackageLibrary class>>lastFileNameOf:inPath:
asReference
GsPackageLibrary class>>loadLastVersionOf:fromRepositoryPath:
directory:
asReference
GsPackageLibrary class>>loadMCZFile:fromRepository:
loadVersionFromFileNamed:
GsPackageLibrary class>>loadMCZFile:home:fromRepositoryPath:
directory:
asReference
GsPackageLibrary class>>saveNewVersionOf:author:message:toPath:
summary
storeVersion:
newVersionWithName:message:
uniqueVersionName
workingCopy
directory:
asReference
Integer>>humanReadableSIByteSizeOn:
printOn:showingDecimalPlaces:
**
JadeServer64bit24>>registerOBNotificationsForPlatform:clientForwarder:
registerMultipleChoiceClientForwarder:
JadeServer64bit32>>gsPackagePolicy
gsPackagePolicyClass
JadeServer64bit32>>stepThrough:inFrame:
_stepThrough
JadeServer64bit3x>>inspect:
inspectDictionary:on:
JadeServer64bit3x>>sbBrowseMethodsWithPragma:
streamOfMethods:
JadeServer64bit3x>>sbClassComment:
systemBrowserUpdate
sbNextParagraph
sbClassFrom:
JadeServer64bit3x>>sbFileOutMethod:
sbClassFrom:
JadeServer64bit3x>>sbMethod:
systemBrowserUpdate
sbNextParagraph
sbClassFrom:
JadeServer64bit3x>>sbUpdateMethodPragmas
writeSelectionsTo:
selectionNames
updateMethodFilterSelections:hasCategoryOverride:
nextLineAsList
writeMethodFiltersTo:
updateMethodPragmas
selections
JadeServer64bit3x>>sbUpdateMethodsByCategories
isRubyBridgeMethod
JadeServer64bit3x>>_allSelectors
classOrganizer
JadeServer64bit>>sbRemoveKey:fromDictionary:
removeFromSystem
JadeServer64bit>>sourceForProcess:frame:
asAsciiString:
_sourceForProcess:frame:
JadeServer>>mcInitials:
setAuthorInitials:
LdapDirectoryServer class>>_smartInitialize
_unsafeSetOop:
Object>>aboutToModifyObject:atOffset:to:
modifyingObject:atOffset:to:
Object>>_changingSizeTo:
changingSizeOfObject:to:
Object>>_deletingAt:count:
deletingIn:startingAt:count:
Object>>_inserting:at:insertSize:
inserting:into:at:insertSize:
Object>>_modifyingByteObjectStartingAt:withNewValue:
modifyingByteObject:startingAt:withNewValue:
Object>>_removeIndexParticipation:for:
invokingBecomeOn:to:
PPToken>>value
notify:
RBMessageNode>>replaceSourceWithMessageNode:
isSqueakSeparator
RBPatternBlockNode>>createBlockFor:
_compileInContext:symbolList:oldLitVars:environmentId:
RBProgramNode>>canMatchMethod:
refersToLiteral:
RBScanner>>classify:
isSqueakSeparator
RBScanner>>nextPut:
shouldNotImplement
RBTonelParser>>parseTonelMessagePattern
parseTonelBinaryPattern
patchTonelLiteralMessage
ResumableTestFailureTestCase>>errorTest
zork
RowanClassService>>postCommandExecution
reflectedVariableNames
RowanInterface>>_gemstonePlatformSpec
platformSpec
RowanPackageService>>changes
diffForPackageName:
RowanProjectService>>createProjectNamed:in:
createGitPackageProjectNamed:updateDefinition:
defaultSymbolDictName:
RowanProjectService>>log
commitLogProjectNamed:limit:
RwAbstractComponent>>validate
subclassResponsitility:
RwAuditReport class>>for:
owner:on:
RwExampleComponentRefactoringTool>>forProjectNamed:componentNamed:
_resolvedProject
RwFileUrl>>asRwRepository
createRwRepositoryForPath:
RwGsModificationTopazPackageWriterVisitorV2>>_fileOutClassDeclaration:on:
_symbolsForVariables:
RwModificationFiletreeWriterVisitor>>_createFileNameMapForMethods:
sorted:
RwModificationFiletreeWriterVisitorV2>>_createFileNameMapForMethods:
sorted:
RwModificationWriterVisitor>>_createFileNameMapForClassesOrPackages:
sorted:
RwPackageDefinition>>moveClassExtensionNamed:toPackage:
classExtensionNamed:
RwProject>>exportTopazFormatTo:
logClassCreation:excludeClassInitializers:excludeRemoveAllMethods:
RwProjectAuditToolTest>>test_Issue_535
newForGitBasedProjectNamed:
RwProjectToolTest>>testProjectGlobalsClassesExtensionsInSessionMethods
setUseSessionMethodsForExtensions:forPackageNamed:
newForGitBasedProjectNamed:
RwRowanProjectIssuesTest>>testIssue498_constraint_ordering_3
newForGitBasedProjectNamed:
defaultSymbolDictName:
RwRowanSample9Test>>testIssue752_03
baz
RwRowanSample9Test>>testUnmanagedSpec_0057_01
assert:details:
RwRowanSample9Test>>testUnmanagedSpec_0057_03
assert:details:
SUnitTest>>error
zork
SUnitTest>>errorShouldntRaise
someMessageThatIsntUnderstood
UnorderedCollection>>_updateIndexesForAdditionOf:logging:
adding:to:
UnorderedCollection>>_updateIndexesForRemovalOf:
removing:from:
Upgrade2C class>>_initSecurityPolicies
_unsafeSetOop:
Upgrade3Init class>>_initIrClasses
_initializeSpecialSelectors
checkRubyInfoMasks
Upgrade3Init class>>_installDocumentation
installDocumentation
Upgrade3Init class>>_migrateGroups
_unsafeSetOop:
UUID>>asString36
printStringBase:
WindowsStore>>checkName:fixErrors:
includesAnyOf:
ZnCharacterEncoder>>encodedByteCountFor:
encodedByteCountForCodePoint:
JadeServer is definitely not the only offender when it comes to sent but not implemented in Rowan, but there are quite a few methods that contain dead code --- many of them appear to be Monticello/GLASS methods. Anyway, soon I will be pushing Rowan into the base and all of the sent but not implemented will have to be cleaned up or otherwise accounted for .. so I figured I'd extract the information from one of my RowanV2 test runs and you should be able to clean these puppies up at your leisure:) ... I'd say as a target, these should all be cleaned up for the next version of Jadeite ... that runs with V2: