@@ -72,8 +72,10 @@ public function accepts(Type $type, bool $strictTypes): AcceptsResult
7272
7373 public function isSuperTypeOf (Type $ type ): IsSuperTypeOfResult
7474 {
75- // TODO
76- return new IsSuperTypeOfResult ($ type ->hasProperty ($ this ->propertyName ), []);
75+ return new IsSuperTypeOfResult (
76+ $ type ->hasInstanceProperty ($ this ->propertyName )->or ($ type ->hasStaticProperty ($ this ->propertyName )),
77+ [],
78+ );
7779 }
7880
7981 public function isSubTypeOf (Type $ otherType ): IsSuperTypeOfResult
@@ -88,8 +90,10 @@ public function isSubTypeOf(Type $otherType): IsSuperTypeOfResult
8890 $ limit = IsSuperTypeOfResult::createMaybe ();
8991 }
9092
91- // TODO
92- return $ limit ->and (new IsSuperTypeOfResult ($ otherType ->hasProperty ($ this ->propertyName ), []));
93+ return $ limit ->and (new IsSuperTypeOfResult (
94+ $ otherType ->hasInstanceProperty ($ this ->propertyName )->or ($ otherType ->hasStaticProperty ($ this ->propertyName )),
95+ [],
96+ ));
9397 }
9498
9599 public function isAcceptedBy (Type $ acceptingType , bool $ strictTypes ): AcceptsResult
@@ -117,7 +121,6 @@ public function hasProperty(string $propertyName): TrinaryLogic
117121 return TrinaryLogic::createMaybe ();
118122 }
119123
120- // TODO
121124 public function hasInstanceProperty (string $ propertyName ): TrinaryLogic
122125 {
123126 if ($ this ->propertyName === $ propertyName ) {
@@ -127,7 +130,6 @@ public function hasInstanceProperty(string $propertyName): TrinaryLogic
127130 return TrinaryLogic::createMaybe ();
128131 }
129132
130- // TODO
131133 public function hasStaticProperty (string $ propertyName ): TrinaryLogic
132134 {
133135 if ($ this ->propertyName === $ propertyName ) {
0 commit comments