Skip to content

Commit

Permalink
Fix update
Browse files Browse the repository at this point in the history
  • Loading branch information
JonasAlaif committed Jan 16, 2024
1 parent 0713de1 commit 9f7f099
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 10 deletions.
2 changes: 1 addition & 1 deletion silver
Submodule silver updated 112 files
11 changes: 4 additions & 7 deletions src/main/scala/extensions/TryBlockParserPlugin.scala
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,13 @@ import viper.silver.plugin.{ParserPluginTemplate, SilverPlugin}

class TryBlockParserPlugin(fp: FastParser) extends SilverPlugin with ParserPluginTemplate {
import fastparse._
import viper.silver.parser.FastParserCompanion.whitespace
import fp.{FP, stmtBlock, ParserExtension}
import viper.silver.parser.FastParserCompanion.{PositionParsing, reservedKw, whitespace}
import fp.{ParserExtension, lineCol, _file, stmtBlock}


private val tryKeyword = "try"

def tryBlock[_:P]: P[PTryBlock] =FP("try" ~/ stmtBlock) map { case (pos, s) => PTryBlock(s)(pos) }
def tryBlock[$: P]: P[PTryBlock] = P((P(PTryKeyword) ~ stmtBlock()) map (PTryBlock.apply _).tupled).pos

override def beforeParse(input: String, isImported: Boolean): String = {
ParserExtension.addNewKeywords(Set(tryKeyword))
ParserExtension.addNewKeywords(Set(PTryKeyword.keyword))
ParserExtension.addNewStmtAtEnd(tryBlock(_))

input
Expand Down
11 changes: 9 additions & 2 deletions src/main/scala/extensions/TryBlockStmt.scala
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,16 @@ package viper.silicon.extensions

import viper.silver.ast._
import viper.silver.ast.pretty.PrettyPrintPrimitives
import viper.silver.parser.{NameAnalyser, PExtender, PNode, PStmt, Translator, TypeChecker}
import viper.silver.parser.{NameAnalyser, PExtender, PNode, PStmt, Translator, TypeChecker, PKw, PKeywordStmt, PReserved}
import viper.silver.ast.utility.lsp.BuiltinFeature

final case class PTryBlock(body: PStmt)(val pos: (Position, Position) = (NoPosition, NoPosition)) extends PExtender with PStmt {
/** Keyword used to define `try` statement. */
case object PTryKeyword extends PKw("try", TODOTryDoc) with PKeywordStmt
case object TODOTryDoc extends BuiltinFeature(
"""TODO""".stripMargin.replaceAll("\n", " ")
)

final case class PTryBlock(kw: PReserved[PTryKeyword.type], body: PStmt)(val pos: (Position, Position) = (NoPosition, NoPosition)) extends PExtender with PStmt {
override val getSubnodes: Seq[PNode] = Seq(body)

override def translateStmt(translator: Translator): Stmt = {
Expand Down

0 comments on commit 9f7f099

Please sign in to comment.