package Ġio . gitlab . art urb os ch . de te kt . rules . bugs Ċ Ċ import Ġio . gitlab . art urb os ch . de te kt . api . Config Ċ import Ġio . gitlab . art urb os ch . de te kt . rules . Kotlin Core Environment Test Ċ import Ġio . gitlab . art urb os ch . de te kt . test . Test Config Ċ import Ġio . gitlab . art urb os ch . de te kt . test . compile And Lint WithContext Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . jetbrains . kotlin . cli . jvm . compiler . Kotlin Core Environment Ċ import Ġorg . junit . jupiter . api . Nested Ċ import Ġorg . junit . jupiter . api . Test Ċ Ċ @ Kotlin Core Environment Test Ċ class ĠAvoid Refer ential Equality Spec ( private Ġval Ġenv : ĠKotlin Core Environment ) Ġ{ ĊĊĠĠĠ Ġ@ Nested ĊĠĠĠ Ġinner Ġclass Ġ` Refer ential Equality Ġwith Ġdefaults ` Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġsubject Ġ= ĠAvoid Refer ential Equality ( Config . empty ) ĊĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` reports Ġusage Ġof Ġ=== Ġfor Ġstrings `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġ" a Ġstring " ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġs Ġ=== Ġ" something " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġf ( other : ĠString ) Ġ= Ġs Ġ=== Ġother ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġg ( other : ĠString ) Ġ= Ġif Ġ( s Ġ=== Ġother ) Ġ 1 Ġelse Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġsubject . compile And Lint WithContext ( env , Ġcode ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( actual ). has Size ( 3 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` reports Ġusage Ġof Ġ=== Ġwith Ġnullable `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġs : ĠString ? Ġ= Ġ" a Ġstring " ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb 1 Ġ= Ġs Ġ=== Ġ" something " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb 2 Ġ= Ġ" something " Ġ=== Ġs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġf ( other : ĠString ) Ġ= Ġs Ġ=== Ġother ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġg ( other : ĠString ?) Ġ= Ġs Ġ=== Ġother ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġsubject . compile And Lint WithContext ( env , Ġcode ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( actual ). has Size ( 4 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` reports Ġusage Ġof Ġ!== Ġfor Ġstrings `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġs : ĠString Ġ= Ġ" a Ġstring " ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġs Ġ!== Ġ" something " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġsubject . compile And Lint WithContext ( env , Ġcode ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( actual ). has Size ( 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` ign ores Ġusage Ġof Ġ=== Ġfor Ġnon Ġstrings `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġi Ġ= Ġ 4 2 ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġl Ġ= Ġ 9 9 L ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġ' a ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġi Ġ=== Ġ 1 Ġ|| Ġl Ġ=== Ġ 1 0 0 L Ġ|| Ġc Ġ=== Ġ' b ' ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġsubject . compile And Lint WithContext ( env , Ġcode ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( actual ). isEmpty () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` ign ores Ġusage Ġof Ġ== Ġfor Ġstrings `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġ" a Ġstring " ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġs Ġ== Ġ" something " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġf ( other : ĠString ) Ġ= Ġs Ġ== Ġother ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġg ( other : ĠString ) Ġ= Ġif Ġ( s Ġ== Ġother ) Ġ 1 Ġelse Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġsubject . compile And Lint WithContext ( env , Ġcode ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( actual ). isEmpty () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` ign ores Ġusage Ġof Ġ=== Ġwith Ġgeneric Ġparameters `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġsame ( one : ĠT , Ġtwo : ĠT ): ĠBoolean Ġ= Ġone Ġ=== Ġtwo ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġsame (" this ", Ġ" that ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġsubject . compile And Lint WithContext ( env , Ġcode ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( actual ). isEmpty () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Nested ĊĠĠĠ Ġinner Ġclass Ġ` Refer ential Equality Ġenabled Ġfor Ġall Ġtypes ` Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġsubject Ġ= ĠAvoid Refer ential Equality ( Test Config (" for bidden Type Patterns " Ġto Ġ"* ")) ĊĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` reports Ġusage Ġof Ġ=== Ġfor Ġstrings `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġ" a Ġstring " ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġi Ġ= Ġ 1 ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠlistOf ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġs Ġ=== Ġ" other " Ġ|| Ġi Ġ=== Ġ 4 2 Ġ|| Ġlist Ġ=== ĠlistOf ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġsubject . compile And Lint WithContext ( env , Ġcode ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( actual ). has Size ( 3 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Nested ĊĠĠĠ Ġinner Ġclass Ġ` Refer ential Equality Ġenabled Ġfor Ġall Ġlists ` Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġpattern Ġ= Ġ""" kotlin . collections .* List """ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġsubject Ġ= ĠAvoid Refer ential Equality ( Test Config (" for bidden Type Patterns " Ġto Ġpattern )) ĊĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` reports Ġusage Ġof Ġ=== `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist A Ġ= ĠlistOf ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist B Ġ= ĠlistOf ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmutable List Ġ= Ġmutable ListOf ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= ĠlistOf ( 2 ) Ġ=== Ġlist A Ġ|| Ġlist A Ġ=== Ġlist B Ġ|| Ġmutable List Ġ=== Ġmutable ListOf ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġsubject . compile And Lint WithContext ( env , Ġcode ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( actual ). has Size ( 3 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Test ĊĠĠĠĠĠĠĠ Ġfun Ġ` ign ores Ġusage Ġof Ġ== `() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist A Ġ= ĠlistOf ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist B Ġ= ĠlistOf ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmutable List Ġ= Ġmutable ListOf ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb Ġ= ĠlistOf ( 2 ) Ġ== Ġlist A Ġ|| Ġlist A Ġ== Ġlist B Ġ|| Ġmutable List Ġ== Ġmutable ListOf ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactual Ġ= Ġsubject . compile And Lint WithContext ( env , Ġcode ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( actual ). isEmpty () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ