State checking for extending abstract classes
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 35/100
Rechercherichtung
Reproduziere den Bericht mithilfe der URLConnectionRefinements-Anmerkungen, URLExt und des Testurl-Beispiels. Beginne damit nachzuverfolgen, wie geerbte Zustandsverfeinerungen aus java.net.URLConnection überprüft werden, wenn Methoden auf URLExt aufgerufen werden. Erledigt ist die Aufgabe, wenn setDoInput(false) akzeptiert wird, während getContent() abgelehnt wird, weil das Objekt den verbundenen Zustand noch nicht erreicht hat.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Currently, reusing state refinements from an abstract superclass in a concrete class is not fully implemented, and gives an error like the one below.
Example for abstract class java.net.URLConnection:
@ExternalRefinementsFor("java.net.URLConnection")
@StateSet({"setup", "connected"})
public interface URLConnectionRefinements {
@StateRefinement(to="setup(this)")
public void URLConnection(URL url);
@StateRefinement(from="setup(this)")
public void setDoInput(boolean doinput);
@StateRefinement(from="setup(this)", to="connected(this)")
public void connect();
@StateRefinement(from="connected(this)")
public Object getContent();
}
Extended in class URLExt:
class URLExt extends URLConnection{
public URLExt(URL url){
super(url);
}
@Override
public void connect() throws IOException {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'connect'");
}
}```
Tested in:
```java
class Testurl {
void test() throws URISyntaxException, IOException {
URLExt u = new URLExt(new URI("http://example.com").toURL());
u.setDoInput(false); // should not be an error but it is
u.getContent(); // should be an error
}
}
- Vorherrschende Sprache
- Java
- Sterne
- 67
- Forks
- 36
- Ø Merge
- 10 T. 18 Std.
- Gemergte PRs (30 T.)
- 3
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus liquid-java/liquidjava
-
enhancement
liquid-java/liquidjava#240 · 1 zugewiesene Person ·
-
enhancement ide
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 45/100
liquid-java/liquidjava#206 ·
-
tests
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 25/100
liquid-java/liquidjava#198 ·
-
tests
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 25/100
liquid-java/liquidjava#197 ·
-
tests
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
liquid-java/liquidjava#196 · 2 Kommentare ·
Alle Issues in liquid-java/liquidjava
Ähnliche Issues
-
awaiting triage bug Causes friction Hop Gui P1 P2 Transforms
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
apache/flink-agents#1152 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
jenkinsci/blueocean-plugin#5417 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 75/100
objectionary/eo-graphs#75 ·