Ghost variables are not correctly initialized in interfaces
@pcanelas já está trabalhando nisso.
Desde 4/7/2025.
Avaliação
Esta issue ainda não foi avaliada.
Descrição
Ghost variable initialization is dependent on declaring the constructor for the type the that the refinements are for. This declaration implicitly initializes int variables in a way equivalent to @StateRefinement(to = "var(this) == 0")
It is not possible to declare constructors for interface types as these don't have constructors. This prohibits the correct initialization of both Ghost variables and States for interfaces
@ExternalRefinementsFor("java.util.List")
@Ghost("int size2")
public interface ListRefinements<E> {
@StateRefinement(to = "size2(this) == (size2(old(this)) + 1)")
public boolean add(E elem);
@StateRefinement(from = "size2(this) > 0", to = "size2(this) == (size2(old(this)) - 1)")
public void remove(@Refinement("index >= 0") int index);
}
public static void main(String[] args) {
List<Integer> l = new ArrayList<>();
l.add(0);
int a = l.remove(0);
}
The error provided is Failed to check state transitions when calling l.remove(0)
This error messages is identical to the error message that would appear when attempting the same operation on a concrete class without a declared constructor in the Refinement definitions
- Linguagem predominante
- Java
- Estrelas
- 67
- Forks
- 36
- Merge médio
- 10d 18h
- PRs com merge (30d)
- 3
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de liquid-java/liquidjava
-
enhancement
liquid-java/liquidjava#240 · 1 responsável ·
-
enhancement ide
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 45/100
liquid-java/liquidjava#206 ·
-
tests
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 25/100
liquid-java/liquidjava#198 ·
-
tests
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 25/100
liquid-java/liquidjava#197 ·
-
tests
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
liquid-java/liquidjava#196 · 2 comentários ·
Todas as issues de liquid-java/liquidjava
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
elastic/gradle-plugins#157 ·
-
enhancement Tools
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 75/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
apache/rocketmq-dashboard#5008 ·
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
-
DETECT_PARAMETER_NAMES=false silently disables @ConstructorProperties-based Creator detection too Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
FasterXML/jackson-databind#6229 ·