Skip to content

refactor: replace eval-based dynamic field access with MATLAB idioms#94

Merged
ehennestad merged 2 commits into
devfrom
modernize/fix-eval-dynamic-field-access
May 14, 2026
Merged

refactor: replace eval-based dynamic field access with MATLAB idioms#94
ehennestad merged 2 commits into
devfrom
modernize/fix-eval-dynamic-field-access

Conversation

@ehennestad
Copy link
Copy Markdown
Collaborator

Summary

  • Replace eval(strcat('S.', name)) and eval(strjoin({...}, '.')) patterns with direct dynamic field access (S.(name)) and subsref for dotted-path strings
  • Replace eval(sprintf('%s.getBlankItem()', mfilename('class'))) with feval([mfilename('class'), '.getBlankItem']) in SessionMethodsCatalog
  • Delete nansen.manage.OptionsAdapter — confirmed dead duplicate of nansen.wrapper.abstract.OptionsAdapter (zero subclasses, zero callers)

Files changed

  • code/general/+tools/editStruct.m
  • code/apps/+structeditor/App.m
  • code/wrappers/+nansen/+wrapper/+abstract/OptionsAdapter.m
  • code/+nansen/+config/SessionMethodsCatalog.m
  • code/+nansen/+manage/OptionsAdapter.m (deleted)

🤖 Generated with Claude Code

Replace eval(strcat('S.', name)) and eval(strjoin({...}, '.')) patterns
with direct dynamic field access (S.(name)) and subsref for dotted paths.
Remove nansen.manage.OptionsAdapter — dead duplicate of
nansen.wrapper.abstract.OptionsAdapter with zero subclasses or callers.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 14, 2026

Test Results

199 tests   199 ✅  24s ⏱️
 11 suites    0 💤
  1 files      0 ❌

Results for commit 8700719.

♻️ This comment has been updated with latest results.

Add nansen.internal.introspection.getConstantPropertyValue(className, propName)
as a safe replacement for eval(sprintf('%s.PropName', className)). Uses
meta.class.fromName internally and errors clearly when the class or property
is not found or not Constant.

Replace 9 call sites across Preferences, NansenUserSession, ImageStack,
MetaTable, MetaTableColumnLayout, formatTableForDisplay, OptionsManager (×2),
and App.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@ehennestad ehennestad merged commit 8802077 into dev May 14, 2026
5 checks passed
@ehennestad ehennestad deleted the modernize/fix-eval-dynamic-field-access branch May 14, 2026 09:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant