|  | class A { | 
|  | companion object { | 
|  |  | 
|  | } | 
|  | } | 
|  |  | 
|  | class A { | 
|  | companion object | 
|  |  | 
|  | val c: Int = 1 | 
|  | } | 
|  |  | 
|  | class B { | 
|  | public companion object A { | 
|  |  | 
|  | } | 
|  | } | 
|  |  | 
|  | class B { | 
|  | companion object A { | 
|  | companion object { | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | companion object B | 
|  | //should be error | 
|  | companion object { | 
|  |  | 
|  | } | 
|  |  | 
|  | object A { | 
|  | companion object | 
|  | } | 
|  |  | 
|  | interface A { | 
|  | companion object | 
|  |  | 
|  | class C { | 
|  | companion object C { | 
|  | companion object | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | enum class D { | 
|  | A, B; | 
|  |  | 
|  | companion object | 
|  | } | 
|  |  | 
|  |  | 
|  | //should be error | 
|  | class A { | 
|  | class companion object | 
|  | } | 
|  |  | 
|  | class A { | 
|  | companion public final object | 
|  | } | 
|  |  | 
|  | //should be error | 
|  | companion class {} | 
|  |  | 
|  | //should be error | 
|  | val t = companion object { | 
|  |  | 
|  | } | 
|  |  | 
|  | enum class I { | 
|  | A, | 
|  | B; | 
|  |  | 
|  | companion object | 
|  | } | 
|  |  | 
|  | enum class I { | 
|  | A, | 
|  | B; | 
|  |  | 
|  | companion object {} | 
|  | } |