From 8ff8bb93962baddf61dca01308e345ecb4aa07ed Mon Sep 17 00:00:00 2001 From: Niko Schmidt Date: Tue, 2 Jun 2026 12:49:41 +0200 Subject: [PATCH 1/2] Bumping flatgraph --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index e9805771b..293880a71 100644 --- a/build.sbt +++ b/build.sbt @@ -1,7 +1,7 @@ name := "codepropertygraph" // parsed by project/Versions.scala, updated by updateDependencies.sh -val flatgraphVersion = "0.1.31" +val flatgraphVersion = "0.1.32" inThisBuild( List( From 750ef2d377c7547491ccc24a9f1b188c0ac98704 Mon Sep 17 00:00:00 2001 From: Michael Pollmeier Date: Tue, 2 Jun 2026 13:07:24 +0200 Subject: [PATCH 2/2] generate domain classes --- .../traversals/TraversalAstnodeBase.scala | 53 +++++++++++++++++++ .../traversals/TraversalExpressionBase.scala | 5 ++ .../traversals/TraversalJumptargetBase.scala | 5 ++ .../traversals/TraversalMethodBase.scala | 26 +++++++++ .../TraversalMethodparameterinBase.scala | 5 ++ .../TraversalMethodparameteroutBase.scala | 5 ++ .../TraversalPropertyArgumentIndex.scala | 5 ++ .../TraversalPropertyColumnNumber.scala | 13 +++++ .../TraversalPropertyColumnNumberEnd.scala | 13 +++++ .../traversals/TraversalPropertyIndex.scala | 5 ++ .../TraversalPropertyLineNumber.scala | 13 +++++ .../TraversalPropertyLineNumberEnd.scala | 13 +++++ .../traversals/TraversalPropertyOffset.scala | 11 ++++ .../TraversalPropertyOffsetEnd.scala | 11 ++++ .../traversals/TraversalPropertyOrder.scala | 5 ++ 15 files changed, 188 insertions(+) diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalAstnodeBase.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalAstnodeBase.scala index 9b0e1200e..649c4ae60 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalAstnodeBase.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalAstnodeBase.scala @@ -84,6 +84,19 @@ final class TraversalAstnodeBase[NodeType <: nodes.AstNodeBase](val traversal: I val tmp = node.columnNumber; tmp.isDefined && tmp.get == value } + /** Traverse to nodes where the columnNumber equals the given `value`. If `value` is None, only nodes where + * columnNumber is not set are included. + */ + def columnNumber(value: Option[Int]): Iterator[NodeType] = + value match { + case Some(_val) => columnNumber(_val); case None => traversal.filter { node => node.columnNumber.isEmpty } + } + + /** Traverse to nodes where the columnNumber equals the given `value`, or no results if `value` is None. + */ + def columnNumberIfPresent(value: Option[Int]): Iterator[NodeType] = + value match { case Some(_val) => columnNumber(_val); case None => Iterator.empty } + /** Traverse to nodes where the columnNumber equals at least one of the given `values` */ def columnNumber(values: Int*): Iterator[NodeType] = { @@ -148,6 +161,19 @@ final class TraversalAstnodeBase[NodeType <: nodes.AstNodeBase](val traversal: I val tmp = node.lineNumber; tmp.isDefined && tmp.get == value } + /** Traverse to nodes where the lineNumber equals the given `value`. If `value` is None, only nodes where lineNumber + * is not set are included. + */ + def lineNumber(value: Option[Int]): Iterator[NodeType] = + value match { + case Some(_val) => lineNumber(_val); case None => traversal.filter { node => node.lineNumber.isEmpty } + } + + /** Traverse to nodes where the lineNumber equals the given `value`, or no results if `value` is None. + */ + def lineNumberIfPresent(value: Option[Int]): Iterator[NodeType] = + value match { case Some(_val) => lineNumber(_val); case None => Iterator.empty } + /** Traverse to nodes where the lineNumber equals at least one of the given `values` */ def lineNumber(values: Int*): Iterator[NodeType] = { @@ -212,6 +238,17 @@ final class TraversalAstnodeBase[NodeType <: nodes.AstNodeBase](val traversal: I val tmp = node.offset; tmp.isDefined && tmp.get == value } + /** Traverse to nodes where the offset equals the given `value`. If `value` is None, only nodes where offset is not + * set are included. + */ + def offset(value: Option[Int]): Iterator[NodeType] = + value match { case Some(_val) => offset(_val); case None => traversal.filter { node => node.offset.isEmpty } } + + /** Traverse to nodes where the offset equals the given `value`, or no results if `value` is None. + */ + def offsetIfPresent(value: Option[Int]): Iterator[NodeType] = + value match { case Some(_val) => offset(_val); case None => Iterator.empty } + /** Traverse to nodes where the offset equals at least one of the given `values` */ def offset(values: Int*): Iterator[NodeType] = { @@ -276,6 +313,17 @@ final class TraversalAstnodeBase[NodeType <: nodes.AstNodeBase](val traversal: I val tmp = node.offsetEnd; tmp.isDefined && tmp.get == value } + /** Traverse to nodes where the offsetEnd equals the given `value`. If `value` is None, only nodes where offsetEnd is + * not set are included. + */ + def offsetEnd(value: Option[Int]): Iterator[NodeType] = + value match { case Some(_val) => offsetEnd(_val); case None => traversal.filter { node => node.offsetEnd.isEmpty } } + + /** Traverse to nodes where the offsetEnd equals the given `value`, or no results if `value` is None. + */ + def offsetEndIfPresent(value: Option[Int]): Iterator[NodeType] = + value match { case Some(_val) => offsetEnd(_val); case None => Iterator.empty } + /** Traverse to nodes where the offsetEnd equals at least one of the given `values` */ def offsetEnd(values: Int*): Iterator[NodeType] = { @@ -338,6 +386,11 @@ final class TraversalAstnodeBase[NodeType <: nodes.AstNodeBase](val traversal: I def order(value: Int): Iterator[NodeType] = traversal.filter { _.order == value } + /** Traverse to nodes where the order equals the given `value`, or no results if `value` is None + */ + def order(value: Option[Int]): Iterator[NodeType] = + value match { case Some(_val) => order(_val); case None => Iterator.empty } + /** Traverse to nodes where the order equals at least one of the given `values` */ def order(values: Int*): Iterator[NodeType] = { diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalExpressionBase.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalExpressionBase.scala index a273d810d..f08a66d9f 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalExpressionBase.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalExpressionBase.scala @@ -15,6 +15,11 @@ final class TraversalExpressionBase[NodeType <: nodes.ExpressionBase](val traver def argumentIndex(value: Int): Iterator[NodeType] = traversal.filter { _.argumentIndex == value } + /** Traverse to nodes where the argumentIndex equals the given `value`, or no results if `value` is None + */ + def argumentIndex(value: Option[Int]): Iterator[NodeType] = + value match { case Some(_val) => argumentIndex(_val); case None => Iterator.empty } + /** Traverse to nodes where the argumentIndex equals at least one of the given `values` */ def argumentIndex(values: Int*): Iterator[NodeType] = { diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalJumptargetBase.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalJumptargetBase.scala index a95d2cb8f..2f3da05e2 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalJumptargetBase.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalJumptargetBase.scala @@ -15,6 +15,11 @@ final class TraversalJumptargetBase[NodeType <: nodes.JumpTargetBase](val traver def argumentIndex(value: Int): Iterator[NodeType] = traversal.filter { _.argumentIndex == value } + /** Traverse to nodes where the argumentIndex equals the given `value`, or no results if `value` is None + */ + def argumentIndex(value: Option[Int]): Iterator[NodeType] = + value match { case Some(_val) => argumentIndex(_val); case None => Iterator.empty } + /** Traverse to nodes where the argumentIndex equals at least one of the given `values` */ def argumentIndex(values: Int*): Iterator[NodeType] = { diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalMethodBase.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalMethodBase.scala index 695decf2b..562c5aa48 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalMethodBase.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalMethodBase.scala @@ -152,6 +152,19 @@ final class TraversalMethodBase[NodeType <: nodes.MethodBase](val traversal: Ite val tmp = node.columnNumberEnd; tmp.isDefined && tmp.get == value } + /** Traverse to nodes where the columnNumberEnd equals the given `value`. If `value` is None, only nodes where + * columnNumberEnd is not set are included. + */ + def columnNumberEnd(value: Option[Int]): Iterator[NodeType] = + value match { + case Some(_val) => columnNumberEnd(_val); case None => traversal.filter { node => node.columnNumberEnd.isEmpty } + } + + /** Traverse to nodes where the columnNumberEnd equals the given `value`, or no results if `value` is None. + */ + def columnNumberEndIfPresent(value: Option[Int]): Iterator[NodeType] = + value match { case Some(_val) => columnNumberEnd(_val); case None => Iterator.empty } + /** Traverse to nodes where the columnNumberEnd equals at least one of the given `values` */ def columnNumberEnd(values: Int*): Iterator[NodeType] = { @@ -502,6 +515,19 @@ final class TraversalMethodBase[NodeType <: nodes.MethodBase](val traversal: Ite val tmp = node.lineNumberEnd; tmp.isDefined && tmp.get == value } + /** Traverse to nodes where the lineNumberEnd equals the given `value`. If `value` is None, only nodes where + * lineNumberEnd is not set are included. + */ + def lineNumberEnd(value: Option[Int]): Iterator[NodeType] = + value match { + case Some(_val) => lineNumberEnd(_val); case None => traversal.filter { node => node.lineNumberEnd.isEmpty } + } + + /** Traverse to nodes where the lineNumberEnd equals the given `value`, or no results if `value` is None. + */ + def lineNumberEndIfPresent(value: Option[Int]): Iterator[NodeType] = + value match { case Some(_val) => lineNumberEnd(_val); case None => Iterator.empty } + /** Traverse to nodes where the lineNumberEnd equals at least one of the given `values` */ def lineNumberEnd(values: Int*): Iterator[NodeType] = { diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalMethodparameterinBase.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalMethodparameterinBase.scala index 27deac755..eb23e6491 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalMethodparameterinBase.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalMethodparameterinBase.scala @@ -160,6 +160,11 @@ final class TraversalMethodparameterinBase[NodeType <: nodes.MethodParameterInBa def index(value: Int): Iterator[NodeType] = traversal.filter { _.index == value } + /** Traverse to nodes where the index equals the given `value`, or no results if `value` is None + */ + def index(value: Option[Int]): Iterator[NodeType] = + value match { case Some(_val) => index(_val); case None => Iterator.empty } + /** Traverse to nodes where the index equals at least one of the given `values` */ def index(values: Int*): Iterator[NodeType] = { diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalMethodparameteroutBase.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalMethodparameteroutBase.scala index 94ed8f7c7..baf6c48cd 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalMethodparameteroutBase.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalMethodparameteroutBase.scala @@ -83,6 +83,11 @@ final class TraversalMethodparameteroutBase[NodeType <: nodes.MethodParameterOut def index(value: Int): Iterator[NodeType] = traversal.filter { _.index == value } + /** Traverse to nodes where the index equals the given `value`, or no results if `value` is None + */ + def index(value: Option[Int]): Iterator[NodeType] = + value match { case Some(_val) => index(_val); case None => Iterator.empty } + /** Traverse to nodes where the index equals at least one of the given `values` */ def index(values: Int*): Iterator[NodeType] = { diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyArgumentIndex.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyArgumentIndex.scala index ad03b6999..9e26684f8 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyArgumentIndex.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyArgumentIndex.scala @@ -16,6 +16,11 @@ final class TraversalPropertyArgumentIndex[NodeType <: nodes.StoredNode & nodes. def argumentIndex(value: Int): Iterator[NodeType] = traversal.filter { _.argumentIndex == value } + /** Traverse to nodes where the argumentIndex equals the given `value`, or no results if `value` is None + */ + def argumentIndex(value: Option[Int]): Iterator[NodeType] = + value match { case Some(_val) => argumentIndex(_val); case None => Iterator.empty } + /** Traverse to nodes where the argumentIndex equals at least one of the given `values` */ def argumentIndex(values: Int*): Iterator[NodeType] = { diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyColumnNumber.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyColumnNumber.scala index 1515469ee..56e839f56 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyColumnNumber.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyColumnNumber.scala @@ -18,6 +18,19 @@ final class TraversalPropertyColumnNumber[NodeType <: nodes.StoredNode & nodes.S val tmp = node.columnNumber; tmp.isDefined && tmp.get == value } + /** Traverse to nodes where the columnNumber equals the given `value`. If `value` is None, only nodes where + * columnNumber is not set are included. + */ + def columnNumber(value: Option[Int]): Iterator[NodeType] = + value match { + case Some(_val) => columnNumber(_val); case None => traversal.filter { node => node.columnNumber.isEmpty } + } + + /** Traverse to nodes where the columnNumber equals the given `value`, or no results if `value` is None. + */ + def columnNumberIfPresent(value: Option[Int]): Iterator[NodeType] = + value match { case Some(_val) => columnNumber(_val); case None => Iterator.empty } + /** Traverse to nodes where the columnNumber equals at least one of the given `values` */ def columnNumber(values: Int*): Iterator[NodeType] = { diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyColumnNumberEnd.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyColumnNumberEnd.scala index 0b85562b9..0657ee5bc 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyColumnNumberEnd.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyColumnNumberEnd.scala @@ -19,6 +19,19 @@ final class TraversalPropertyColumnNumberEnd[ val tmp = node.columnNumberEnd; tmp.isDefined && tmp.get == value } + /** Traverse to nodes where the columnNumberEnd equals the given `value`. If `value` is None, only nodes where + * columnNumberEnd is not set are included. + */ + def columnNumberEnd(value: Option[Int]): Iterator[NodeType] = + value match { + case Some(_val) => columnNumberEnd(_val); case None => traversal.filter { node => node.columnNumberEnd.isEmpty } + } + + /** Traverse to nodes where the columnNumberEnd equals the given `value`, or no results if `value` is None. + */ + def columnNumberEndIfPresent(value: Option[Int]): Iterator[NodeType] = + value match { case Some(_val) => columnNumberEnd(_val); case None => Iterator.empty } + /** Traverse to nodes where the columnNumberEnd equals at least one of the given `values` */ def columnNumberEnd(values: Int*): Iterator[NodeType] = { diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyIndex.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyIndex.scala index bd910af0a..18a4d16c1 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyIndex.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyIndex.scala @@ -16,6 +16,11 @@ final class TraversalPropertyIndex[NodeType <: nodes.StoredNode & nodes.StaticTy def index(value: Int): Iterator[NodeType] = traversal.filter { _.index == value } + /** Traverse to nodes where the index equals the given `value`, or no results if `value` is None + */ + def index(value: Option[Int]): Iterator[NodeType] = + value match { case Some(_val) => index(_val); case None => Iterator.empty } + /** Traverse to nodes where the index equals at least one of the given `values` */ def index(values: Int*): Iterator[NodeType] = { diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyLineNumber.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyLineNumber.scala index 8278e70cf..35ddc7039 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyLineNumber.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyLineNumber.scala @@ -18,6 +18,19 @@ final class TraversalPropertyLineNumber[NodeType <: nodes.StoredNode & nodes.Sta val tmp = node.lineNumber; tmp.isDefined && tmp.get == value } + /** Traverse to nodes where the lineNumber equals the given `value`. If `value` is None, only nodes where lineNumber + * is not set are included. + */ + def lineNumber(value: Option[Int]): Iterator[NodeType] = + value match { + case Some(_val) => lineNumber(_val); case None => traversal.filter { node => node.lineNumber.isEmpty } + } + + /** Traverse to nodes where the lineNumber equals the given `value`, or no results if `value` is None. + */ + def lineNumberIfPresent(value: Option[Int]): Iterator[NodeType] = + value match { case Some(_val) => lineNumber(_val); case None => Iterator.empty } + /** Traverse to nodes where the lineNumber equals at least one of the given `values` */ def lineNumber(values: Int*): Iterator[NodeType] = { diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyLineNumberEnd.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyLineNumberEnd.scala index 5fc5533b6..2b75d18e6 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyLineNumberEnd.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyLineNumberEnd.scala @@ -18,6 +18,19 @@ final class TraversalPropertyLineNumberEnd[NodeType <: nodes.StoredNode & nodes. val tmp = node.lineNumberEnd; tmp.isDefined && tmp.get == value } + /** Traverse to nodes where the lineNumberEnd equals the given `value`. If `value` is None, only nodes where + * lineNumberEnd is not set are included. + */ + def lineNumberEnd(value: Option[Int]): Iterator[NodeType] = + value match { + case Some(_val) => lineNumberEnd(_val); case None => traversal.filter { node => node.lineNumberEnd.isEmpty } + } + + /** Traverse to nodes where the lineNumberEnd equals the given `value`, or no results if `value` is None. + */ + def lineNumberEndIfPresent(value: Option[Int]): Iterator[NodeType] = + value match { case Some(_val) => lineNumberEnd(_val); case None => Iterator.empty } + /** Traverse to nodes where the lineNumberEnd equals at least one of the given `values` */ def lineNumberEnd(values: Int*): Iterator[NodeType] = { diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyOffset.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyOffset.scala index 2f6097027..a8a30d5c7 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyOffset.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyOffset.scala @@ -18,6 +18,17 @@ final class TraversalPropertyOffset[NodeType <: nodes.StoredNode & nodes.StaticT val tmp = node.offset; tmp.isDefined && tmp.get == value } + /** Traverse to nodes where the offset equals the given `value`. If `value` is None, only nodes where offset is not + * set are included. + */ + def offset(value: Option[Int]): Iterator[NodeType] = + value match { case Some(_val) => offset(_val); case None => traversal.filter { node => node.offset.isEmpty } } + + /** Traverse to nodes where the offset equals the given `value`, or no results if `value` is None. + */ + def offsetIfPresent(value: Option[Int]): Iterator[NodeType] = + value match { case Some(_val) => offset(_val); case None => Iterator.empty } + /** Traverse to nodes where the offset equals at least one of the given `values` */ def offset(values: Int*): Iterator[NodeType] = { diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyOffsetEnd.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyOffsetEnd.scala index 57291c7d1..ef51197b3 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyOffsetEnd.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyOffsetEnd.scala @@ -18,6 +18,17 @@ final class TraversalPropertyOffsetEnd[NodeType <: nodes.StoredNode & nodes.Stat val tmp = node.offsetEnd; tmp.isDefined && tmp.get == value } + /** Traverse to nodes where the offsetEnd equals the given `value`. If `value` is None, only nodes where offsetEnd is + * not set are included. + */ + def offsetEnd(value: Option[Int]): Iterator[NodeType] = + value match { case Some(_val) => offsetEnd(_val); case None => traversal.filter { node => node.offsetEnd.isEmpty } } + + /** Traverse to nodes where the offsetEnd equals the given `value`, or no results if `value` is None. + */ + def offsetEndIfPresent(value: Option[Int]): Iterator[NodeType] = + value match { case Some(_val) => offsetEnd(_val); case None => Iterator.empty } + /** Traverse to nodes where the offsetEnd equals at least one of the given `values` */ def offsetEnd(values: Int*): Iterator[NodeType] = { diff --git a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyOrder.scala b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyOrder.scala index e0305796f..6a8737f83 100644 --- a/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyOrder.scala +++ b/domainClasses/src/main/generated/io/shiftleft/codepropertygraph/generated/traversals/TraversalPropertyOrder.scala @@ -16,6 +16,11 @@ final class TraversalPropertyOrder[NodeType <: nodes.StoredNode & nodes.StaticTy def order(value: Int): Iterator[NodeType] = traversal.filter { _.order == value } + /** Traverse to nodes where the order equals the given `value`, or no results if `value` is None + */ + def order(value: Option[Int]): Iterator[NodeType] = + value match { case Some(_val) => order(_val); case None => Iterator.empty } + /** Traverse to nodes where the order equals at least one of the given `values` */ def order(values: Int*): Iterator[NodeType] = {