Skip to content

Conversation

@JasonXuDeveloper
Copy link
Owner

Summary

  • Bumps Nino from 4.0.0-preview.143 to 4.0.0-preview.147 which fixes ArrayTypeMismatchException when serializing [NinoType] classes containing Dictionary fields under HybridCLR's interpreter

Root Cause

Nino's generated Dictionary serializer used Unsafe.As<Dictionary, DictionaryView> to access internal _entries. HybridCLR's ldelema instruction enforces strict runtime type checking, detecting DictionaryView.EntryDictionary.Entry and throwing ArrayTypeMismatchException.

Fixes #621
Ref: JasonXuDeveloper/Nino#172

Test plan

  • Build to Android with HybridCLR hot update
  • Serialize/deserialize a [NinoType] class with Dictionary fields
  • Verify no ArrayTypeMismatchException

🤖 Generated with Claude Code

…tion in HybridCLR

Nino's generated Dictionary serializer used `Unsafe.As<Dictionary, DictionaryView>`
to access internal `_entries`, which throws `ArrayTypeMismatchException` under
HybridCLR's interpreter due to strict `ldelema` type checking.

Fixes #621
Ref: JasonXuDeveloper/Nino#172

Signed-off-by: JasonXuDeveloper <jason@xgamedev.net>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: JasonXuDeveloper - 傑 <jason@xgamedev.net>
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Updates the Unity project’s Nino package version to pick up an upstream fix for ArrayTypeMismatchException during Dictionary serialization under HybridCLR (Android interpreter path).

Changes:

  • Bump com.jasonxudeveloper.nino from 4.0.0-preview.143 to 4.0.0-preview.147 in the Unity manifest.json.
  • Update packages-lock.json to lock Nino to 4.0.0-preview.147.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
UnityProject/Packages/manifest.json Pins Nino to 4.0.0-preview.147 so the project consumes the HybridCLR serialization fix.
UnityProject/Packages/packages-lock.json Locks the resolved Nino version to 4.0.0-preview.147 for deterministic restores.

Update the JEngine.Core package dependency and its lockfile entry
from 4.0.0-preview.137 to 4.0.0-preview.147 to match the project
manifest, ensuring downstream consumers get the HybridCLR fix.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: JasonXuDeveloper - 傑 <jason@xgamedev.net>
@github-actions github-actions bot added the core label Feb 8, 2026
Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Auto-approved: Copilot review found no issues and Unity Tests passed (or were skipped for non-code changes).

Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Auto-approved: Copilot review found no issues and Unity Tests passed (or were skipped for non-code changes).

@JasonXuDeveloper JasonXuDeveloper enabled auto-merge (squash) February 8, 2026 00:22
@github-actions
Copy link

github-actions bot commented Feb 8, 2026

Unity Test Results

EditMode: All tests passed
PlayMode: All tests passed

Unity Version: 2022.3.55f1
Project Path: UnityProject

✅ All tests passed! The PR is ready for review.

View workflow run

Click here to view the full workflow run

@JasonXuDeveloper JasonXuDeveloper merged commit 7193761 into master Feb 8, 2026
20 checks passed
@JasonXuDeveloper JasonXuDeveloper deleted the fix/nino-dictionary-hybridclr branch February 8, 2026 00:27
@codecov
Copy link

codecov bot commented Feb 8, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.91%. Comparing base (2ea9238) to head (edc3fd8).
⚠️ Report is 4 commits behind head on master.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##           master     #627      +/-   ##
==========================================
+ Coverage   93.08%   94.91%   +1.83%     
==========================================
  Files          68       70       +2     
  Lines        9480    10431     +951     
==========================================
+ Hits         8824     9901    +1077     
+ Misses        656      530     -126     
Flag Coverage Δ
ui 95.35% <ø> (+2.31%) ⬆️
util 93.19% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ArrayTypeMismatchException when serializing nested Dictionary on Android device (after HybridCLR hot update)

1 participant