|
@@ -645,7 +645,7 @@ public class JavaNativeModule {
|
645
|
645
|
Parameter parameter = javaParameters[i];
|
646
|
646
|
|
647
|
647
|
//AnnotatedType parameterType = parameter.getAnnotatedType();
|
648
|
|
- StoredType type = loadStoredType(context, parameter.getAnnotatedType());
|
|
648
|
+ StoredType type = loadStoredType(context, parameter);
|
649
|
649
|
Expression defaultValue = getDefaultValue(parameter, type);
|
650
|
650
|
parameters[i] = new FunctionParameter(type, parameter.getName(), defaultValue, parameter.isVarArgs());
|
651
|
651
|
}
|
|
@@ -670,6 +670,14 @@ public class JavaNativeModule {
|
670
|
670
|
private StoredType loadStoredType(TypeVariableContext context, AnnotatedType annotatedType) {
|
671
|
671
|
return loadType(context, annotatedType);
|
672
|
672
|
}
|
|
673
|
+
|
|
674
|
+ private StoredType loadStoredType(TypeVariableContext context, Parameter parameter) {
|
|
675
|
+ final StoredType type = loadStoredType(context, parameter.getAnnotatedType());
|
|
676
|
+ //Optional is a parameter annotation so passing the parameter's type does not pass the optional
|
|
677
|
+ if(parameter.isAnnotationPresent(ZenCodeType.Optional.class) && !type.isOptional())
|
|
678
|
+ return new StoredType(registry.getOptional(type.type), type.getSpecifiedStorage());
|
|
679
|
+ return type;
|
|
680
|
+ }
|
673
|
681
|
|
674
|
682
|
private StoredType loadType(TypeVariableContext context, AnnotatedType annotatedType) {
|
675
|
683
|
if (annotatedType.isAnnotationPresent(ZenCodeType.USize.class))
|
|
@@ -677,7 +685,7 @@ public class JavaNativeModule {
|
677
|
685
|
else if (annotatedType.isAnnotationPresent(ZenCodeType.NullableUSize.class))
|
678
|
686
|
return registry.getOptional(BasicTypeID.USIZE).stored();
|
679
|
687
|
|
680
|
|
- boolean nullable = annotatedType.isAnnotationPresent(ZenCodeType.Nullable.class) || annotatedType.isAnnotationPresent(ZenCodeType.Optional.class);
|
|
688
|
+ boolean nullable = annotatedType.isAnnotationPresent(ZenCodeType.Nullable.class);
|
681
|
689
|
boolean unsigned = annotatedType.isAnnotationPresent(ZenCodeType.Unsigned.class);
|
682
|
690
|
|
683
|
691
|
Type type = annotatedType.getType();
|