A concrete example:
Toplo, the base package, has TToLabeledIcon
TToLabeledIcon references ToLabel and ToImage
ToLabel belongs to Toplo-Widget-Album package, and this package references classes in Toplo
- 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)
A concrete example:
Toplo, the base package, hasTToLabeledIconTToLabeledIconreferencesToLabelandToImageToLabelbelongs toToplo-Widget-Albumpackage, and this package references classes inToploToImage, that belongs toToplo-Widget-Imagepackage, which also referencesToploclasses.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
TToLabeledIconthat referenceToLabelandToImage. But this second option is also not very good, because the meaning ofTToLabeledIconis to provide an API/behavior of a label and an icon to aToElement. Any other option?There are several undeclared warnings like this in the run logs:
(from a run of https://github.com/pharo-graphics/Toplo/tree/AutomaticBaseline)