Skip to content

Circular dependencies between Toplo packages #361

@tinchodias

Description

@tinchodias

A concrete example:

  1. Toplo, the base package, has TToLabeledIcon
  2. TToLabeledIcon references ToLabel and ToImage
  3. ToLabel belongs to Toplo-Widget-Album package, and this package references classes in Toplo
  4. Same for ToImage, that belongs to Toplo-Widget-Image package, which also references Toplo classes.

This is not circular anymore if either we merge those packages into the base package (doesn't sound good), or we convert to extensions the methods in TToLabeledIcon that reference ToLabel and ToImage. But this second option is also not very good, because the meaning of TToLabeledIcon is to provide an API/behavior of a label and an icon to a ToElement. Any other option?

There are several undeclared warnings like this in the run logs:

NewUndeclaredWarning: ToImageTest>>testEmptyImage (ToImage is Undeclared)
NewUndeclaredWarning: ToImageTest>>testImageWithForm (ToImage is Undeclared)
NewUndeclaredWarning: TToElement>>asFloatElement (ToFloatElement is Undeclared)
NewUndeclaredWarning: TToElementWithContextMenu>>contextMenuManagerClass (ToContextMenuManager is Undeclared)
NewUndeclaredWarning: TToElementWithPlaceholder>>placeholderClass (ToPlaceholderLayer is Undeclared)
NewUndeclaredWarning: TToElementWithPlaceholder>>placeholderString: (ToLabel is Undeclared)
NewUndeclaredWarning: TToElementWithPlaceholder>>placeholderText: (ToAttributedLabel is Undeclared)
NewUndeclaredWarning: TToElementWithPlaceholder>>placeholderText: (ToAttributedLabel is Undeclared)
NewUndeclaredWarning: TToElementWithPlaceholder>>showPlaceholder (ToPlaceholderShownEvent is Undeclared)
NewUndeclaredWarning: TToElementWithPlaceholder>>showPlaceholder (ToPlaceholderShownEvent is Undeclared)
NewUndeclaredWarning: TToElementWithTooltip>>tooltipText: (ToLabel is Undeclared)
NewUndeclaredWarning: TToElementWithTooltip>>tooltipText: (ToLabel is Undeclared)
NewUndeclaredWarning: TToLabeledIcon>>iconImage: (ToImage is Undeclared)
NewUndeclaredWarning: TToLabeledIcon>>labelText: (ToLabel is Undeclared)
NewUndeclaredWarning: ToSkinStateGenerator>>eventsToHandle (ToCheckableCheckEvent is Undeclared)
NewUndeclaredWarning: ToSkinStateGenerator>>eventsToHandle (ToListNodeSelectedEvent is Undeclared)
NewUndeclaredWarning: BlElement>>floatOverlay (ToFloatOverlay is Undeclared)
NewUndeclaredWarning: BlElement>>isSelectableElement (ToAbstractListNode is Undeclared)
NewUndeclaredWarning: BlElement>>openInInnerWindow (ToInnerWindow is Undeclared)
NewUndeclaredWarning: ToElement>>inHorizontalPane (ToPane is Undeclared)
NewUndeclaredWarning: ToElement>>inVerticalPane (ToPane is Undeclared)
NewUndeclaredWarning: ToElement>>newScrollable (ToScrollableElement is Undeclared)
NewUndeclaredWarning: ToImportedIconProvider class>>iconNamed:ifAbsent: (ToImage is Undeclared)
NewUndeclaredWarning: ToImportedIconProvider class>>listElementWithAllIcons (ToListElement is Undeclared)
NewUndeclaredWarning: ToImportedIconProvider class>>listElementWithAllIcons (ToListStrongSelectionEvent is Undeclared)
NewUndeclaredWarning: ToImportedIconProvider class>>listElementWithAllIcons (ToPane is Undeclared)
NewUndeclaredWarning: ToImportedIconProvider class>>listElementWithAllIcons (ToMenuItem is Undeclared)
NewUndeclaredWarning: ToImportedIconProvider class>>listElementWithAllIcons (ToMenuItem is Undeclared)
NewUndeclaredWarning: ToImportedIconProvider class>>listElementWithAllIcons (ToLabel is Undeclared)
NewUndeclaredWarning: ToImportedIconProvider class>>listElementWithAllIcons (ToLabel is Undeclared)
NewUndeclaredWarning: ToImportedIconProvider class>>listElementWithAllIcons (ToPane is Undeclared)
NewUndeclaredWarning: ToLocationIconProvider>>iconNamed:ifAbsent: (ToImage is Undeclared)
NewUndeclaredWarning: ToTheme class>>defaultTokenProperties (ToMaterialDesignIconProvider is Undeclared)
NewUndeclaredWarning: ToTheme class>>defaultTokenProperties (ToMaterialDesignIconProvider is Undeclared)
NewUndeclaredWarning: ToTheme class>>defaultTokenProperties (ToMaterialDesignIconProvider is Undeclared)
NewUndeclaredWarning: ToTheme class>>defaultTokenProperties (ToMaterialDesignIconProvider is Undeclared)
NewUndeclaredWarning: ToTheme class>>defaultTokenProperties (ToMaterialDesignIconProvider is Undeclared)
NewUndeclaredWarning: ToTheme class>>defaultTokenProperties (ToMaterialDesignIconProvider is Undeclared)
NewUndeclaredWarning: ToTheme class>>defaultTokenProperties (ToMaterialDesignIconProvider is Undeclared)
NewUndeclaredWarning: ToTheme class>>defaultTokenProperties (ToMaterialDesignIconProvider is Undeclared)
NewUndeclaredWarning: ToTheme class>>defaultTokenProperties (ToMaterialDesignIconProvider is Undeclared)
NewUndeclaredWarning: ToTheme class>>defaultTokenProperties (ToMaterialDesignIconProvider is Undeclared)
NewUndeclaredWarning: ToCheckableActionLink>>linkWith: (ToCheckableChangedEvent is Undeclared)
NewUndeclaredWarning: ToCheckableGroupActionLink>>linkWith: (ToCheckableGroupChangedEvent is Undeclared)
NewUndeclaredWarning: ToDiffElement>>initializeAlbums (ToAlbum is Undeclared)
NewUndeclaredWarning: ToDiffElement>>initializeAlbums (ToAlbum is Undeclared)
NewUndeclaredWarning: ToEmpty>>labelText: (ToSelectableLabel is Undeclared)
NewUndeclaredWarning: ToEmpty>>labelText: (ToSelectableLabel is Undeclared)
NewUndeclaredWarning: ToLabelledBadge>>initialize (ToLabel is Undeclared)
NewUndeclaredWarning: ToLabelledBadge>>initialize (ToLabel is Undeclared)
NewUndeclaredWarning: ToNumericalBadge>>countChanged (ToLabel is Undeclared)
NewUndeclaredWarning: ToNumericalBadge>>initialize (ToLabel is Undeclared)
NewUndeclaredWarning: ToButton>>labelText: (ToLabel is Undeclared)
NewUndeclaredWarning: ToCheckboxSkin>>enabledSkinEvent: (ToNodeContainer is Undeclared)
NewUndeclaredWarning: ToBeeTheme>>declareLabelRules (ToLabel is Undeclared)
NewUndeclaredWarning: ToBeeTheme>>declareTextPaneRules (ToAlbum is Undeclared)
NewUndeclaredWarning: ToInnerWindow>>defaultBarElement (ToLabel is Undeclared)
NewUndeclaredWarning: ToInnerWindow>>defaultBarElement (ToLabel is Undeclared)
NewUndeclaredWarning: ToInnerWindow>>defaultBarElement (ToLabel is Undeclared)
NewUndeclaredWarning: ToAbstractListElement>>placeholderString: (ToLabel is Undeclared)
NewUndeclaredWarning: ToAbstractListElement>>placeholderText: (ToAttributedLabel is Undeclared)
NewUndeclaredWarning: ToAbstractListElement>>placeholderText: (ToAttributedLabel is Undeclared)
NewUndeclaredWarning: TToGenericNodeManager>>defaultNodeBuilder (ToLabel is Undeclared)
NewUndeclaredWarning: ToWrappedListGenericNodeManager>>defaultNodeBuilder (ToLabel is Undeclared)
NewUndeclaredWarning: ToGenericFiniteListNodeManager>>defaultNodeBuilder (ToLabel is Undeclared)
NewUndeclaredWarning: ToGenericListNodeManager>>defaultNodeBuilder (ToLabel is Undeclared)
NewUndeclaredWarning: ToListContextMenuSelectionElementEventHandler>>eventsToHandle (ToListElementContextMenuRequest is Undeclared)
NewUndeclaredWarning: ToAbstractListElement>>contextMenuManagerClass (ToListElementContextMenuManager is Undeclared)
NewUndeclaredWarning: ToWrappedListNodeManager>>buildNode: (ToLabel is Undeclared)
NewUndeclaredWarning: ToListElementSieve>>newTextField (ToTextField is Undeclared)
NewUndeclaredWarning: ToAlbum>>placeholderString: (ToLabel is Undeclared)
NewUndeclaredWarning: ToAlbum>>placeholderText: (ToAttributedLabel is Undeclared)
NewUndeclaredWarning: ToAlbum>>placeholderText: (ToAttributedLabel is Undeclared)

(from a run of https://github.com/pharo-graphics/Toplo/tree/AutomaticBaseline)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions