correct type hierarchy in isSubTypeOf()

This commit is contained in:
Volker Berlin 2022-03-20 18:06:08 +01:00
parent 1f51fbf036
commit 09ab338aa7
2 changed files with 17 additions and 7 deletions

View File

@ -49,9 +49,9 @@ public interface AnyType {
/**
* Check if this is a sub type of given type.
*
* @param type
* @param other
* type to check
* @return true, if both are identical or the type is a sub type
* @return true, if both are identical or this is a sub type of <code>other</code>. Or if <code>other</code> is a parent type of this.
*/
public boolean isSubTypeOf( @Nonnull AnyType type );
public boolean isSubTypeOf( @Nonnull AnyType other );
}

View File

@ -1,5 +1,5 @@
/*
* Copyright 2017 - 2020 Volker Berlin (i-net software)
* Copyright 2017 - 2022 Volker Berlin (i-net software)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -29,8 +29,8 @@ public enum ValueType implements AnyType {
i16(-0x07),
u16(-0x07),
funcref(-0x10),
externref(-0x11),
anyref(-0x12),
externref(-0x11), //TODO rename to any
anyref(-0x12), // TODO obsolete
eqref(-0x13),
optref(-0x14),
ref(-0x15),
@ -76,6 +76,16 @@ public enum ValueType implements AnyType {
*/
@Override
public boolean isSubTypeOf( AnyType type ) {
return type == this;
if( type == this ) {
return true;
}
switch( this ) {
case externref:
return type.isRefType();
case eqref:
return type.isRefType() || type == externref;
default:
return false;
}
}
}