Skip to content

Commit deadd22

Browse files
committed
Fix order for casting
1 parent 01e5d9c commit deadd22

File tree

1 file changed

+6
-6
lines changed
  • CodeModel/src/main/java/org/openzen/zenscript/codemodel/type/member

1 file changed

+6
-6
lines changed

CodeModel/src/main/java/org/openzen/zenscript/codemodel/type/member/TypeMembers.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -559,20 +559,20 @@ public Expression castImplicit(CodePosition position, Expression value, TypeID t
559559
if (type.isOptional() && type.withoutOptional() == toType)
560560
return new CheckNullExpression(position, value);
561561

562-
// TODO What order should these be in?
563-
// To me (Jared), it makes sense that it goes superType -> implementations -> casters, why cast to a supertype if it extends the type?
564562
if (extendsOrImplements(toType))
565563
return new SupertypeCastExpression(position, value, toType);
566564

567-
for (TypeMember<CasterMemberRef> caster : casters) {
568-
if (caster.member.isImplicit() && caster.member.toType == toType)
569-
return caster.member.cast(position, value, implicit);
570-
}
571565
for (TypeMember<ImplementationMemberRef> implementation : implementations) {
572566
if (implementation.member.implementsType.getNormalized() == toType)
573567
return new InterfaceCastExpression(position, value, implementation.member);
574568
}
575569

570+
for (TypeMember<CasterMemberRef> caster : casters) {
571+
if (caster.member.isImplicit() && caster.member.toType == toType)
572+
return caster.member.cast(position, value, implicit);
573+
}
574+
575+
576576
return new InvalidExpression(position, toType, CompileExceptionCode.INVALID_CAST, "Could not cast " + this + " to " + toType);
577577
}
578578

0 commit comments

Comments
 (0)