typetools / typetools/checker-framework
Inheritance of classes with a qualifier parameter
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 1.1k
- Forks
- 440
- Avg merge
- 1d 12h
- Merged PRs (30d)
- 134
Description
If a class extends a @HasQualifierParameter class (or implements a
@HasQualifierParameter interface), then that class must also be marked
@HasQualifierParameter. A particular subclass should be able to specify which qualifier
parameter should be used for the super class. (This is similar to class StringList implements List<String> {...}.) For example,
@HasQualifierParameter(Tainted.class)
class Buffer {
void append(@PolyTainted Buffer this, @PolyTainted String s) { ... }
}
@HasQualifierParameter(Tainted.class)
@Tainted class TaintedBuffer extends @Tainted Buffer {
@Override
void append(@Tainted TaintedBuffer this, @Tainted String s) { ... } // legal override
}
@Untainted TaintedBuffer is an invalid type.
See test case in checker/tests/tainting/SubClassHasQP.java and manual section in generics.tex.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with checker/tests/tainting/SubClassHasQP.java and the related manual section in generics.tex. Read the existing test and documentation to understand the expected inheritance and qualifier-parameter rules. Done means subclasses of @HasQualifierParameter classes or interfaces must declare the annotation, valid qualifier selection works for the superclass, and invalid types such as @Untainted TaintedBuffer are rejected.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 35/100