package Ġde . plat on 4 2 . intellij . plugins . m 6 8 k . ins pe ctions Ċ Ċ import Ġcom . intellij . test Framework . fixtures . Code Insight TestFixture Ċ import Ġde . plat on 4 2 . intellij . jupiter . My Fixture Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ internal Ġclass ĠM 6 8 k Dead Write Inspection Test Ġ: ĠAbstract Inspection Test () Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġfind _ direct _ dead _ write _ to _ register (@ My Fixture Ġmy Fixture : ĠCode Insight TestFixture ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmy Fixture . enable Ins pe ctions ( M 6 8 k Dead Write Inspection :: class . java ) ĊĠĠĠĠĠĠĠ Ġmy Fixture . configure By Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" dead write . asm ", Ġ""" ĊĠĠĠ Ġmove . l Ġ Ġ# 1 2 3 , d 1 ĊĠĠĠ Ġadd . l ĠĠ Ġd 0 , d 2 ĊĠĠĠ Ġmove q . l Ġ# 1 2 3 , d 1 ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġassert Highlight ings ( my Fixture , Ġ 1 , Ġ" Register Ġd 1 Ġis Ġoverwritten Ġlater Ġwithout Ġbeing Ġused ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġfind _ direct _ dead _ write _ to _ register _ with _ modification (@ My Fixture Ġmy Fixture : ĠCode Insight TestFixture ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmy Fixture . enable Ins pe ctions ( M 6 8 k Dead Write Inspection :: class . java ) ĊĠĠĠĠĠĠĠ Ġmy Fixture . configure By Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" dead write . asm ", Ġ""" ĊĠĠĠ Ġmove . l Ġ Ġ# 1 2 3 , d 1 ĊĠĠĠ Ġadd . l ĠĠ Ġd 0 , d 1 ĊĠĠĠ Ġmove q . l Ġ# 1 2 3 , d 1 ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġassert Highlight ings ( my Fixture , Ġ 1 , Ġ" Register Ġd 1 Ġis Ġoverwritten Ġlater Ġwithout Ġbeing Ġused ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġno _ dead _ write _ to _ register _ due _ to _ part _ modification (@ My Fixture Ġmy Fixture : ĠCode Insight TestFixture ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmy Fixture . enable Ins pe ctions ( M 6 8 k Dead Write Inspection :: class . java ) ĊĠĠĠĠĠĠĠ Ġmy Fixture . configure By Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" dead write . asm ", Ġ""" ĊĠĠĠ Ġmove . l Ġ Ġ# 1 2 3 , d 1 ĊĠĠĠ Ġadd . b ĠĠ Ġd 1 , d 0 ĊĠĠĠ Ġmove q . l Ġ# 1 2 3 , d 1 ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertThat ( my Fixture . do Highlighting ()). isEmpty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġuse _ of _ condition _ code _ cause s _ weak _ warning (@ My Fixture Ġmy Fixture : ĠCode Insight TestFixture ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmy Fixture . enable Ins pe ctions ( M 6 8 k Dead Write Inspection :: class . java ) ĊĠĠĠĠĠĠĠ Ġmy Fixture . configure By Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" dead write . asm ", Ġ""" ĊĠĠĠ Ġmove . l Ġ Ġ# 1 2 3 , d 1 ĊĠĠĠ Ġs cc ĠĠĠĠ Ġd 0 ĊĠĠĠ Ġmove q . l Ġ# 1 2 3 , d 1 ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġassert Highlight ings ( my Fixture , Ġ 1 , Ġ" Register Ġd 1 Ġis Ġoverwritten Ġlater Ġ( only ĠCC Ġevaluated ?) ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġuse _ of _ conditional _ instruction _ for _ non _ conditional _ cause s _ full _ warning (@ My Fixture Ġmy Fixture : ĠCode Insight TestFixture ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmy Fixture . enable Ins pe ctions ( M 6 8 k Dead Write Inspection :: class . java ) ĊĠĠĠĠĠĠĠ Ġmy Fixture . configure By Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" dead write . asm ", Ġ""" ĊĠĠĠ Ġmove . l Ġ Ġ# 1 2 3 , d 1 ĊĠĠĠ Ġst ĠĠĠĠĠ Ġd 0 ĊĠĠĠ Ġmove q . l Ġ# 1 2 3 , d 1 ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġassert Highlight ings ( my Fixture , Ġ 1 , Ġ" Register Ġd 1 Ġis Ġoverwritten Ġlater Ġwithout Ġbeing Ġused ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġuse _ of _ condition _ code _ after _ modification _ cause s _ no _ warning (@ My Fixture Ġmy Fixture : ĠCode Insight TestFixture ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmy Fixture . enable Ins pe ctions ( M 6 8 k Dead Write Inspection :: class . java ) ĊĠĠĠĠĠĠĠ Ġmy Fixture . configure By Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" dead write . asm ", Ġ""" ĊĠĠĠ Ġmove . l Ġ Ġ# 1 2 3 , d 1 ĊĠĠĠ Ġadd . b ĠĠ Ġd 0 , d 1 ĊĠĠĠ Ġseq ĠĠĠĠ Ġ. foo ĊĠĠĠ Ġmove q . l Ġ# 1 2 3 , d 1 Ċ . foo ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertThat ( my Fixture . do Highlighting ()). isEmpty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġuse _ of _ control _ flow _ cause s _ no _ warning (@ My Fixture Ġmy Fixture : ĠCode Insight TestFixture ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmy Fixture . enable Ins pe ctions ( M 6 8 k Dead Write Inspection :: class . java ) ĊĠĠĠĠĠĠĠ Ġmy Fixture . configure By Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" dead write . asm ", Ġ""" ĊĠĠĠ Ġmove . l Ġ Ġ# 1 2 3 , d 1 ĊĠĠĠ Ġadd . b ĠĠ Ġd 0 , d 1 ĊĠĠĠ Ġb ra . s ĠĠ Ġ. foo ĊĠĠĠ Ġmove q . l Ġ# 1 2 3 , d 1 Ċ . foo ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertThat ( my Fixture . do Highlighting ()). isEmpty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġmov em _ can _ cause _ multiple _ warnings (@ My Fixture Ġmy Fixture : ĠCode Insight TestFixture ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmy Fixture . enable Ins pe ctions ( M 6 8 k Dead Write Inspection :: class . java ) ĊĠĠĠĠĠĠĠ Ġmy Fixture . configure By Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" dead write . asm ", Ġ""" ĊĠĠĠ Ġmov em . l Ġ( a 0 ), d 0 - d 7 ĊĠĠĠ Ġadd . l ĠĠ Ġd 0 , d 1 ĊĠĠĠ Ġmove q . l Ġ# 1 2 3 , d 3 ĊĠĠĠ Ġcl r . l ĠĠ Ġ# 1 2 3 , d 6 ĊĠĠĠ Ġmov em . l Ġ( a 0 ), d 5 - d 7 ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġassert Highlight ings ( my Fixture , Ġ 1 , Ġ" Register Ġd 5 Ġis Ġoverwritten Ġlater Ġwithout Ġbeing Ġused ") ĊĠĠĠĠĠĠĠ Ġassert Highlight ings ( my Fixture , Ġ 1 , Ġ" Register Ġd 6 Ġis Ġoverwritten Ġlater Ġwithout Ġbeing Ġused ") ĊĠĠĠĠĠĠĠ Ġassert Highlight ings ( my Fixture , Ġ 1 , Ġ" Register Ġd 7 Ġis Ġoverwritten Ġlater Ġwithout Ġbeing Ġused ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġoverwrite _ in _ same _ instruction _ with _ read _ cause s _ no _ warning (@ My Fixture Ġmy Fixture : ĠCode Insight TestFixture ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmy Fixture . enable Ins pe ctions ( M 6 8 k Dead Write Inspection :: class . java ) ĊĠĠĠĠĠĠĠ Ġmy Fixture . configure By Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" dead write . asm ", Ġ""" ĊĠĠĠ Ġmove . w Ġ Ġ# 1 2 3 , d 3 ĊĠĠĠ Ġmove . w Ġ Ġ( a 0 , d 3 . w ), d 3 ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertThat ( my Fixture . do Highlighting ()). isEmpty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġpartial _ overwrite _ in _ cause s _ no _ warning (@ My Fixture Ġmy Fixture : ĠCode Insight TestFixture ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmy Fixture . enable Ins pe ctions ( M 6 8 k Dead Write Inspection :: class . java ) ĊĠĠĠĠĠĠĠ Ġmy Fixture . configure By Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" dead write . asm ", Ġ""" ĊĠĠĠ Ġmove . w Ġ Ġ# 1 2 3 , d 3 ĊĠĠĠ Ġmove . b Ġ Ġd 2 , d 3 ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertThat ( my Fixture . do Highlighting ()). isEmpty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġover sized _ overwrite _ in _ cause s _ warning (@ My Fixture Ġmy Fixture : ĠCode Insight TestFixture ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmy Fixture . enable Ins pe ctions ( M 6 8 k Dead Write Inspection :: class . java ) ĊĠĠĠĠĠĠĠ Ġmy Fixture . configure By Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" dead write . asm ", Ġ""" ĊĠĠĠ Ġmove . w Ġ Ġ# 1 2 3 , d 3 ĊĠĠĠ Ġmove . l Ġ Ġd 2 , d 3 ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġassert Highlight ings ( my Fixture , Ġ 1 , Ġ" Register Ġd 3 Ġis Ġoverwritten Ġlater Ġwithout Ġbeing Ġused ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġconditional _ write _ does _ not _ cause _ a _ warning (@ My Fixture Ġmy Fixture : ĠCode Insight TestFixture ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmy Fixture . enable Ins pe ctions ( M 6 8 k Dead Write Inspection :: class . java ) ĊĠĠĠĠĠĠĠ Ġmy Fixture . configure By Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" dead write . asm ", Ġ""" ĊĠĠĠ ĠIF ĠĠ 0 ĊĠĠĠ Ġmove . w Ġ Ġ# 1 2 3 , d 3 ĊĠĠĠ ĠELSE ĊĠĠĠ Ġcl r . w ĠĠ Ġd 3 ĊĠĠĠ ĠEN DC ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertThat ( my Fixture . do Highlighting ()). isEmpty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġmodification _ ext ending _ width _ does _ not _ cause _ a _ warning _ on _ smaller _ write _ later (@ My Fixture Ġmy Fixture : ĠCode Insight TestFixture ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmy Fixture . enable Ins pe ctions ( M 6 8 k Dead Write Inspection :: class . java ) ĊĠĠĠĠĠĠĠ Ġmy Fixture . configure By Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" dead write . asm ", Ġ""" Ċ ĉ move . b Ġ Ġ( a 0 )+ , d 0 Ċ ĉ l sl ĠĠĠĠ Ġ# 8 , d 0 Ċ ĉ move . b Ġ Ġ( a 0 )+ , d 0 ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertThat ( my Fixture . do Highlighting ()). isEmpty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġmacro _ call _ with _ register _ name _ will _ not _ cause _ a _ warning (@ My Fixture Ġmy Fixture : ĠCode Insight TestFixture ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmy Fixture . enable Ins pe ctions ( M 6 8 k Dead Write Inspection :: class . java ) ĊĠĠĠĠĠĠĠ Ġmy Fixture . configure By Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" dead write . asm ", Ġ""" ĊĠĠĠ Ġmove q . l Ġ# - 1 , d 0 ĊĠĠĠ ĠCOP R MOVE Ġd 0 , bl ta fw m ĊĠĠĠ Ġmove . l Ġ Ġpd _ Curr Planes Ptr ( a 4 ), d 0 ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠassertThat ( my Fixture . do Highlighting ()). isEmpty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġinternal Ġfun Ġmacro _ call _ with _ different _ register _ name _ will _ cause _ a _ warning (@ My Fixture Ġmy Fixture : ĠCode Insight TestFixture ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmy Fixture . enable Ins pe ctions ( M 6 8 k Dead Write Inspection :: class . java ) ĊĠĠĠĠĠĠĠ Ġmy Fixture . configure By Text ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" dead write . asm ", Ġ""" ĊĠĠĠ Ġmove q . l Ġ# - 1 , d 0 ĊĠĠĠ ĠCOP R MOVE Ġd 1 , bl ta fw m ĊĠĠĠ Ġmove . l Ġ Ġpd _ Curr Planes Ptr ( a 4 ), d 0 ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġassert Highlight ings ( my Fixture , Ġ 1 , Ġ" Register Ġd 0 Ġis Ġoverwritten Ġlater Ġwithout Ġbeing Ġused ") ĊĠĠĠ Ġ} Ċ }