[NI] Fix reporting smartcast diagnostics for intersection types
#KT-30826 Fixed
This commit is contained in:
+12
-12
@@ -61,7 +61,7 @@ fun <T> T?.case_5() {
|
||||
|
||||
<!DEBUG_INFO_IMPLICIT_RECEIVER_SMARTCAST!>equals<!>(this)
|
||||
<!DEBUG_INFO_IMPLICIT_RECEIVER_SMARTCAST!>itest1<!>()
|
||||
apply {
|
||||
<!DEBUG_INFO_IMPLICIT_RECEIVER_SMARTCAST!>apply<!> {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>this<!>
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>this<!>
|
||||
equals(this)
|
||||
@@ -69,7 +69,7 @@ fun <T> T?.case_5() {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>this<!>.equals(this)
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>this<!>.itest1()
|
||||
}
|
||||
also {
|
||||
<!DEBUG_INFO_IMPLICIT_RECEIVER_SMARTCAST!>also<!> {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>it<!>
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>it<!>
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>it<!>.itest1()
|
||||
@@ -89,14 +89,14 @@ fun <T> T?.case_6() {
|
||||
|
||||
<!DEBUG_INFO_IMPLICIT_RECEIVER_SMARTCAST!>equals<!>(this)
|
||||
<!DEBUG_INFO_IMPLICIT_RECEIVER_SMARTCAST!>itest1<!>()
|
||||
apply {
|
||||
<!DEBUG_INFO_IMPLICIT_RECEIVER_SMARTCAST!>apply<!> {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>this<!>
|
||||
equals(this)
|
||||
itest1()
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>this<!>.equals(this)
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>this<!>.itest1()
|
||||
}
|
||||
also {
|
||||
<!DEBUG_INFO_IMPLICIT_RECEIVER_SMARTCAST!>also<!> {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>it<!>
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>it<!>.itest1()
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>it<!>.equals(it)
|
||||
@@ -114,14 +114,14 @@ fun <T> T.case_7() {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("Interface1 & T"), DEBUG_INFO_SMARTCAST!>x<!>.equals(this)
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("Interface1 & T"), DEBUG_INFO_SMARTCAST!>x<!>.itest1()
|
||||
|
||||
x.apply {
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.apply {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}")!>this<!>
|
||||
equals(this)
|
||||
itest1()
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}")!>this<!>.equals(this)
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}")!>this<!>.itest1()
|
||||
}
|
||||
x.also {
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.also {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}")!>it<!>
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}")!>it<!>.itest1()
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}")!>it<!>.equals(it)
|
||||
@@ -140,14 +140,14 @@ fun <T> T.case_8() {
|
||||
|
||||
<!DEBUG_INFO_IMPLICIT_RECEIVER_SMARTCAST!>equals<!>(this)
|
||||
<!DEBUG_INFO_IMPLICIT_RECEIVER_SMARTCAST!>itest1<!>()
|
||||
apply {
|
||||
<!DEBUG_INFO_IMPLICIT_RECEIVER_SMARTCAST!>apply<!> {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}")!>this<!>
|
||||
equals(this)
|
||||
itest1()
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}")!>this<!>.equals(this)
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}")!>this<!>.itest1()
|
||||
}
|
||||
also {
|
||||
<!DEBUG_INFO_IMPLICIT_RECEIVER_SMARTCAST!>also<!> {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}")!>it<!>
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}")!>it<!>.itest1()
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}")!>it<!>.equals(it)
|
||||
@@ -214,14 +214,14 @@ fun <T : Number> T?.case_11() {
|
||||
|
||||
<!DEBUG_INFO_IMPLICIT_RECEIVER_SMARTCAST!>equals<!>(this)
|
||||
<!DEBUG_INFO_IMPLICIT_RECEIVER_SMARTCAST!>itest1<!>()
|
||||
apply {
|
||||
<!DEBUG_INFO_IMPLICIT_RECEIVER_SMARTCAST!>apply<!> {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>this<!>
|
||||
equals(this)
|
||||
itest1()
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>this<!>.equals(this)
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>this<!>.itest1()
|
||||
}
|
||||
also {
|
||||
<!DEBUG_INFO_IMPLICIT_RECEIVER_SMARTCAST!>also<!> {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>it<!>
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>it<!>.itest1()
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>it<!>.equals(it)
|
||||
@@ -1706,11 +1706,11 @@ fun <T> T.case_65() {
|
||||
if (this != null) {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("Interface1 & Interface2 & T & T!!"), DEBUG_INFO_EXPRESSION_TYPE("T")!>this<!>
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("Interface1"), DEBUG_INFO_EXPRESSION_TYPE("T"), DEBUG_INFO_SMARTCAST!>this<!>.equals(<!UNRESOLVED_REFERENCE!>x<!>)
|
||||
apply {
|
||||
<!DEBUG_INFO_IMPLICIT_RECEIVER_SMARTCAST!>apply<!> {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & Interface2 & T!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & Interface2 & T!!}")!>this<!>
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & Interface2 & T!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & Interface2 & T!!}")!>this<!>.equals(this)
|
||||
}
|
||||
also {
|
||||
<!DEBUG_INFO_IMPLICIT_RECEIVER_SMARTCAST!>also<!> {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & Interface2 & T!!}")!>it<!>
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & Interface2 & T!!}")!>it<!>.equals(it)
|
||||
}
|
||||
|
||||
+10
-10
@@ -65,7 +65,7 @@ fun <T> case_5(x: T?) {
|
||||
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("Interface1 & T?"), DEBUG_INFO_SMARTCAST!>x<!>.equals(x)
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("Interface1 & T?"), DEBUG_INFO_SMARTCAST!>x<!>.itest()
|
||||
x.apply {
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.apply {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>this<!>
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>this<!>
|
||||
equals(this)
|
||||
@@ -73,7 +73,7 @@ fun <T> case_5(x: T?) {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>this<!>.equals(x)
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>this<!>.itest()
|
||||
}
|
||||
x.also {
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.also {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>it<!>
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>it<!>
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>it<!>.itest()
|
||||
@@ -93,14 +93,14 @@ fun <T> case_6(x: T?) {
|
||||
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.equals(x)
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.itest()
|
||||
x.apply {
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.apply {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>this<!>
|
||||
equals(this)
|
||||
itest()
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>this<!>.equals(x)
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>this<!>.itest()
|
||||
}
|
||||
x.also {
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.also {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>it<!>
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>it<!>.itest()
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>it<!>.equals(it)
|
||||
@@ -118,14 +118,14 @@ fun <T> case_7(y: T) {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("Interface1 & T"), DEBUG_INFO_SMARTCAST!>x<!>.equals(x)
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("Interface1 & T"), DEBUG_INFO_SMARTCAST!>x<!>.itest()
|
||||
|
||||
x.apply {
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.apply {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}")!>this<!>
|
||||
equals(this)
|
||||
itest()
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}")!>this<!>.equals(x)
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}")!>this<!>.itest()
|
||||
}
|
||||
x.also {
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.also {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}")!>it<!>
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}")!>it<!>.itest()
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}")!>it<!>.equals(it)
|
||||
@@ -144,14 +144,14 @@ fun <T> case_8(x: T) {
|
||||
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.equals(x)
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.itest()
|
||||
x.apply {
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.apply {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}")!>this<!>
|
||||
equals(this)
|
||||
itest()
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}")!>this<!>.equals(x)
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}")!>this<!>.itest()
|
||||
}
|
||||
x.also {
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.also {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}")!>it<!>
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}")!>it<!>.itest()
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T!!}")!>it<!>.equals(it)
|
||||
@@ -218,14 +218,14 @@ fun <T : Number> case_11(x: T?) {
|
||||
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.equals(x)
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.itest()
|
||||
x.apply {
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.apply {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>this<!>
|
||||
equals(this)
|
||||
itest()
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>this<!>.equals(x)
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}"), DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>this<!>.itest()
|
||||
}
|
||||
x.also {
|
||||
<!DEBUG_INFO_SMARTCAST!>x<!>.also {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>it<!>
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>it<!>.itest()
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("{Interface1 & T?!!}")!>it<!>.equals(it)
|
||||
|
||||
+2
-2
@@ -188,7 +188,7 @@ fun case_11(x: Any?) {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("Interface1 & kotlin.Any?"), DEBUG_INFO_SMARTCAST!>x<!>.itest1()
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("Interface2 & kotlin.Any?"), DEBUG_INFO_SMARTCAST!>x<!>.itest2()
|
||||
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("Interface1 & Interface2 & kotlin.Any & kotlin.Any?")!>x<!>.let { <!DEBUG_INFO_EXPRESSION_TYPE("{Any & Interface1 & Interface2}")!>it<!>.itest1(); <!DEBUG_INFO_EXPRESSION_TYPE("{Any & Interface1 & Interface2}")!>it<!>.itest2() }
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("Interface1 & kotlin.Any?"), DEBUG_INFO_SMARTCAST!>x<!>.let { <!DEBUG_INFO_EXPRESSION_TYPE("{Any & Interface1 & Interface2}")!>it<!>.itest1(); <!DEBUG_INFO_EXPRESSION_TYPE("{Any & Interface1 & Interface2}")!>it<!>.itest2() }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -206,7 +206,7 @@ fun case_12(x: Any?) {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("Interface1 & kotlin.Any?"), DEBUG_INFO_SMARTCAST!>x<!>.itest1()
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("Interface2 & kotlin.Any?"), DEBUG_INFO_SMARTCAST!>x<!>.itest2()
|
||||
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("Interface1 & Interface2 & kotlin.Any & kotlin.Any?")!>x<!>.let { <!DEBUG_INFO_EXPRESSION_TYPE("{Any & Interface1 & Interface2}")!>it<!>.itest1(); <!DEBUG_INFO_EXPRESSION_TYPE("{Any & Interface1 & Interface2}")!>it<!>.itest2() }
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("Interface1 & kotlin.Any?"), DEBUG_INFO_SMARTCAST!>x<!>.let { <!DEBUG_INFO_EXPRESSION_TYPE("{Any & Interface1 & Interface2}")!>it<!>.itest1(); <!DEBUG_INFO_EXPRESSION_TYPE("{Any & Interface1 & Interface2}")!>it<!>.itest2() }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -903,7 +903,7 @@ fun case_71(t: Any?) {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("Interface2 & kotlin.Any?"), DEBUG_INFO_SMARTCAST!>t<!>.itest2()
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("Interface2 & kotlin.Any?"), DEBUG_INFO_SMARTCAST!>t<!>.itest()
|
||||
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("Interface1 & Interface2 & kotlin.Any & kotlin.Any?")!>t<!>.let { <!DEBUG_INFO_EXPRESSION_TYPE("{Any & Interface1 & Interface2}")!>it<!>.itest1(); <!DEBUG_INFO_EXPRESSION_TYPE("{Any & Interface1 & Interface2}")!>it<!>.itest2() }
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("Interface1 & kotlin.Any?"), DEBUG_INFO_SMARTCAST!>t<!>.let { <!DEBUG_INFO_EXPRESSION_TYPE("{Any & Interface1 & Interface2}")!>it<!>.itest1(); <!DEBUG_INFO_EXPRESSION_TYPE("{Any & Interface1 & Interface2}")!>it<!>.itest2() }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -924,7 +924,7 @@ fun case_72(t: Any?, z1: Nothing?) {
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("Interface2 & kotlin.Any?"), DEBUG_INFO_SMARTCAST!>t<!>.itest2()
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("Interface2 & kotlin.Any?"), DEBUG_INFO_SMARTCAST!>t<!>.itest()
|
||||
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("Interface1 & Interface2 & kotlin.Any & kotlin.Any?")!>t<!>.let { <!DEBUG_INFO_EXPRESSION_TYPE("{Any & Interface1 & Interface2}")!>it<!>.itest1(); <!DEBUG_INFO_EXPRESSION_TYPE("{Any & Interface1 & Interface2}")!>it<!>.itest2() }
|
||||
<!DEBUG_INFO_EXPRESSION_TYPE("Interface1 & kotlin.Any?"), DEBUG_INFO_SMARTCAST!>t<!>.let { <!DEBUG_INFO_EXPRESSION_TYPE("{Any & Interface1 & Interface2}")!>it<!>.itest1(); <!DEBUG_INFO_EXPRESSION_TYPE("{Any & Interface1 & Interface2}")!>it<!>.itest2() }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user