diff --git a/src/java.desktop/share/classes/javax/sound/midi/MidiDevice.java b/src/java.desktop/share/classes/javax/sound/midi/MidiDevice.java index 335ff97a92190..67e81b31b8325 100644 --- a/src/java.desktop/share/classes/javax/sound/midi/MidiDevice.java +++ b/src/java.desktop/share/classes/javax/sound/midi/MidiDevice.java @@ -27,6 +27,10 @@ import java.util.List; +import org.checkerframework.checker.mustcall.qual.InheritableMustCall; +import org.checkerframework.framework.qual.AnnotatedFor; + + /** * {@code MidiDevice} is the base interface for all MIDI devices. Common devices * include synthesizers, sequencers, MIDI input ports, and MIDI output ports. @@ -93,6 +97,8 @@ * @see Receiver * @see Transmitter */ +@AnnotatedFor({"mustcall"}) +@InheritableMustCall("close") public interface MidiDevice extends AutoCloseable { /** diff --git a/src/java.desktop/share/classes/javax/sound/midi/Receiver.java b/src/java.desktop/share/classes/javax/sound/midi/Receiver.java index 9677c4f904cb8..c8c41b4bdc704 100644 --- a/src/java.desktop/share/classes/javax/sound/midi/Receiver.java +++ b/src/java.desktop/share/classes/javax/sound/midi/Receiver.java @@ -25,6 +25,9 @@ package javax.sound.midi; +import org.checkerframework.checker.mustcall.qual.InheritableMustCall; +import org.checkerframework.framework.qual.AnnotatedFor; + /** * A {@code Receiver} receives {@link MidiEvent} objects and typically does * something useful in response, such as interpreting them to generate sound or @@ -36,6 +39,8 @@ * @see Synthesizer * @see Transmitter */ +@AnnotatedFor({"mustcall"}) +@InheritableMustCall("close") public interface Receiver extends AutoCloseable { //$$fb 2002-04-12: fix for 4662090: Contradiction in Receiver specification diff --git a/src/java.desktop/share/classes/javax/sound/midi/Transmitter.java b/src/java.desktop/share/classes/javax/sound/midi/Transmitter.java index 47c60330160ab..7d94e52a31155 100644 --- a/src/java.desktop/share/classes/javax/sound/midi/Transmitter.java +++ b/src/java.desktop/share/classes/javax/sound/midi/Transmitter.java @@ -25,6 +25,9 @@ package javax.sound.midi; +import org.checkerframework.checker.mustcall.qual.InheritableMustCall; +import org.checkerframework.framework.qual.AnnotatedFor; + /** * A {@code Transmitter} sends {@link MidiEvent} objects to one or more * {@link Receiver Receivers}. Common MIDI transmitters include sequencers and @@ -33,6 +36,8 @@ * @author Kara Kytle * @see Receiver */ +@AnnotatedFor({"mustcall"}) +@InheritableMustCall("close") public interface Transmitter extends AutoCloseable { /** diff --git a/src/java.desktop/share/classes/javax/sound/sampled/Line.java b/src/java.desktop/share/classes/javax/sound/sampled/Line.java index e6b9452d5caab..ef6b223c0c34a 100644 --- a/src/java.desktop/share/classes/javax/sound/sampled/Line.java +++ b/src/java.desktop/share/classes/javax/sound/sampled/Line.java @@ -25,6 +25,9 @@ package javax.sound.sampled; +import org.checkerframework.checker.mustcall.qual.InheritableMustCall; +import org.checkerframework.framework.qual.AnnotatedFor; + /** * The {@code Line} interface represents a mono or multi-channel audio feed. A * line is an element of the digital audio "pipeline," such as a mixer, an input @@ -66,6 +69,8 @@ * @see LineEvent * @since 1.3 */ +@AnnotatedFor({"mustcall"}) +@InheritableMustCall("close") public interface Line extends AutoCloseable { /** diff --git a/src/java.sql/share/classes/java/sql/ResultSet.java b/src/java.sql/share/classes/java/sql/ResultSet.java index 4534bd8e537be..f83e796aef7f4 100644 --- a/src/java.sql/share/classes/java/sql/ResultSet.java +++ b/src/java.sql/share/classes/java/sql/ResultSet.java @@ -26,6 +26,7 @@ package java.sql; import org.checkerframework.checker.nullness.qual.Nullable; +import org.checkerframework.checker.mustcall.qual.InheritableMustCall; import org.checkerframework.framework.qual.AnnotatedFor; import java.math.BigDecimal; @@ -149,7 +150,8 @@ * @since 1.1 */ -@AnnotatedFor("nullness") +@AnnotatedFor({"nullness", "mustcall"}) +@InheritableMustCall("close") public interface ResultSet extends Wrapper, AutoCloseable { /** diff --git a/src/java.sql/share/classes/java/sql/Statement.java b/src/java.sql/share/classes/java/sql/Statement.java index f62a6ef545008..af068ab8ee883 100644 --- a/src/java.sql/share/classes/java/sql/Statement.java +++ b/src/java.sql/share/classes/java/sql/Statement.java @@ -28,6 +28,9 @@ import org.checkerframework.checker.sqlquotes.qual.SqlEvenQuotes; import org.checkerframework.checker.tainting.qual.Untainted; +import org.checkerframework.checker.mustcall.qual.InheritableMustCall; +import org.checkerframework.framework.qual.AnnotatedFor; + import java.util.regex.Pattern; import static java.util.stream.Collectors.joining; @@ -47,6 +50,8 @@ * @see ResultSet * @since 1.1 */ +@AnnotatedFor({"mustcall"}) +@InheritableMustCall("close") public interface Statement extends Wrapper, AutoCloseable { /**