Serializable class hierarchy for statements, expressions and types#376
Serializable class hierarchy for statements, expressions and types#376csanadtelbisz wants to merge 52 commits intoftsrg:masterfrom
Conversation
…tion-ai # Conflicts: # subprojects/common/analysis/src/main/java/hu/bme/mit/theta/analysis/algorithm/bounded/BoundedChecker.kt # subprojects/common/core/src/main/java/hu/bme/mit/theta/core/type/bvtype/BvType.java # subprojects/common/core/src/main/java/hu/bme/mit/theta/core/utils/ExprSimplifier.java # subprojects/solver/solver-smtlib/src/main/java/hu/bme/mit/theta/solver/smtlib/impl/generic/GenericSmtLibExprTransformer.java # subprojects/solver/solver-smtlib/src/main/java/hu/bme/mit/theta/solver/smtlib/impl/generic/GenericSmtLibTermTransformer.java # subprojects/solver/solver-z3/src/main/java/hu/bme/mit/theta/solver/z3/Z3TermTransformer.java # subprojects/xcfa/c2xcfa/src/main/java/hu/bme/mit/theta/c2xcfa/FrontendXcfaBuilder.kt
# Conflicts: # build.gradle.kts
# Conflicts: # build.gradle.kts
ff7cb8c to
3adb961
Compare
|
Does the migration of the Stmt and Expr classes from Java to Kotlin lead to API breakage in other branches, especially long-running ones? While this is not a blocker (although @leventeBajczi could probably provide more insight on the Theta API stability policy), it should be something we watch out for (and preferably document) to help us in future merges/rebases. |
The only breaking changes that I am aware of (but they are not really changes in the API, rather consequences of Java-Kotlin conversion):
|
# Conflicts: # build.gradle.kts
|
@csanadtelbisz, can you take a look at the conflicts? |
|
I think this is not a crucial change for sv-comp, and it brings many fundamental changes (mostly refactoring that affects the core of Theta). So I vote for postponing this PR after sv-comp to avoid a hurried merge. |
Making the statements, expressions and types serializable. For this, the relevant classes were converted into Kotlin.
Important changes:
hu.bme.mit.theta.core.type.generated.expr.exprSerializerModule) can be used for serialization. Note that the serialization module has to be extended whenever a new expression/type is declared in a different (gradle project) module. See the core serialization module definition in SerializerModule.kt that can be included in extended module definitions.idattribute is added toDeclfor the sole purpose of serialization. Do not use this id in other contexts.