Skip to content

Fix call stmt reporting #6191

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 78 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
11e5304
Enable deserializing float/double constants
keyboardDrummer Apr 9, 2025
698d382
Support serializing BigDec
keyboardDrummer Apr 9, 2025
49fd3d3
Add test for deserializing BigDec
keyboardDrummer Apr 9, 2025
140e175
Add SyntaxConstructor to InferredTypeProxy
keyboardDrummer Apr 9, 2025
39796c8
Fixes
keyboardDrummer Apr 9, 2025
995317f
Fix whitespace
keyboardDrummer Apr 9, 2025
dbd3644
Add binary support for continue statements
keyboardDrummer Apr 9, 2025
d02f571
Fix expect file
keyboardDrummer Apr 9, 2025
026b774
Fix expect file
keyboardDrummer Apr 9, 2025
08f9846
Introduce labelled statements
keyboardDrummer Apr 9, 2025
248b894
Revert "Introduce labelled statements"
keyboardDrummer Apr 9, 2025
7512ea6
Use a List instead of a LList for labels
keyboardDrummer Apr 9, 2025
1ea5d87
Only specific statements get labels now
keyboardDrummer Apr 9, 2025
9c2c9c8
Merge branch 'master' into deserializeFloatingPoints
keyboardDrummer Apr 9, 2025
1c1f03c
Merge branch 'master' into labelledStatements
keyboardDrummer Apr 9, 2025
95a0172
Do not create inferred type proxies during parsing
keyboardDrummer Apr 10, 2025
0a76916
Fixes
keyboardDrummer Apr 10, 2025
e4d6f09
Ran formatter
keyboardDrummer Apr 10, 2025
1f7d676
Fixes for AllocateArray
keyboardDrummer Apr 10, 2025
ffaff07
Fix
keyboardDrummer Apr 10, 2025
cc8b9f2
Fix parse error
keyboardDrummer Apr 10, 2025
8755ea5
Merge branch 'deserializeFloatingPoints' into labelledStatements
keyboardDrummer Apr 10, 2025
f92e1b5
Fixes
keyboardDrummer Apr 10, 2025
1ddc2b6
Update schema
keyboardDrummer Apr 10, 2025
eb93b23
Fix parser
keyboardDrummer Apr 10, 2025
2898e5b
Merge branch 'deserializeFloatingPoints' into labelledStatements
keyboardDrummer Apr 10, 2025
c3ea188
Fixes
keyboardDrummer Apr 10, 2025
5793a20
Fixes
keyboardDrummer Apr 10, 2025
d72b336
Fix oops
keyboardDrummer Apr 10, 2025
6af129b
handle missing case
keyboardDrummer Apr 10, 2025
c4aa2f0
Merge commit 'f6eb5ab60981' into labelledStatements
keyboardDrummer Apr 11, 2025
1c42104
Undo unintended stdlib changes
keyboardDrummer Apr 11, 2025
5a7e185
Fix printing and recursion
keyboardDrummer Apr 11, 2025
d658e9c
Fix
keyboardDrummer Apr 11, 2025
ce543d6
Fix for break before if
keyboardDrummer Apr 11, 2025
fc143c1
Fix
keyboardDrummer Apr 11, 2025
c066d82
Merge branch 'master' into labelledStatements
keyboardDrummer Apr 11, 2025
8ae8969
Update schema
keyboardDrummer Apr 11, 2025
286795b
Merge branch 'labelledStatements' of github.com:keyboardDrummer/dafny…
keyboardDrummer Apr 11, 2025
86765cc
Enable using unchanged/fresh/old in binary format
keyboardDrummer Apr 11, 2025
fe467ef
Update Source/DafnyCore/Resolver/PreType/PreTypeResolve.Statements.cs
keyboardDrummer Apr 14, 2025
7240ca9
Update Source/DafnyCore/Resolver/NameResolutionAndTypeInference/NameR…
keyboardDrummer Apr 14, 2025
8425b20
Draft
keyboardDrummer Apr 14, 2025
724d041
Fix comment position
keyboardDrummer Apr 14, 2025
6dbe92a
Clarify content
keyboardDrummer Apr 14, 2025
8ef909a
Ran formatter
keyboardDrummer Apr 14, 2025
a7524f5
Fix:
keyboardDrummer Apr 14, 2025
e7d4760
Merge branch 'labelledStatements' into unchangedFreshEtc
keyboardDrummer Apr 14, 2025
012f96f
Fix
keyboardDrummer Apr 14, 2025
04faa1b
Fixes
keyboardDrummer Apr 14, 2025
1e4d8b1
Merge remote-tracking branch 'origin/master' into labelledStatements
keyboardDrummer Apr 14, 2025
296991e
Replace RedundantField with FieldBaseType
keyboardDrummer Apr 14, 2025
7921972
Fix
keyboardDrummer Apr 14, 2025
a21b482
Updates
keyboardDrummer Apr 14, 2025
3027fc5
More usage of SyntaxBaseType
keyboardDrummer Apr 14, 2025
e822ef0
Remove OverrideBaseType field
keyboardDrummer Apr 14, 2025
39d1d15
Fix call stmt reporting
keyboardDrummer Apr 14, 2025
6760573
Fix origin of LabeledStatement
keyboardDrummer Apr 14, 2025
636e752
Regen
keyboardDrummer Apr 14, 2025
68f724c
Merge branch 'labelledStatements' into fixCallStmtReporting
keyboardDrummer Apr 14, 2025
2dae893
Trigger CI
keyboardDrummer Apr 14, 2025
af34de6
Fix schema generation
keyboardDrummer Apr 15, 2025
47d8ecc
Refactoring
keyboardDrummer Apr 15, 2025
ac0c83f
Fix comment
keyboardDrummer Apr 15, 2025
eaf3ab6
Fix generated file
keyboardDrummer Apr 15, 2025
d572a86
Ran formatter
keyboardDrummer Apr 15, 2025
cb58ba0
Partially fix test
keyboardDrummer Apr 15, 2025
8cb9a61
Merge branch 'labelledStatements' into fixCallStmtReporting
keyboardDrummer Apr 15, 2025
273e0a5
Update go
keyboardDrummer Apr 15, 2025
42e049d
Update go
keyboardDrummer Apr 15, 2025
c79e5f6
Remove accidentally added files
keyboardDrummer Apr 15, 2025
a3c8bf5
Update Source/Scripts/SyntaxAstVisitor.cs
keyboardDrummer Apr 15, 2025
f7685c1
Merge branch 'labelledStatements' into fixCallStmtReporting
keyboardDrummer Apr 15, 2025
df58df8
Merge remote-tracking branch 'fork/labelledStatements' into fixCallSt…
keyboardDrummer Apr 15, 2025
0df2b16
Merge remote-tracking branch 'origin/master' into fixCallStmtReporting
keyboardDrummer Apr 15, 2025
8035bc9
Undo a change
keyboardDrummer Apr 15, 2025
d896f7e
RE-breaking test to debug
robin-aws Apr 24, 2025
c1ef6b1
Support overrideToken in resolved CallStmt constructor too
robin-aws Apr 24, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ public override void Resolve(ModuleResolver resolver, ResolutionContext resoluti
foreach (var ll in Lhss) {
resolvedLhss.Add(ll.Resolved);
}
CallStmt a = new CallStmt(Origin, resolvedLhss, methodCallInfo.Callee, methodCallInfo.ActualParameters, methodCallInfo.Tok.Center);
CallStmt a = new CallStmt(Origin, resolvedLhss, methodCallInfo.Callee, methodCallInfo.ActualParameters, methodCallInfo.Tok.ReportingRange);
a.OriginalInitialLhs = OriginalInitialLhs;
ResolvedStatements.Add(a);
}
Expand Down
12 changes: 5 additions & 7 deletions Source/DafnyCore/AST/Statements/Methods/CallStmt.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,9 @@ public override IEnumerable<IdentifierExpr> GetAssignedLocals() {
public Expression Receiver => MethodSelect.Obj;
public MethodOrConstructor Method => (MethodOrConstructor)MethodSelect.Member;

public CallStmt(IOrigin rangeOrigin, List<Expression> lhs, MemberSelectExpr memSel, List<ActualBinding> args, Token overrideToken = null)
: base(
/* it would be better if the correct rangeOrigin was passed in,
then the parameter overrideToken would become obsolete */
new OverrideCenter(rangeOrigin, overrideToken ?? memSel.EndToken.Next)) {
public CallStmt(IOrigin rangeOrigin, List<Expression> lhs, MemberSelectExpr memSel, List<ActualBinding> args,
TokenRange overrideToken = null)
: base(overrideToken == null ? rangeOrigin : new OverrideCenter(rangeOrigin, overrideToken)) {
Contract.Requires(rangeOrigin != null);
Contract.Requires(cce.NonNullElements(lhs));
Contract.Requires(memSel != null);
Expand All @@ -61,8 +59,8 @@ public CallStmt(Cloner cloner, CallStmt original) : base(cloner, original) {
/// This constructor is intended to be used when constructing a resolved CallStmt. The "args" are expected
/// to be already resolved, and are all given positionally.
/// </summary>
public CallStmt(IOrigin rangeOrigin, List<Expression> lhs, MemberSelectExpr memSel, List<Expression> args)
: this(rangeOrigin, lhs, memSel, args.ConvertAll(e => new ActualBinding(null, e))) {
public CallStmt(IOrigin rangeOrigin, List<Expression> lhs, MemberSelectExpr memSel, List<Expression> args, TokenRange overrideToken = null)
: this(rangeOrigin, lhs, memSel, args.ConvertAll(e => new ActualBinding(null, e)), overrideToken) {
Bindings.AcceptArgumentExpressionsAsExactParameterList();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ public override void GenResolve(INewOrOldResolver resolver, ResolutionContext re
if (revealCallee != null) {
var call = new CallStmt(Origin, [],
revealCallee,
[], effectiveExpr.Center);
(List<Expression>)[], effectiveExpr.ReportingRange);
ResolvedStatements.Add(call);
}
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4423,7 +4423,7 @@ public void ResolveTypeRhs(TypeRhs rr2, Statement stmt, ResolutionContext resolu
Contract.Assert(callLhs.ResolvedExpression is MemberSelectExpr); // since ResolveApplySuffix succeeded and call.Lhs denotes an expression (not a module or a type)
var methodSel = (MemberSelectExpr)callLhs.ResolvedExpression;
if (methodSel.Member is MethodOrConstructor) {
allocateClass.InitCall = new CallStmt(stmt.Origin, [], methodSel, allocateClass.Bindings.ArgumentBindings, initCallTok.Center);
allocateClass.InitCall = new CallStmt(stmt.Origin, [], methodSel, allocateClass.Bindings.ArgumentBindings, initCallTok.ReportingRange);
ResolveCallStmt(allocateClass.InitCall, resolutionContext, allocateClass.Type);
} else {
reporter.Error(MessageSource.Resolver, initCallTok, "object initialization must denote an initializing method or constructor ({0})", initCallName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -703,7 +703,7 @@ private void ResolveUpdateStmt(AssignStatement update, ResolutionContext resolut
} else if (ErrorCount == errorCountBeforeCheckingStmt) {
// a call statement
var resolvedLhss = update.Lhss.ConvertAll(ll => ll.Resolved);
var a = new CallStmt(update.Origin, resolvedLhss, methodCallInfo.Callee, methodCallInfo.ActualParameters, methodCallInfo.Tok.Center);
var a = new CallStmt(update.Origin, resolvedLhss, methodCallInfo.Callee, methodCallInfo.ActualParameters, methodCallInfo.Tok.ReportingRange);
a.OriginalInitialLhs = update.OriginalInitialLhs;
update.ResolvedStatements.Add(a);
}
Expand Down Expand Up @@ -1204,7 +1204,7 @@ public void ResolveTypeRhs(TypeRhs rr, Statement stmt, ResolutionContext resolut
Contract.Assert(callLhs.ResolvedExpression is MemberSelectExpr); // since ResolveApplySuffix succeeded and call.Lhs denotes an expression (not a module or a type)
var methodSel = (MemberSelectExpr)callLhs.ResolvedExpression;
if (methodSel.Member is MethodOrConstructor) {
allocateClass.InitCall = new CallStmt(stmt.Origin, [], methodSel, allocateClass.Bindings.ArgumentBindings, initCallTok.Center);
allocateClass.InitCall = new CallStmt(stmt.Origin, [], methodSel, allocateClass.Bindings.ArgumentBindings, initCallTok.ReportingRange);
ResolveCallStmt(allocateClass.InitCall, resolutionContext, allocateClass.Type);
} else {
ReportError(initCallTok, "object initialization must denote an initializing method or constructor ({0})", initCallName);
Expand Down
4 changes: 2 additions & 2 deletions Source/DafnyCore/Rewriters/AutoRevealFunctionDependencies.cs
Original file line number Diff line number Diff line change
Expand Up @@ -332,8 +332,8 @@ public static HideRevealStmt BuildRevealStmt(Function func, IOrigin tok, ModuleD
rr.TypeApplicationJustMember = [];
rr.TypeApplicationAtEnclosingClass = args;

var call = new CallStmt(func.Origin, [], rr, [],
func.Center);
var call = new CallStmt(func.Origin, [], rr, (List<Expression>)[],
func.ReportingRange);
call.IsGhost = true;
call.Bindings.AcceptArgumentExpressionsAsExactParameterList([]);

Expand Down
2 changes: 1 addition & 1 deletion Source/DafnyCore/Rewriters/RunAllTestsMainMethod.cs
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@ internal override void PostResolve(Program program) {
}
}

var callStmt = new CallStmt(tok, lhss, methodSelectExpr, []);
var callStmt = new CallStmt(tok, lhss, methodSelectExpr, (List<Expression>)[]);
tryBodyStatements.Add(callStmt);

Statement passedStmt = Statement.CreatePrintStmt(tok, Expression.CreateStringLiteral(tok, "PASSED\n"));
Expand Down
2 changes: 1 addition & 1 deletion Source/DafnyTestGeneration.Test/Various.cs
Original file line number Diff line number Diff line change
Expand Up @@ -619,7 +619,7 @@ module Math {
public async Task FunctionMethodShortCircuit(List<Action<DafnyOptions>> optionSettings) {
var source = @"
module ShortCircuit {
function {:testEntry} Or(a:bool):bool {
function {:testEntry} Or(a:bool): bool {
a || OnlyFalse(a)
}
function {:testInline} OnlyFalse(a:bool):bool
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,8 @@ public override Statement CloneStmt(Statement stmt, bool isReference) {
memberSelectExpr.TypeApplicationJustMember = funcCallExpr.TypeApplication_JustFunction;
newResolvedStmts.Add(new CallStmt(stmt.Origin,
updateStmt.Lhss.Select(lhs => CloneExpr(lhs.Resolved)).ToList(), memberSelectExpr,
funcCallExpr.Args.ConvertAll(e => CloneExpr(e.Resolved))));
funcCallExpr.Args.ConvertAll(e => CloneExpr(e.Resolved)),
memberSelectExpr.EndToken.Next.ReportingRange));
} else {
newResolvedStmts.Add(resolvedStmt);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ private Statement CloneReturnStmt(ReturnStmt returnStatement) {
}

private Statement CloneCallStmt(CallStmt callStmt) {
return new CallStmt(callStmt.Origin, CloneExpressionList(callStmt.Lhs), callStmt.MethodSelect, CloneExpressionList(callStmt.Args));
return new CallStmt(callStmt.Origin, CloneExpressionList(callStmt.Lhs), callStmt.MethodSelect, CloneExpressionList(callStmt.Args), callStmt.MethodSelect.EndToken.Next.ReportingRange);
}

private Statement CloneNestedMatchStmt(NestedMatchStmt nestedMatchStatement) {
Expand Down
Loading