GemTalk / Jadeite

IDE for GemStone Smalltalk application development using Rowan code management
MIT License
6 stars 2 forks source link

sent but not implemented from JadeServer methods (in 3.5.0) #737

Open dalehenrich opened 4 years ago

dalehenrich commented 4 years ago

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:

'Sent but not implemented from #''JadeServer>>getPackagesNamesWithTestClasses'''
    '#''packageOfClass:ifNone:'''
'Sent but not implemented from #''JadeServer>>mcRemovePackage:'''
    '#''unregister'''
'Sent but not implemented from #''JadeServer>>mcStore:name:message:repository:'''
    '#''package'''
    '#''storeVersion:'''
    '#''newVersionWithName:message:'''
    '#''needsSaving'''
    '#''currentVersionInfo'''
    '#''package:info:'''
'Sent but not implemented from #''JadeServer>>sbRemoveRepository:'''
    '#''package'''
    '#''allManagers'''
    '#''repositoryGroup'''
'Sent but not implemented from #''JadeServer>>sbUpdateMethodStepPointsFor:'''
    '#''_ipForStepPoint:'''
'Sent but not implemented from #''JadeServer>>getPackagesNamesOfAll:'''
    '#''getPackageNameOf:'''
'Sent but not implemented from #''JadeServer>>mcPatchFrom:to:inDictionaryRepository:'''
    '#''versionFromVersionNamed:'''
    '#''package'''
    '#''allManagers'''
'Sent but not implemented from #''JadeServer>>mcVersionMerge:from:autoMigrate:'''
    '#''autoMigrate:'''
    '#''autoMigrate'''
    '#''conflicts'''
    '#''package'''
    '#''loadVersionFromFileNamed:'''
    '#''merged:'''
    '#''merge:'''
    '#''forPackage:'''
    '#''chooseRemote'''
    '#''merger'''
'Sent but not implemented from #''JadeServer>>sbBrowseMethodHistory:'''
    '#''versionsOfMethod:in:'''
    '#''uniqueInstance'''
'Sent but not implemented from #''JadeServer>>stringOfLineNumbersWithBreaksIn:'''
    '#''_stepPointsFromBreakIpOffsets:'''
    '#''_breakpointIpOffsets'''
'Sent but not implemented from #''JadeServer>>_describeMethod:'''
    '#''_rawMethodDict'''
'Sent but not implemented from #''JadeServer64bit32>>stepThrough:inFrame:'''
    '#''_stepThrough'''
'Sent but not implemented from #''JadeServer>>mcRemoveRepository:toPackage:'''
    '#''repositoryGroup'''
'Sent but not implemented from #''JadeServer>>mcAllVersionInfoNamesIn:'''
    '#''allVersionInfos'''
'Sent but not implemented from #''JadeServer>>mcTopazFrom:inFileRepository:'''
    '#''versionFromFileNamed:'''
'Sent but not implemented from #''JadeServer>>mcNewDirectoryRepository:'''
    '#''directory:'''
'Sent but not implemented from #''JadeServer>>mcUniqueVersionNameFor:'''
    '#''uniqueVersionName'''
'Sent but not implemented from #''JadeServer>>mcLoadedVersionNames'''
    '#''package'''
    '#''allManagers'''
    '#''ancestors'''
'Sent but not implemented from #''JadeServer>>sbSavePackage:'''
    '#''package'''
    '#''allManagers'''
    '#''user:'''
'Sent but not implemented from #''JadeServer>>installTranscript'''
    '#''registerTranscriptClientForwarder:'''
'Sent but not implemented from #''JadeServer>>mcAddHttpRepository:'''
    '#''location:user:password:'''
'Sent but not implemented from #''JadeServer>>mcTopazFrom:inDictionaryRepository:'''
    '#''versionFromVersionNamed:'''
'Sent but not implemented from #''JadeServer>>mcVersionLoad:fromFile:autoMigrate:'''
    '#''autoMigrate:'''
    '#''autoMigrate'''
    '#''package'''
    '#''loadVersionFromFileNamed:'''
    '#''forPackage:'''
    '#''repositoryGroup'''
'Sent but not implemented from #''JadeServer>>sbClass:'''
    '#''symbolDictionaryName'''
    '#''package'''
    '#''allManagers'''
'Sent but not implemented from #''JadeServer>>stepPointsFor:in:'''
    '#''_stepPointsFromBreakIpOffsets:'''
    '#''_breakpointIpOffsets'''
'Sent but not implemented from #''JadeServer>>_methodsFor:categories:'''
    '#''_includesCategory:'''
'Sent but not implemented from #''JadeServer>>mcAddRepository:toPackage:'''
    '#''repositoryGroup'''
'Sent but not implemented from #''JadeServer>>_mcTopazFrom:on:'''
    '#''sharedPoolsString'''
'Sent but not implemented from #''JadeServer>>mcVersionInfoFromFileNamed:in:'''
    '#''versionInfoFromFileNamed:'''
'Sent but not implemented from #''JadeServer>>mcNewFileTreeRepository:'''
    '#''directory:'''
'Sent but not implemented from #''JadeServer>>sbAddRepository:'''
    '#''package'''
    '#''allManagers'''
    '#''repositoryGroup'''
'Sent but not implemented from #''JadeServer>>sbUniqueVersionName:'''
    '#''package'''
    '#''uniqueVersionName'''
    '#''allManagers'''
'Sent but not implemented from #''JadeServer>>mcInitials:'''
    '#''setAuthorInitials:'''
'Sent but not implemented from #''JadeServer>>mcVersionInfoFrom:'''
    '#''yyyymmdd'''
    '#''time'''
    '#''date'''
    '#''stepChildren'''
    '#''ancestors'''
'Sent but not implemented from #''JadeServer>>mcVersionLoad:fromDictionary:autoMigrate:'''
    '#''autoMigrate:'''
    '#''autoMigrate'''
    '#''versionFromVersionNamed:'''
    '#''package'''
    '#''forPackage:'''
    '#''repositoryGroup'''
'Sent but not implemented from #''JadeServer>>sbFileOutMethod:'''
    '#''nextPutAll:fileOutMethod:'''
'Sent but not implemented from #''JadeServer>>sbUpdateMethodBreakPointsFor:'''
    '#''_stepPointsFromBreakIpOffsets:'''
    '#''_breakpointIpOffsets'''
'Sent but not implemented from #''JadeServer64bit>>sbRemoveKey:fromDictionary:'''
    '#''removeFromSystem'''
'Sent but not implemented from #''JadeServer>>sbLoadLatestVersionOfConfiguration:'''
    '#''latestVersion'''
'Sent but not implemented from #''JadeServer>>mcAllFileNamesIn:'''
    '#''allFileNames'''
'Sent but not implemented from #''JadeServer>>_packageNameFor:'''
    '#''allManagers'''
'Sent but not implemented from #''JadeServer>>mcCreationTemplateFor:'''
    '#''asCreationTemplate'''
'Sent but not implemented from #''JadeServer>>mcNewServerDirectoryRepository:'''
    '#''directory:'''
'Sent but not implemented from #''JadeServer>>mcWorkingCopyNamed:'''
    '#''package'''
    '#''allManagers'''
'Sent but not implemented from #''JadeServer>>mcPatchFrom:to:inFileBasedRepository:'''
    '#''package'''
    '#''versionFromFileNamed:'''
    '#''allManagers'''
'Sent but not implemented from #''JadeServer>>sbFindClassPackageMap'''
    '#''categoryDict'''
    '#''includesSystemCategory:'''
    '#''allManagers'''
    '#''packageInfo'''
'Sent but not implemented from #''JadeServer>>sbUpdatePackage:'''
    '#''time'''
    '#''user'''
    '#''date'''
    '#''forPackage:'''
    '#''repositoryGroup'''
    '#''ancestors'''
'Sent but not implemented from #''JadeServer>>compileMethod:behavior:symbolList:inCategory:'''
    '#''_primitiveCompileMethod:symbolList:category:oldLitVars:intoMethodDict:intoCategories:'''
    '#''_primitiveCompileMethod:symbolList:category:obsoleteClassNames:oldLitVars:'''
    '#''_primitiveCompileMethod:symbolList:category:oldLitVars:intoMethodDict:intoCategories:intoPragmas:'''
    '#''compileMethod:category:using:'''
    '#''compileMethod:category:using:environmentId:'''
'Sent but not implemented from #''JadeServer>>mcNewGitHubRepository:'''
    '#''location:'''
'Sent but not implemented from #''JadeServer>>mcVersionInfoFromDictionaryPackageNamed:in:'''
    '#''versionInfoFromVersionNamed:'''
'Sent but not implemented from #''JadeServer>>obConfirmationRequest:'''
    '#''okChoice'''
    '#''cancelChoice'''
'Sent but not implemented from #''JadeServer>>sbInstVarsOldParent:newParent:oldChild:'''
    '#''_methodDict'''
'Sent but not implemented from #''JadeServer>>_stepPointsForBreaksInMethod:'''
    '#''_stepPointsFromBreakIpOffsets:'''
    '#''_breakpointIpOffsets'''
'Sent but not implemented from #''JadeServer64bit24>>registerOBNotificationsForPlatform:clientForwarder:'''
    '#''registerMultipleChoiceClientForwarder:'''
'Sent but not implemented from #''JadeServer64bit>>metacelloConfigurations'''
    '#''isMetacelloConfig'''
'Sent but not implemented from #''JadeServer>>mcHttpRepository:user:password:'''
    '#''user:'''
'Sent but not implemented from #''JadeServer>>mcAddPackage:'''
    '#''forPackage:'''
'Sent but not implemented from #''JadeServer>>mcClassesInCategory:package:'''
    '#''packageInfo'''
'Sent but not implemented from #''JadeServer>>mcVersionNameAndMessageFrom:'''
    '#''needsSaving'''
    '#''currentVersionInfo'''
    '#''ancestors'''
'Sent but not implemented from #''JadeServer>>saveWorkingCopy:to:'''
    '#''package'''
    '#''repositoryGroup'''
    '#''ancestors'''
'Sent but not implemented from #''JadeServer>>mcwcbWorkingCopies'''
    '#''package'''
    '#''allManagers'''
'Sent but not implemented from #''JadeServer>>mcUserAndPasswordInHTTP:'''
    '#''user'''
'Sent but not implemented from #''JadeServer>>mcAllVersionNamesInDict:'''
    '#''time'''
    '#''package'''
    '#''date'''
'Sent but not implemented from #''JadeServer>>definitionOfClass:forUser:'''
    '#''constraintOfInstVar:'''
'Sent but not implemented from #''JadeServer>>sbComparePackages:'''
    '#''versionFromVersionNamed:'''
    '#''package'''
    '#''versionFromFileNamed:'''
    '#''forPackage:'''
    '#''repositoryGroup'''
'Sent but not implemented from #''JadeServer>>sbMigrateAll:'''
    '#''autoMigrate'''
'Sent but not implemented from #''JadeServer>>registerOBNotificationsForPlatform:clientForwarder:'''
    '#''registerTextClientForwarder:'''
    '#''registerMultiLineTextClientForwarder:'''
    '#''registerInformClientForwarder:'''
    '#''registerConfirmationClientForwarder:'''
    '#''registerCloseClientForwarder:'''
    '#''registerChoiceClientForwarder:'''
    '#''registerBrowseClientForwarder:'''
'Sent but not implemented from #''JadeServer>>sbObjectLog:'''
    '#''continuation'''
    '#''objectString'''
    '#''labelString'''
    '#''objectLog'''
    '#''stamp'''
'Sent but not implemented from #''JadeServer>>subclassSelectorForClass:'''
    '#''isTransientDB'''
'Sent but not implemented from #''JadeServer64bit3x>>sbUpdateMethodsByCategories'''
    '#''isRubyBridgeMethod'''
ericwinger commented 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.

dalehenrich commented 4 years ago

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

ericwinger commented 4 years ago

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.

LisaAlmarode commented 1 year ago

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: