C#/Ruby: Add fields as per review comments.

This commit is contained in:
Anders Schack-Mulligen
2023-06-13 11:23:14 +02:00
parent 577bbd531d
commit 2d616d494e
8 changed files with 40 additions and 33 deletions

View File

@@ -1125,16 +1125,14 @@ private module ParameterNodes {
/** A parameter for a library callable with a flow summary. */ /** A parameter for a library callable with a flow summary. */
class SummaryParameterNode extends ParameterNodeImpl, FlowSummaryNode { class SummaryParameterNode extends ParameterNodeImpl, FlowSummaryNode {
SummaryParameterNode() { private ParameterPosition pos_;
FlowSummaryImpl::Private::summaryParameterNode(this.getSummaryNode(), _)
}
private ParameterPosition getPosition() { SummaryParameterNode() {
FlowSummaryImpl::Private::summaryParameterNode(this.getSummaryNode(), result) FlowSummaryImpl::Private::summaryParameterNode(this.getSummaryNode(), pos_)
} }
override predicate isParameterOf(DataFlowCallable c, ParameterPosition pos) { override predicate isParameterOf(DataFlowCallable c, ParameterPosition pos) {
this.getSummarizedCallable() = c.asSummarizedCallable() and pos = this.getPosition() this.getSummarizedCallable() = c.asSummarizedCallable() and pos = pos_
} }
} }
} }
@@ -1305,12 +1303,15 @@ private module ArgumentNodes {
} }
private class SummaryArgumentNode extends FlowSummaryNode, ArgumentNodeImpl { private class SummaryArgumentNode extends FlowSummaryNode, ArgumentNodeImpl {
private DataFlowCall call_;
private ArgumentPosition pos_;
SummaryArgumentNode() { SummaryArgumentNode() {
FlowSummaryImpl::Private::summaryArgumentNode(_, this.getSummaryNode(), _) FlowSummaryImpl::Private::summaryArgumentNode(call_, this.getSummaryNode(), pos_)
} }
override predicate argumentOf(DataFlowCall call, ArgumentPosition pos) { override predicate argumentOf(DataFlowCall call, ArgumentPosition pos) {
FlowSummaryImpl::Private::summaryArgumentNode(call, this.getSummaryNode(), pos) call = call_ and pos = pos_
} }
} }
} }
@@ -1593,11 +1594,14 @@ private module OutNodes {
} }
private class SummaryOutNode extends FlowSummaryNode, OutNode { private class SummaryOutNode extends FlowSummaryNode, OutNode {
SummaryOutNode() { FlowSummaryImpl::Private::summaryOutNode(_, this.getSummaryNode(), _) } private DataFlowCall call;
private ReturnKind kind_;
override DataFlowCall getCall(ReturnKind kind) { SummaryOutNode() {
FlowSummaryImpl::Private::summaryOutNode(result, this.getSummaryNode(), kind) FlowSummaryImpl::Private::summaryOutNode(call, this.getSummaryNode(), kind_)
} }
override DataFlowCall getCall(ReturnKind kind) { result = call and kind = kind_ }
} }
} }
@@ -2120,15 +2124,14 @@ private module PostUpdateNodes {
} }
private class SummaryPostUpdateNode extends FlowSummaryNode, PostUpdateNode { private class SummaryPostUpdateNode extends FlowSummaryNode, PostUpdateNode {
private FlowSummaryImpl::Private::SummaryNode preUpdateNode;
SummaryPostUpdateNode() { SummaryPostUpdateNode() {
FlowSummaryImpl::Private::summaryPostUpdateNode(this.getSummaryNode(), _) and FlowSummaryImpl::Private::summaryPostUpdateNode(this.getSummaryNode(), preUpdateNode) and
not summaryPostUpdateNodeIsOutOrRef(this, _) not summaryPostUpdateNodeIsOutOrRef(this, _)
} }
override Node getPreUpdateNode() { override Node getPreUpdateNode() { result.(FlowSummaryNode).getSummaryNode() = preUpdateNode }
FlowSummaryImpl::Private::summaryPostUpdateNode(this.getSummaryNode(),
result.(FlowSummaryNode).getSummaryNode())
}
} }
} }

View File

@@ -570,7 +570,7 @@ module Private {
summaryParameterNodeRange(c, pos) summaryParameterNodeRange(c, pos)
} }
class SummaryNode extends TSummaryNode { abstract class SummaryNode extends TSummaryNode {
abstract string toString(); abstract string toString();
abstract SummarizedCallable getSummarizedCallable(); abstract SummarizedCallable getSummarizedCallable();

View File

@@ -570,7 +570,7 @@ module Private {
summaryParameterNodeRange(c, pos) summaryParameterNodeRange(c, pos)
} }
class SummaryNode extends TSummaryNode { abstract class SummaryNode extends TSummaryNode {
abstract string toString(); abstract string toString();
abstract SummarizedCallable getSummarizedCallable(); abstract SummarizedCallable getSummarizedCallable();

View File

@@ -570,7 +570,7 @@ module Private {
summaryParameterNodeRange(c, pos) summaryParameterNodeRange(c, pos)
} }
class SummaryNode extends TSummaryNode { abstract class SummaryNode extends TSummaryNode {
abstract string toString(); abstract string toString();
abstract SummarizedCallable getSummarizedCallable(); abstract SummarizedCallable getSummarizedCallable();

View File

@@ -570,7 +570,7 @@ module Private {
summaryParameterNodeRange(c, pos) summaryParameterNodeRange(c, pos)
} }
class SummaryNode extends TSummaryNode { abstract class SummaryNode extends TSummaryNode {
abstract string toString(); abstract string toString();
abstract SummarizedCallable getSummarizedCallable(); abstract SummarizedCallable getSummarizedCallable();

View File

@@ -751,18 +751,16 @@ private module ParameterNodes {
/** A parameter for a library callable with a flow summary. */ /** A parameter for a library callable with a flow summary. */
class SummaryParameterNode extends ParameterNodeImpl, FlowSummaryNode { class SummaryParameterNode extends ParameterNodeImpl, FlowSummaryNode {
SummaryParameterNode() { private ParameterPosition pos_;
FlowSummaryImpl::Private::summaryParameterNode(this.getSummaryNode(), _)
}
private ParameterPosition getPosition() { SummaryParameterNode() {
FlowSummaryImpl::Private::summaryParameterNode(this.getSummaryNode(), result) FlowSummaryImpl::Private::summaryParameterNode(this.getSummaryNode(), pos_)
} }
override Parameter getParameter() { none() } override Parameter getParameter() { none() }
override predicate isParameterOf(DataFlowCallable c, ParameterPosition pos) { override predicate isParameterOf(DataFlowCallable c, ParameterPosition pos) {
this.getSummarizedCallable() = c.asLibraryCallable() and pos = this.getPosition() this.getSummarizedCallable() = c.asLibraryCallable() and pos = pos_
} }
} }
} }
@@ -847,8 +845,11 @@ private module ArgumentNodes {
} }
private class SummaryArgumentNode extends FlowSummaryNode, ArgumentNode { private class SummaryArgumentNode extends FlowSummaryNode, ArgumentNode {
private DataFlowCall call_;
private ArgumentPosition pos_;
SummaryArgumentNode() { SummaryArgumentNode() {
FlowSummaryImpl::Private::summaryArgumentNode(_, this.getSummaryNode(), _) FlowSummaryImpl::Private::summaryArgumentNode(call_, this.getSummaryNode(), pos_)
} }
override predicate sourceArgumentOf(CfgNodes::ExprNodes::CallCfgNode call, ArgumentPosition pos) { override predicate sourceArgumentOf(CfgNodes::ExprNodes::CallCfgNode call, ArgumentPosition pos) {
@@ -856,7 +857,7 @@ private module ArgumentNodes {
} }
override predicate argumentOf(DataFlowCall call, ArgumentPosition pos) { override predicate argumentOf(DataFlowCall call, ArgumentPosition pos) {
FlowSummaryImpl::Private::summaryArgumentNode(call, this.getSummaryNode(), pos) call = call_ and pos = pos_
} }
} }
@@ -1063,11 +1064,14 @@ private module OutNodes {
} }
private class SummaryOutNode extends FlowSummaryNode, OutNode { private class SummaryOutNode extends FlowSummaryNode, OutNode {
SummaryOutNode() { FlowSummaryImpl::Private::summaryOutNode(_, this.getSummaryNode(), _) } private DataFlowCall call;
private ReturnKind kind_;
override DataFlowCall getCall(ReturnKind kind) { SummaryOutNode() {
FlowSummaryImpl::Private::summaryOutNode(result, this.getSummaryNode(), kind) FlowSummaryImpl::Private::summaryOutNode(call, this.getSummaryNode(), kind_)
} }
override DataFlowCall getCall(ReturnKind kind) { result = call and kind = kind_ }
} }
} }

View File

@@ -570,7 +570,7 @@ module Private {
summaryParameterNodeRange(c, pos) summaryParameterNodeRange(c, pos)
} }
class SummaryNode extends TSummaryNode { abstract class SummaryNode extends TSummaryNode {
abstract string toString(); abstract string toString();
abstract SummarizedCallable getSummarizedCallable(); abstract SummarizedCallable getSummarizedCallable();

View File

@@ -570,7 +570,7 @@ module Private {
summaryParameterNodeRange(c, pos) summaryParameterNodeRange(c, pos)
} }
class SummaryNode extends TSummaryNode { abstract class SummaryNode extends TSummaryNode {
abstract string toString(); abstract string toString();
abstract SummarizedCallable getSummarizedCallable(); abstract SummarizedCallable getSummarizedCallable();