All Downloads are FREE. Search and download functionalities are using the official Maven repository.

framework.src.org.checkerframework.qualframework.base.DefaultTypeHierarchy Maven / Gradle / Ivy

Go to download

The Checker Framework enhances Java’s type system to make it more powerful and useful. This lets software developers detect and prevent errors in their Java programs. The Checker Framework includes compiler plug-ins ("checkers") that find bugs or verify their absence. It also permits you to write your own compiler plug-ins.

There is a newer version: 3.42.0
Show newest version
package org.checkerframework.qualframework.base;

import javax.lang.model.type.TypeKind;

/** Default implementation of {@link TypeHierarchy}.  Applies standard Java
 * subtyping rules to compare Java types.
 */
public class DefaultTypeHierarchy implements TypeHierarchy {
    private TypeHierarchyAdapter adapter;

    public DefaultTypeHierarchy() {
    }

    void setAdapter(TypeHierarchyAdapter adapter) {
        this.adapter = adapter;
    }


    @Override
    public boolean isSubtype(QualifiedTypeMirror subtype, QualifiedTypeMirror supertype) {
        // Qualifier API doesn't allow qualifiers on NullType, but the
        // underlying framework does (and expects the annotations to match).
        // So we have this extra check to make NullType a subtype of all
        // reference types.
        if (subtype.getKind() == TypeKind.NULL) {
            switch (supertype.getKind()) {
                case ARRAY:
                case DECLARED:
                case NULL:
                case TYPEVAR:
                    return true;
                default:
            }
        }

        return adapter.superIsSubtype(subtype, supertype);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy