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.
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.
🧩 Analysis chain
Interceptor inheritance is applied too early and gets overwritten by initModule.
initModule unconditionally assigns
module.interceptor = opt.Interceptor(Line 137). Your pre-init nil-check setsnewMod.interceptor, but it’s then clobbered whenopt.Interceptoris nil. Do the fallback onoptbefore callinginitModule, or guard the assignment insideinitModule.Apply this diff in New():
newMod := &DynamicModule{isRoot: false} newMod.DataProviders = append(newMod.DataProviders, m.GetExports()...) newMod.Middlewares = append(newMod.Middlewares, m.Middlewares...) - if newMod.interceptor == nil { - newMod.interceptor = m.interceptor - } + // Inherit parent interceptor only when none provided + if opt.Interceptor == nil { + opt.Interceptor = m.interceptor + } initModule(newMod, opt) return newModAlternatively (if you prefer keeping the current call site unchanged), guard the interceptor set in initModule:
Run to confirm no other writes override the interceptor unexpectedly:
🏁 Script executed:
Length of output: 1298
Fix interceptor inheritance being clobbered by initModule
initModule unconditionally sets module.interceptor = opt.Interceptor (core/module.go:137), which overwrites the fallback done earlier in New() (core/module.go:104–106). Either apply the fallback to opt before calling initModule or guard the assignment in initModule.
Apply this diff in New():
newMod := &DynamicModule{isRoot: false} newMod.DataProviders = append(newMod.DataProviders, m.GetExports()...) newMod.Middlewares = append(newMod.Middlewares, m.Middlewares...) - if newMod.interceptor == nil { - newMod.interceptor = m.interceptor - } + // Inherit parent interceptor only when none provided + if opt.Interceptor == nil { + opt.Interceptor = m.interceptor + } initModule(newMod, opt) return newModOr guard inside initModule:
core/module.go:104–106,137.
🤖 Prompt for AI Agents