GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Fix ops with multi-dimensional array parameters by ctrueden · Pull Request #296 · scijava/scijava

Conversation

@ctrueden

@ctrueden ctrueden commented Oct 26, 2026

Copy link
Copy Markdown
Member

The class names generated for reduced and converted op wrappers only handled one level of array nesting, so an op with a double[][] parameter failed with "…double[]_Arr is not a valid class name!" when called with its optional parameters omitted, or with converted arguments.

This is a one-line fix in each of ReductionUtils and Conversions, plus engine tests covering double[][] and double[][][] parameters.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
ctrueden and others added 3 commits October 22, 2026 17:36
@ctrueden @claude
Fix generated class names for nested array types
57b0ac8
Reduced and converted op wrappers derive a class name from the parameter
types, replacing "[]" with "_Arr". This was done only one level deep, so
a parameter such as double[][] produced an invalid class name and the op
could not be called with its optional parameters omitted.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@ctrueden @claude
Test ops with nested array parameters in the engine
386d2ff
The fix for generated class names of nested array types (a14c733e9) was
only exercised indirectly by color.deconvolveStains in scijava-ops-image.
NestedArrayParameterTest calls ops with double[][] and double[][][]
parameters with a @nullable parameter omitted (reduced wrapper), and
with a converted argument and output; without the fix, the reduced
calls fail. The converted wrapper name is not compiled into a class on
that path, so ConversionTest checks Conversions.getClassName directly.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@ctrueden @claude
Add a changelog for SciJava Ops Engine
c9e1168
Co-Authored-By: Claude Opus 5.5 <[email protected]>
@ctrueden
ctrueden requested a review from gselzer October 26, 2026 20:59
@gselzer
Simplify and comment
93660f4
gselzer
gselzer requested changes Oct 27, 2026
View reviewed changes

@gselzer gselzer left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ooh, yeah, that's a good bug to solve, thanks @ctrueden

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread scijava-ops-engine/CHANGELOG.md
Comment on lines +1 to +7
# Changelog

All notable changes to SciJava Ops Engine.

## [Unreleased]

### Fixed

@gselzer gselzer Oct 27, 2026

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are we going to start keeping changelogs?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread scijava-ops-engine/src/test/java/org/scijava/ops/engine/reduce/NestedArrayParameterTest.java
Comment on lines +119 to +128
/** An Integer scale goes through a converted wrapper. */
@Test
public void testConverted() {
final Double sum = ops.op("test.nestedArraySum").input(VALUES, 3)
.outType(Double.class).apply();
assertEquals(30, sum, 0);
final Integer rounded = ops.op("test.nestedArraySum").input(VALUES)
.outType(Integer.class).apply();
assertEquals(10, rounded);
}

@gselzer gselzer Oct 27, 2026

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should probably go somewhere in the org.scijava.ops.engine.matcher.convert package?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@gselzer gselzer Oct 27, 2026

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly suggesting this because we are adding a bunch of Ops to the test environment above, most of which aren't needed to test the reduction fix.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread scijava-ops-engine/src/main/java/org/scijava/ops/engine/matcher/reduce/ReductionUtils.java
@@ -174,9 +174,10 @@ private static String memberNames(ReducedOpInfo reducedInfo) {
*/
private static String getClassName(Class<?> clazz) {

@gselzer gselzer Oct 27, 2026

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is obnoxious that we have two identical functions that we have to fix, but probably not worth unifying them?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

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

Reviewers

@gselzer gselzer gselzer requested changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

2 participants

@ctrueden @gselzer
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.