/* Ċ Ġ* ĠMinecraft ĠDev Ġfor ĠIntelliJ Ċ Ġ* Ċ Ġ* Ġhttps :// minecraft dev . org Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 Ġm inecraft - dev Ċ Ġ* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ*/ Ċ Ċ package Ġcom . de mon wav . mc dev . platform . mixin Ċ Ċ import Ġcom . de mon wav . mc dev . framework . Ed t Interceptor Ċ import Ġcom . de mon wav . mc dev . platform . mixin . inspection . injector . Invalid Injector Method Signature Inspection Ċ import Ġorg . intellij . lang . annotations . Language Ċ import Ġorg . junit . jupiter . api . DisplayName Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . extension . Extend With Ċ Ċ @ Extend With ( Ed t Interceptor :: class ) Ċ @ DisplayName (" Invalid ĠInject or ĠMethod ĠSignature ĠIns pection ĠTest ") Ċ class ĠInvalid Injector Method Signature Inspection Test Ġ: ĠBase Mixin Test () Ġ{ ĊĊĠĠĠ Ġprivate Ġfun Ġdo Test (@ Language (" JAVA ") Ġcode : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbuild Project Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdir (" test ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjava (" Test Mixin . java ", Ġcode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfixture . enable Ins pe ctions ( Invalid Injector Method Signature Inspection :: class ) ĊĠĠĠĠĠĠĠ Ġfixture . check Highlighting ( false , Ġfalse , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ DisplayName (" Redirect Ġin Ġconstructor Ġbefore Ġsuper constructor Ġcall ") ĊĠĠĠ Ġfun Ġredirect In Constructor Before Super constructor Call () Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Test ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġtest ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . de mon wav . mc dev . mix int est data . invalid Injector Method Signature Inspection . Mixed In Outer ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . spongepowered . asm . mixin . Mixin ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . spongepowered . asm . mixin . injection . At ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . spongepowered . asm . mixin . injection . Redirect ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Mixin ( Mixed In Outer . class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠTest Mixin Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Redirect ( method Ġ= Ġ"< init >() V ", Ġat Ġ= Ġ@ At ( value Ġ= Ġ" IN VOKE ", Ġtarget Ġ= Ġ" L com / de mon wav / mc dev / mix int est data / invalid Injector Method Signature Inspection / Mixed In Outer ; method 1 () Ljava / lang / String ; ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate ĠString Ġ< error Ġdescr =" Method Ġmust Ġbe Ġstatic "> redirect Method 1 </ error >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Redirect ( method Ġ= Ġ"< init >() V ", Ġat Ġ= Ġ@ At ( value Ġ= Ġ" IN VOKE ", Ġtarget Ġ= Ġ" L com / de mon wav / mc dev / mix int est data / invalid Injector Method Signature Inspection / Mixed In Outer ; method 2 () V ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvoid Ġredirect Method 2 () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ DisplayName (" Inner ĠC tor Ġ@ Inject ĠParameters ") ĊĠĠĠ Ġfun Ġinner Ctor Inject Parameters () Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Test ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġtest ; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . de mon wav . mc dev . mix int est data . invalid Injector Method Signature Inspection . Mixed In Outer ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . spongepowered . asm . mixin . Mixin ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . spongepowered . asm . mixin . injection . At ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . spongepowered . asm . mixin . injection . Inject ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . spongepowered . asm . mixin . injection . callback . CallbackInfo ; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Mixin ( Mixed In Outer . Mixed In Inner . class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠTest Mixin Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Inject ( method Ġ= Ġ"< init >( L com / de mon wav / mc dev / mix int est data / invalid Injector Method Signature Inspection / Mixed In Outer ;) V ", Ġat Ġ= Ġ@ At (" RETURN ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvoid Ġinject Ctor ( Mixed In Outer Ġouter , ĠCallback Info Ġci ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Inject ( method Ġ= Ġ"< init >", Ġat Ġ= Ġ@ At (" RETURN ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvoid Ġinject Ctor ( CallbackInfo Ġci ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Inject ( method Ġ= Ġ"< init >( L com / de mon wav / mc dev / mix int est data / invalid Injector Method Signature Inspection / Mixed In Outer ; Ljava / lang / String ;) V ", Ġat Ġ= Ġ@ At (" RETURN ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvoid Ġinject Ctor ( Mixed In Outer Ġouter , ĠString Ġstring , ĠCallback Info Ġci ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Inject ( method Ġ= Ġ"< init >( L com / de mon wav / mc dev / mix int est data / invalid Injector Method Signature Inspection / Mixed In Outer ; Ljava / lang / String ;) V ", Ġat Ġ= Ġ@ At (" RETURN ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvoid Ġinject Ctor < error Ġdescr =" Method Ġparameters Ġdo Ġnot Ġmatch Ġexpected Ġparameters Ġfor ĠInject ">( String Ġstring , ĠCallback Info Ġci )</ error > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġ@ DisplayName (" Static ĠInner ĠC tor Ġ@ Inject ĠParameters ") ĊĠĠĠ Ġfun Ġstatic Inner Ctor Inject Parameters () Ġ{ ĊĠĠĠĠĠĠĠ Ġdo Test ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġtest ; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . de mon wav . mc dev . mix int est data . invalid Injector Method Signature Inspection . Mixed In Outer ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . spongepowered . asm . mixin . Mixin ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . spongepowered . asm . mixin . injection . At ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . spongepowered . asm . mixin . injection . Inject ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . spongepowered . asm . mixin . injection . callback . CallbackInfo ; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Mixin ( Mixed In Outer . Mixed In Static Inner . class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġclass ĠTest Mixin Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Inject ( method Ġ= Ġ"< init >() V ", Ġat Ġ= Ġ@ At (" RETURN ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvoid Ġinject Ctor Wrong < error Ġdescr =" Method Ġparameters Ġdo Ġnot Ġmatch Ġexpected Ġparameters Ġfor ĠInject ">( Mixed In Outer Ġouter , ĠCallback Info Ġci )</ error > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Inject ( method Ġ= Ġ"< init >", Ġat Ġ= Ġ@ At (" RETURN ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvoid Ġinject Ctor ( CallbackInfo Ġci ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Inject ( method Ġ= Ġ"< init >( Ljava / lang / String ;) V ", Ġat Ġ= Ġ@ At (" RETURN ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvoid Ġinject Ctor < error Ġdescr =" Method Ġparameters Ġdo Ġnot Ġmatch Ġexpected Ġparameters Ġfor ĠInject ">( Mixed In Outer Ġouter , ĠString Ġstring , ĠCallback Info Ġci )</ error > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Inject ( method Ġ= Ġ"< init >( Ljava / lang / String ;) V ", Ġat Ġ= Ġ@ At (" RETURN ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvoid Ġinject Ctor ( String Ġstring , ĠCallback Info Ġci ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ