Browse Source

Merge remote-tracking branch 'jared/development' into development

kindlich 5 years ago
parent
commit
0ad87d8de3
No known key found for this signature in database

+ 20
- 0
CodeModel/src/main/java/org/openzen/zenscript/codemodel/Modifiers.java View File

81
 	public static boolean hasAccess(int modifiers) {
81
 	public static boolean hasAccess(int modifiers) {
82
 		return (modifiers & (PRIVATE | PUBLIC | PROTECTED | INTERNAL)) > 0;
82
 		return (modifiers & (PRIVATE | PUBLIC | PROTECTED | INTERNAL)) > 0;
83
 	}
83
 	}
84
+    
85
+    public static String describe(int modifiers) {
86
+        StringBuilder builder = new StringBuilder();
87
+        if (isPublic(modifiers)) {
88
+            builder.append("public");
89
+        } else if (isPrivate(modifiers)) {
90
+            builder.append("private");
91
+        } else if (isProtected(modifiers)) {
92
+            builder.append("protected");
93
+        }
94
+        if (isAbstract(modifiers)) {
95
+            builder.append(" abstract");
96
+        } else if (isFinal(modifiers)) {
97
+            builder.append(" final");
98
+        } else if (isStatic(modifiers)) {
99
+            builder.append(" static");
100
+        }
101
+        return builder.toString();
102
+    }
103
+    
84
 }
104
 }

+ 24
- 10
CodeModel/src/main/java/org/openzen/zenscript/codemodel/type/member/TypeMemberGroup.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.List;
10
-import java.util.Map;
11
 import org.openzen.zencode.shared.CodePosition;
8
 import org.openzen.zencode.shared.CodePosition;
12
 import org.openzen.zencode.shared.CompileException;
9
 import org.openzen.zencode.shared.CompileException;
13
 import org.openzen.zencode.shared.CompileExceptionCode;
10
 import org.openzen.zencode.shared.CompileExceptionCode;
11
+import org.openzen.zenscript.codemodel.CompareType;
12
+import org.openzen.zenscript.codemodel.FunctionHeader;
14
 import org.openzen.zenscript.codemodel.expression.CallArguments;
13
 import org.openzen.zenscript.codemodel.expression.CallArguments;
14
+import org.openzen.zenscript.codemodel.expression.ConstExpression;
15
 import org.openzen.zenscript.codemodel.expression.Expression;
15
 import org.openzen.zenscript.codemodel.expression.Expression;
16
 import org.openzen.zenscript.codemodel.expression.GetFieldExpression;
16
 import org.openzen.zenscript.codemodel.expression.GetFieldExpression;
17
 import org.openzen.zenscript.codemodel.expression.GetStaticFieldExpression;
17
 import org.openzen.zenscript.codemodel.expression.GetStaticFieldExpression;
18
+import org.openzen.zenscript.codemodel.expression.InvalidExpression;
19
+import org.openzen.zenscript.codemodel.expression.PostCallExpression;
18
 import org.openzen.zenscript.codemodel.expression.SetFieldExpression;
20
 import org.openzen.zenscript.codemodel.expression.SetFieldExpression;
19
 import org.openzen.zenscript.codemodel.expression.SetStaticFieldExpression;
21
 import org.openzen.zenscript.codemodel.expression.SetStaticFieldExpression;
20
 import org.openzen.zenscript.codemodel.expression.SetterExpression;
22
 import org.openzen.zenscript.codemodel.expression.SetterExpression;
21
 import org.openzen.zenscript.codemodel.expression.StaticSetterExpression;
23
 import org.openzen.zenscript.codemodel.expression.StaticSetterExpression;
22
 import org.openzen.zenscript.codemodel.generic.TypeParameter;
24
 import org.openzen.zenscript.codemodel.generic.TypeParameter;
23
-import org.openzen.zenscript.codemodel.CompareType;
24
-import org.openzen.zenscript.codemodel.FunctionHeader;
25
-import org.openzen.zenscript.codemodel.expression.ConstExpression;
26
-import org.openzen.zenscript.codemodel.expression.InvalidExpression;
27
-import org.openzen.zenscript.codemodel.expression.PostCallExpression;
28
 import org.openzen.zenscript.codemodel.member.FunctionalMember;
25
 import org.openzen.zenscript.codemodel.member.FunctionalMember;
29
 import org.openzen.zenscript.codemodel.member.ref.ConstMemberRef;
26
 import org.openzen.zenscript.codemodel.member.ref.ConstMemberRef;
30
 import org.openzen.zenscript.codemodel.member.ref.FieldMemberRef;
27
 import org.openzen.zenscript.codemodel.member.ref.FieldMemberRef;
35
 import org.openzen.zenscript.codemodel.type.StoredType;
32
 import org.openzen.zenscript.codemodel.type.StoredType;
36
 import org.openzen.zenscript.codemodel.type.TypeID;
33
 import org.openzen.zenscript.codemodel.type.TypeID;
37
 
34
 
35
+import java.util.ArrayList;
36
+import java.util.List;
37
+import java.util.Map;
38
+
38
 /**
39
 /**
39
  *
40
  *
40
  * @author Hoofdgebruiker
41
  * @author Hoofdgebruiker
335
 	
336
 	
336
 	public FunctionalMemberRef selectMethod(CodePosition position, TypeScope scope, CallArguments arguments, boolean allowNonStatic, boolean allowStatic) throws CompileException {
337
 	public FunctionalMemberRef selectMethod(CodePosition position, TypeScope scope, CallArguments arguments, boolean allowNonStatic, boolean allowStatic) throws CompileException {
337
 		// try to match with exact types
338
 		// try to match with exact types
339
+        List<TypeMember<FunctionalMemberRef>> possibleMethods = new ArrayList<>();
338
 		for (TypeMember<FunctionalMemberRef> method : methods) {
340
 		for (TypeMember<FunctionalMemberRef> method : methods) {
339
 			if (!(method.member.isStatic() ? allowStatic : allowNonStatic))
341
 			if (!(method.member.isStatic() ? allowStatic : allowNonStatic))
340
 				continue;
342
 				continue;
341
 			
343
 			
342
 			FunctionHeader header = method.member.getHeader().instanceForCall(position, scope.getTypeRegistry(), arguments);
344
 			FunctionHeader header = method.member.getHeader().instanceForCall(position, scope.getTypeRegistry(), arguments);
343
 			if (header.matchesExactly(position, arguments, scope))
345
 			if (header.matchesExactly(position, arguments, scope))
344
-				return method.member;
346
+			    possibleMethods.add(method);
345
 		}
347
 		}
346
-		
348
+        if (!possibleMethods.isEmpty()) {
349
+            TypeMember<FunctionalMemberRef> selectedMethod = null;
350
+            for (TypeMember<FunctionalMemberRef> method : possibleMethods) {
351
+                if (selectedMethod == null) {
352
+                    selectedMethod = method;
353
+                    continue;
354
+                }
355
+                
356
+                selectedMethod = selectedMethod.resolve(method);
357
+            }
358
+            if (selectedMethod != null)
359
+                return selectedMethod.member;
360
+        }
347
 		// try to match with approximate types
361
 		// try to match with approximate types
348
 		FunctionalMemberRef selected = null;
362
 		FunctionalMemberRef selected = null;
349
 		for (TypeMember<FunctionalMemberRef> method : methods) {
363
 		for (TypeMember<FunctionalMemberRef> method : methods) {

+ 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);

+ 1
- 1
JavaIntegration/src/main/java/org/openzen/zencode/java/JavaNativeModule.java View File

562
 		final String actualName = split[split.length-1];
562
 		final String actualName = split[split.length-1];
563
 
563
 
564
 		for (HighLevelDefinition value : this.definitionByClass.values()) {
564
 		for (HighLevelDefinition value : this.definitionByClass.values()) {
565
-			if(value.name.equals(actualName) && value.pkg.equals(zsPackage))
565
+			if(actualName.equals(value.name) && value.pkg.equals(zsPackage))
566
 				return registry.getForMyDefinition(value);
566
 				return registry.getForMyDefinition(value);
567
 		}
567
 		}
568
 
568
 

Loading…
Cancel
Save