Commit 5b49a99
committed
Ensure native exceptions are clear and properly propagated
Audit + fixes across the whole native<->managed boundary:
- Grammar loading actually honors the native resolver now. NativeLibrary
.Load(name, assembly, ...) does NOT invoke a SetDllImportResolver
callback (that fires only for DllImport/LibraryImport), so grammar
loads silently ignored TREE_SITTER_NATIVE_PATH and the repo native/<rid>
fallback. Added internal NativeLibraryResolver.TryResolve(...) running
the full probe sequence; LanguagePack.Load uses it (then the default
loader), and InternalsVisibleTo exposes it. The documented contract is
now true.
- Manifest parse errors surface as InvalidOperationException with the
JsonException chained, instead of a bare JsonException; added a
string/Stream test seam.
Verified the rest of the boundary already surfaces clear, typed,
chained exceptions (lib/export/null-ptr load failures, allocation
failures, ABI mismatch, query compile errors, no-language vs cancel,
dispose, the single intentional logger-thunk boundary swallow, no
throw-ex stack resets, buffers freed on throw paths).
Adds tests/ErrorPropagationTests.cs (23 cases) proving each path.
Build 0/0 (Debug+Release); 404 tests pass (incl. hermetic);
coverage 97.4% / 98.0% / 99.5% (core / codegen / languagepack).
https://claude.ai/code/session_01S3hwvd2oz6cntXmB3G6Yf11 parent 3fc1d5e commit 5b49a99
5 files changed
Lines changed: 567 additions & 8 deletions
File tree
- src
- TreeSitter.LanguagePack
- TreeSitter
- Native
- tests/TreeSitter.Tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
187 | 187 | | |
188 | 188 | | |
189 | 189 | | |
190 | | - | |
191 | | - | |
192 | | - | |
193 | | - | |
194 | | - | |
195 | | - | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
196 | 205 | | |
197 | 206 | | |
198 | 207 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
53 | 53 | | |
54 | 54 | | |
55 | 55 | | |
56 | | - | |
57 | | - | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
58 | 82 | | |
59 | 83 | | |
60 | 84 | | |
61 | 85 | | |
62 | 86 | | |
63 | 87 | | |
64 | 88 | | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
65 | 100 | | |
66 | 101 | | |
67 | 102 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
99 | 99 | | |
100 | 100 | | |
101 | 101 | | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
102 | 129 | | |
103 | 130 | | |
104 | 131 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
39 | 44 | | |
40 | 45 | | |
41 | 46 | | |
| |||
0 commit comments