Skip to content

Commit e498930

Browse files
authored
Fix issue 621 (#622)
* Fix 621 * fix identation
1 parent 64122cf commit e498930

File tree

11 files changed

+33
-10
lines changed

11 files changed

+33
-10
lines changed

src/main/scala/viper/gobra/frontend/info/implementation/typing/ghost/GhostExprTyping.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import viper.gobra.frontend.info.base.Type
1515
import viper.gobra.frontend.info.base.Type._
1616
import viper.gobra.frontend.info.implementation.TypeInfoImpl
1717
import viper.gobra.frontend.info.implementation.typing.BaseTyping
18-
import viper.gobra.util.TypeBounds
1918
import viper.gobra.util.Violation.violation
2019

2120
import scala.annotation.unused

src/main/scala/viper/gobra/translator/encodings/arrays/ArrayEncoding.scala

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@ import viper.gobra.translator.encodings.combinators.TypeEncoding
1717
import viper.gobra.translator.context.Context
1818
import viper.gobra.translator.library.embeddings.EmbeddingParameter
1919
import viper.gobra.translator.util.FunctionGenerator
20+
import viper.gobra.translator.util.ViperUtil.synthesized
2021
import viper.gobra.translator.util.ViperWriter.CodeWriter
2122
import viper.gobra.util.Violation
23+
import viper.silver.plugin.standard.termination
2224
import viper.silver.{ast => vpr}
2325

2426
import scala.annotation.unused
@@ -318,7 +320,10 @@ class ArrayEncoding extends TypeEncoding with SharedArrayEmbedding {
318320
name = s"${Names.arrayConversionFunc}_${t.serialize}",
319321
formalArgs = Vector(variable(ctx)(x)),
320322
typ = vResultType,
321-
pres = Vector(pure(addressFootprint(ctx)(x, in.WildcardPerm(Source.Parser.Internal)))(ctx).res),
323+
pres = Vector(
324+
pure(addressFootprint(ctx)(x, in.WildcardPerm(Source.Parser.Internal)))(ctx).res,
325+
synthesized(termination.DecreasesWildcard(None))("This function is assumed to terminate")
326+
),
322327
posts = Vector(post),
323328
body = None
324329
)()

src/main/scala/viper/gobra/translator/encodings/arrays/SharedArrayComponentImpl.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ import viper.gobra.translator.context.Context
1515
import viper.gobra.translator.library.embeddings.EmbeddingComponent
1616
import viper.gobra.translator.Names
1717
import viper.gobra.translator.util.FunctionGenerator
18+
import viper.gobra.translator.util.ViperUtil.synthesized
1819
import viper.gobra.translator.util.ViperWriter.CodeLevel.pure
20+
import viper.silver.plugin.standard.termination
1921

2022
class SharedArrayComponentImpl extends SharedArrayComponent {
2123

@@ -48,7 +50,7 @@ class SharedArrayComponentImpl extends SharedArrayComponent {
4850
name = s"${Names.arrayNilFunc}_${t.serialize}",
4951
formalArgs = Seq.empty,
5052
typ = vResType,
51-
pres = Seq.empty,
53+
pres = Seq(synthesized(termination.DecreasesWildcard(None))("This function is assumed to terminate")),
5254
posts = Vector(vpr.EqCmp(ctx.array.len(vpr.Result(vResType)())(), vpr.IntLit(1)())(), forall),
5355
body = None
5456
)()

src/main/scala/viper/gobra/translator/encodings/combinators/TypeEncoding.scala

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -443,8 +443,4 @@ trait TypeEncoding extends Generator {
443443
val (pos, info, errT) = src.vprMeta
444444
node(pos, info, errT)(ctx)
445445
}
446-
447-
/** Adds simple (source) information to a node without source information. */
448-
protected def synthesized[T](node: (vpr.Position, vpr.Info, vpr.ErrorTrafo) => T)(comment: String): T =
449-
node(vpr.NoPosition, vpr.SimpleInfo(Seq(comment)), vpr.NoTrafos)
450446
}

src/main/scala/viper/gobra/translator/encodings/defaults/DefaultGlobalVarEncoding.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import org.bitbucket.inkytonik.kiama.==>
1010
import viper.gobra.ast.{internal => in}
1111
import viper.gobra.translator.context.Context
1212
import viper.gobra.translator.encodings.combinators.Encoding
13+
import viper.gobra.translator.util.ViperUtil.synthesized
1314
import viper.gobra.translator.util.ViperWriter.MemberLevel.unit
1415
import viper.gobra.translator.util.ViperWriter.MemberWriter
1516
import viper.silver.{ast => vpr}

src/main/scala/viper/gobra/translator/encodings/sequences/SequenceEncoding.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import viper.gobra.translator.Names
1414
import viper.gobra.translator.encodings.combinators.LeafTypeEncoding
1515
import viper.gobra.translator.context.Context
1616
import viper.gobra.translator.util.FunctionGenerator
17+
import viper.gobra.translator.util.ViperUtil.synthesized
1718
import viper.gobra.translator.util.ViperWriter.CodeWriter
1819
import viper.gobra.util.Violation
1920
import viper.silver.{ast => vpr}

src/main/scala/viper/gobra/translator/encodings/slices/SliceEncoding.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import viper.gobra.translator.encodings.arrays.SharedArrayEmbedding
1717
import viper.gobra.translator.encodings.combinators.LeafTypeEncoding
1818
import viper.gobra.translator.context.Context
1919
import viper.gobra.translator.util.FunctionGenerator
20+
import viper.gobra.translator.util.ViperUtil.synthesized
2021
import viper.gobra.translator.util.ViperWriter.CodeWriter
2122
import viper.gobra.util.Violation
2223
import viper.silver.verifier.{errors => err}

src/main/scala/viper/gobra/translator/encodings/structs/StructEncoding.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import viper.gobra.translator.Names
1414
import viper.gobra.translator.encodings.combinators.TypeEncoding
1515
import viper.gobra.translator.context.Context
1616
import viper.gobra.translator.util.FunctionGenerator
17+
import viper.gobra.translator.util.ViperUtil.synthesized
1718
import viper.gobra.translator.util.ViperWriter.CodeWriter
1819
import viper.gobra.util.Violation
1920
import viper.silver.{ast => vpr}

src/main/scala/viper/gobra/translator/library/embeddings/EmbeddingComponent.scala

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ package viper.gobra.translator.library.embeddings
99
import viper.gobra.translator.Names
1010
import viper.gobra.translator.context.Context
1111
import viper.gobra.translator.library.Generator
12+
import viper.gobra.translator.util.ViperUtil.synthesized
1213
import viper.silver.{ast => vpr}
1314
import viper.silver.plugin.standard.termination
1415

@@ -149,7 +150,4 @@ object EmbeddingComponent {
149150
genUnboxFuncMap += (id -> unbox)
150151
}
151152
}
152-
153-
private def synthesized[T](node: (vpr.Position, vpr.Info, vpr.ErrorTrafo) => T)(comment: String): T =
154-
node(vpr.NoPosition, vpr.SimpleInfo(Seq(comment)), vpr.NoTrafos)
155153
}

src/main/scala/viper/gobra/translator/util/ViperUtil.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,4 +104,8 @@ object ViperUtil {
104104

105105
s.reduceWithContext(Nil, addDecls, combineResults)
106106
}
107+
108+
/** Adds simple (source) information to a node without source information. */
109+
def synthesized[T](node: (Position, Info, ErrorTrafo) => T)(comment: String): T =
110+
node(NoPosition, SimpleInfo(Seq(comment)), NoTrafos)
107111
}

0 commit comments

Comments
 (0)