apache / apache/texera

Four unreachable code paths, one of them misleading

Open
#8,338 0 comments 0 reactions 1 assignee Claimed by @aglinxinyuan View on GitHub
Dominant language
Scala
Stars
314
Forks
187
Avg merge
1d 21h
Merged PRs (30d)
214

Description

### Task Summary

Four code paths in the tree cannot be reached, and one of them actively misleads a reader:

| Site | Why it is unreachable |
|---|---|
| `user-dataset-version-creator.component.ts` — `get formControlNames()` | The identifier occurs exactly once repo-wide: its own declaration. No caller, no template binding. |
| `expression_evaluator.py` — `ExpressionEvaluator._contextualize_expression` | Zero call sites. The only member any other module touches on that class is `evaluate`. |
| `Attribute.java` — two null guards in `equals` | The sole constructor `checkNotNull`s both fields, both are `private final`, there is no setter and no subclass, so no instance with a null field can exist. |
| `user-dataset-file-renderer.component.ts` — the empty-row filter | `for (const cell in row)` enumerates **keys**, not values, so `cell != ""` is true on the first iteration for any row with at least one key and the predicate returns true. Its comment claims it filters empty rows; it does not. |

Two of these are worth more than the line count.

The second `Attribute.equals` guard is **latently wrong**, not merely unreachable: it returns `that.attributeType == null` and ignores the attribute names entirely, so two differently-named attributes with null types would compare equal — which would break the `Schema` lookups and `Set` semantics built on this class. (Reported separately as #8149.)

The file-renderer filter is the misleading one. A reader sees a comment saying empty rows are filtered and reasonably assumes they are.

### Task Type

- [x] Refactor / Cleanup

### Was this issue authored using generative AI tooling?

Generated-by: Claude Code (Opus 5)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.