Browse Source

Fixed casting through multiple layers of interfaces

Jared 5 years ago
parent
commit
4717402f0b
No account linked to committer's email address

+ 9
- 8
CodeModel/src/main/java/org/openzen/zenscript/codemodel/type/member/TypeMembers.java View File

5
  */
5
  */
6
 package org.openzen.zenscript.codemodel.type.member;
6
 package org.openzen.zenscript.codemodel.type.member;
7
 
7
 
8
-import java.util.ArrayList;
9
-import java.util.HashMap;
10
-import java.util.List;
11
-import java.util.Map;
12
-import java.util.Set;
13
 import org.openzen.zencode.shared.CodePosition;
8
 import org.openzen.zencode.shared.CodePosition;
14
 import org.openzen.zencode.shared.CompileException;
9
 import org.openzen.zencode.shared.CompileException;
15
 import org.openzen.zencode.shared.CompileExceptionCode;
10
 import org.openzen.zencode.shared.CompileExceptionCode;
16
 import org.openzen.zenscript.codemodel.CompareType;
11
 import org.openzen.zenscript.codemodel.CompareType;
12
+import org.openzen.zenscript.codemodel.GenericName;
17
 import org.openzen.zenscript.codemodel.OperatorType;
13
 import org.openzen.zenscript.codemodel.OperatorType;
18
 import org.openzen.zenscript.codemodel.expression.CallArguments;
14
 import org.openzen.zenscript.codemodel.expression.CallArguments;
19
 import org.openzen.zenscript.codemodel.expression.CheckNullExpression;
15
 import org.openzen.zenscript.codemodel.expression.CheckNullExpression;
42
 import org.openzen.zenscript.codemodel.partial.PartialStaticMemberGroupExpression;
38
 import org.openzen.zenscript.codemodel.partial.PartialStaticMemberGroupExpression;
43
 import org.openzen.zenscript.codemodel.partial.PartialTypeExpression;
39
 import org.openzen.zenscript.codemodel.partial.PartialTypeExpression;
44
 import org.openzen.zenscript.codemodel.partial.PartialVariantOptionExpression;
40
 import org.openzen.zenscript.codemodel.partial.PartialVariantOptionExpression;
41
+import org.openzen.zenscript.codemodel.scope.TypeScope;
45
 import org.openzen.zenscript.codemodel.type.BasicTypeID;
42
 import org.openzen.zenscript.codemodel.type.BasicTypeID;
46
 import org.openzen.zenscript.codemodel.type.DefinitionTypeID;
43
 import org.openzen.zenscript.codemodel.type.DefinitionTypeID;
47
-import org.openzen.zenscript.codemodel.GenericName;
48
 import org.openzen.zenscript.codemodel.type.GlobalTypeRegistry;
44
 import org.openzen.zenscript.codemodel.type.GlobalTypeRegistry;
49
-import org.openzen.zenscript.codemodel.scope.TypeScope;
50
 import org.openzen.zenscript.codemodel.type.StoredType;
45
 import org.openzen.zenscript.codemodel.type.StoredType;
51
 import org.openzen.zenscript.codemodel.type.TypeID;
46
 import org.openzen.zenscript.codemodel.type.TypeID;
52
 
47
 
48
+import java.util.ArrayList;
49
+import java.util.HashMap;
50
+import java.util.List;
51
+import java.util.Map;
52
+import java.util.Set;
53
+
53
 /**
54
 /**
54
  *
55
  *
55
  * @author Hoofdgebruiker
56
  * @author Hoofdgebruiker
559
 			if (implementation.member.implementsType.type.getNormalized() == toType.type)
560
 			if (implementation.member.implementsType.type.getNormalized() == toType.type)
560
 				return castEquivalent(position, new InterfaceCastExpression(position, value, implementation.member), toType);
561
 				return castEquivalent(position, new InterfaceCastExpression(position, value, implementation.member), toType);
561
 		}
562
 		}
562
-		if (extendsType(toType.type))
563
+		if (extendsOrImplements(toType.type))
563
 			return new SupertypeCastExpression(position, value, toType);
564
 			return new SupertypeCastExpression(position, value, toType);
564
 		
565
 		
565
 		return new InvalidExpression(position, toType, CompileExceptionCode.INVALID_CAST, "Could not cast " + toString() + " to " + toType);
566
 		return new InvalidExpression(position, toType, CompileExceptionCode.INVALID_CAST, "Could not cast " + toString() + " to " + toType);

Loading…
Cancel
Save