Skip to content

Commit 4a793da

Browse files
Merge remote-tracking branch 'origin/master' into improveErrorLocations
2 parents 49da7cf + 4ecc4bf commit 4a793da

File tree

381 files changed

+6694
-6049
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

381 files changed

+6694
-6049
lines changed

Source/DafnyBenchmarkingPlugin/JavaBenchmarkCompilationInstrumenter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public override void BeforeMethod(Method m, ConcreteSyntaxTree wr) {
2121
if (Attributes.Contains(m.EnclosingClass.Attributes, "benchmarks")) {
2222
if (m is Constructor) {
2323
if (m.Ins.Any()) {
24-
Reporter.Error(MessageSource.Compiler, ResolutionErrors.ErrorId.none, m.Tok,
24+
Reporter.Error(MessageSource.Compiler, ResolutionErrors.ErrorId.none, m.Origin,
2525
$"Classes with {{:benchmarks}} can not accept parameters in their constructors");
2626
}
2727

@@ -34,7 +34,7 @@ public override void BeforeMethod(Method m, ConcreteSyntaxTree wr) {
3434
wr.WriteLine("@org.openjdk.jmh.annotations.Setup(org.openjdk.jmh.annotations.Level.Iteration)");
3535
} else if (Attributes.Contains(m.Attributes, "benchmarkTearDown")) {
3636
if (m.Ins.Any()) {
37-
Reporter.Error(MessageSource.Compiler, ResolutionErrors.ErrorId.none, m.Tok,
37+
Reporter.Error(MessageSource.Compiler, ResolutionErrors.ErrorId.none, m.Origin,
3838
$"Methods with {{:benchmarkTearDown}} can not accept parameters");
3939
}
4040
wr.WriteLine("@org.openjdk.jmh.annotations.TearDown(org.openjdk.jmh.annotations.Level.Iteration)");

Source/DafnyCore.Test/ClonerTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class DummyDecl : Declaration {
1111
public DummyDecl(Cloner cloner, Declaration original) : base(cloner, original) {
1212
}
1313

14-
public DummyDecl(IOrigin rangeOrigin, Name name, Attributes attributes, bool isRefining) : base(rangeOrigin, name,
14+
public DummyDecl(IOrigin origin, Name name, Attributes attributes, bool isRefining) : base(origin, name,
1515
attributes, isRefining) {
1616
}
1717

Source/DafnyCore.Test/NodeTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ namespace DafnyCore.Test;
66
public class NodeTests {
77

88
class ConcreteNode : Node {
9-
public ConcreteNode(IOrigin rangeOrigin, IEnumerable<INode>? children = null) {
10-
Origin = rangeOrigin;
9+
public ConcreteNode(IOrigin origin, IEnumerable<INode>? children = null) {
10+
Origin = origin;
1111
Children = children ?? Enumerable.Empty<INode>();
1212
}
1313

14-
public override IOrigin Origin { get; set; }
14+
public override IOrigin Origin { get; }
1515
public override IEnumerable<INode> Children { get; }
1616
public override IEnumerable<INode> PreResolveChildren => Children;
1717
}

Source/DafnyCore/AST/Attributes.cs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public BuiltInAtAttributeSyntax Filter(Func<IAttributeBearingDeclaration, bool>
4545
}
4646
}
4747

48-
public class Attributes : TokenNode, ICanFormat {
48+
public class Attributes : NodeWithComputedRange, ICanFormat {
4949
[ContractInvariantMethod]
5050
void ObjectInvariant() {
5151
Contract.Invariant(Name != null);
@@ -64,7 +64,7 @@ void ObjectInvariant() {
6464
public readonly List<Expression> Args;
6565

6666
public readonly Attributes Prev;
67-
public Attributes(string name, [Captured] List<Expression> args, Attributes prev) {
67+
public Attributes(string name, [Captured] List<Expression> args, Attributes prev) : base(Token.NoToken) {
6868
Contract.Requires(name != null);
6969
Contract.Requires(cce.NonNullElements(args));
7070
Contract.Requires(name != UserSuppliedAtAttribute.AtName || this is UserSuppliedAtAttribute);
@@ -612,7 +612,7 @@ private static void ResolveLikeDatatypeConstructor(Program program, Formal[] for
612612
UserSuppliedAtAttribute attrs, ActualBindings bindings, ModuleResolver resolver) {
613613
var resolutionContext = new ResolutionContext(new NoContext(program.DefaultModuleDef), false); ;
614614
var typeMap = new Dictionary<TypeParameter, Type>();
615-
resolver.ResolveActualParameters(bindings, formals.ToList(), attrs.Tok,
615+
resolver.ResolveActualParameters(bindings, formals.ToList(), attrs.Origin,
616616
attrs, resolutionContext, typeMap, null);
617617
resolver.FillInDefaultValueExpressions();
618618
resolver.SolveAllTypeConstraints();
@@ -689,13 +689,13 @@ public class UserSuppliedAttributes : Attributes {
689689
public readonly IOrigin OpenBrace;
690690
public readonly IOrigin CloseBrace;
691691
public bool Recognized; // set to true to indicate an attribute that is processed by some part of Dafny; this allows it to be colored in the IDE
692-
public UserSuppliedAttributes(IOrigin tok, IOrigin openBrace, IOrigin closeBrace, List<Expression> args, Attributes prev)
693-
: base(tok.val, args, prev) {
694-
Contract.Requires(tok != null);
692+
public UserSuppliedAttributes(IOrigin origin, IOrigin openBrace, IOrigin closeBrace, List<Expression> args, Attributes prev)
693+
: base(origin.val, args, prev) {
694+
Contract.Requires(origin != null);
695695
Contract.Requires(openBrace != null);
696696
Contract.Requires(closeBrace != null);
697697
Contract.Requires(args != null);
698-
this.tok = tok;
698+
SetOrigin(origin);
699699
OpenBrace = openBrace;
700700
CloseBrace = closeBrace;
701701
}
@@ -707,11 +707,11 @@ public class UserSuppliedAtAttribute : Attributes {
707707
public readonly IOrigin AtSign;
708708
public bool Builtin; // set to true to indicate it was recognized as a builtin attribute
709709
// Otherwise it's a user-defined one and Arg needs to be fully resolved
710-
public UserSuppliedAtAttribute(IOrigin tok, Expression arg, Attributes prev)
710+
public UserSuppliedAtAttribute(IOrigin origin, Expression arg, Attributes prev)
711711
: base(AtName, new List<Expression>() { arg }, prev) {
712-
Contract.Requires(tok != null);
713-
this.tok = tok;
714-
this.AtSign = tok;
712+
Contract.Requires(origin != null);
713+
SetOrigin(origin);
714+
this.AtSign = origin;
715715
}
716716

717717
public Expression Arg => Args[0];

Source/DafnyCore/AST/Cloner.cs

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ public virtual Type CloneType(Type t) {
237237
return new MapType(this, mapType);
238238
} else if (t is ArrowType) {
239239
var tt = (ArrowType)t;
240-
return new ArrowType(Origin(tt.Tok), tt.Args.ConvertAll(CloneType), CloneType(tt.Result));
240+
return new ArrowType(Origin(tt.Origin), tt.Args.ConvertAll(CloneType), CloneType(tt.Result));
241241
} else if (t is UserDefinedType) {
242242
var tt = (UserDefinedType)t;
243243
#if TEST_TYPE_SYNONYM_TRANSPARENCY
@@ -269,7 +269,7 @@ public virtual Type CloneType(Type t) {
269269
public virtual Formal CloneFormal(Formal formal, bool isReference) {
270270
return (Formal)clones.GetOrCreate(formal, () => isReference
271271
? formal
272-
: new Formal(Origin(formal.Tok), new Name(this, formal.NameNode), CloneType(formal.Type), formal.InParam, formal.IsGhost,
272+
: new Formal(Origin(formal.Origin), new Name(this, formal.NameNode), CloneType(formal.Type), formal.InParam, formal.IsGhost,
273273
CloneExpr(formal.DefaultValue), CloneAttributes(formal.Attributes),
274274
formal.IsOld, formal.IsNameOnly, formal.IsOlder, formal.NameForCompilation) {
275275
IsTypeExplicit = formal.IsTypeExplicit
@@ -282,7 +282,7 @@ public virtual BoundVar CloneBoundVar(BoundVar bv, bool isReference) {
282282
return bv;
283283
}
284284

285-
var bvNew = new BoundVar(Origin(bv.Tok), new Name(this, bv.NameNode), CloneType(bv.SyntacticType));
285+
var bvNew = new BoundVar(Origin(bv.Origin), new Name(this, bv.NameNode), CloneType(bv.SyntacticType));
286286
bvNew.IsGhost = bv.IsGhost;
287287
return bvNew;
288288
});
@@ -334,21 +334,21 @@ public Attributes CloneAttributes(Attributes attrs) {
334334
// skip this attribute, since it would have been produced during resolution
335335
return CloneAttributes(attrs.Prev);
336336
} else if (attrs is UserSuppliedAttributes usa) {
337-
return new UserSuppliedAttributes(Origin(usa.Tok), Origin(usa.OpenBrace), Origin(usa.CloseBrace),
337+
return new UserSuppliedAttributes(Origin(usa.Origin), Origin(usa.OpenBrace), Origin(usa.CloseBrace),
338338
attrs.Args.ConvertAll(CloneExpr), CloneAttributes(attrs.Prev));
339339
} else if (attrs is UserSuppliedAtAttribute usaa) {
340340
var arg = CloneExpr(usaa.Arg);
341341
if (usaa.Arg.Type != null) { // The attribute has already been expanded
342342
arg.Type = usaa.Arg.Type;
343343
arg.PreType = usaa.Arg.PreType;
344344
}
345-
return new UserSuppliedAtAttribute(Origin(usaa.Tok), arg, CloneAttributes(usaa.Prev)) {
345+
return new UserSuppliedAtAttribute(Origin(usaa.Origin), arg, CloneAttributes(usaa.Prev)) {
346346
Builtin = usaa.Builtin
347347
};
348348
} else {
349-
return new Attributes(attrs.Name, attrs.Args.ConvertAll(CloneExpr), CloneAttributes(attrs.Prev)) {
350-
Origin = Origin(attrs.Origin)
351-
};
349+
var result = new Attributes(attrs.Name, attrs.Args.ConvertAll(CloneExpr), CloneAttributes(attrs.Prev));
350+
result.SetOrigin(Origin(attrs.Origin));
351+
return result;
352352
}
353353
}
354354

@@ -380,13 +380,13 @@ public virtual Expression CloneExpr(Expression expr) {
380380
public MatchCaseExpr CloneMatchCaseExpr(MatchCaseExpr c) {
381381
Contract.Requires(c != null);
382382
Contract.Requires(c.Arguments != null);
383-
return new MatchCaseExpr(Origin(c.Tok), c.Ctor, c.FromBoundVar,
383+
return new MatchCaseExpr(Origin(c.Origin), c.Ctor, c.FromBoundVar,
384384
c.Arguments.ConvertAll(bv => CloneBoundVar(bv, false)), CloneExpr(c.Body), CloneAttributes(c.Attributes));
385385
}
386386

387387
public NestedMatchCaseExpr CloneNestedMatchCaseExpr(NestedMatchCaseExpr c) {
388388
Contract.Requires(c != null);
389-
return new NestedMatchCaseExpr(Origin(c.Tok), CloneExtendedPattern(c.Pat), CloneExpr(c.Body),
389+
return new NestedMatchCaseExpr(Origin(c.Origin), CloneExtendedPattern(c.Pat), CloneExpr(c.Body),
390390
CloneAttributes(c.Attributes));
391391
}
392392

@@ -465,11 +465,11 @@ public MatchCaseStmt CloneMatchCaseStmt(MatchCaseStmt c) {
465465
public ExtendedPattern CloneExtendedPattern(ExtendedPattern pat) {
466466
switch (pat) {
467467
case LitPattern p:
468-
return new LitPattern(p.Tok, CloneExpr(p.OrigLit));
468+
return new LitPattern(p.Origin, CloneExpr(p.OrigLit));
469469
case IdPattern p:
470470
return new IdPattern(this, p);
471471
case DisjunctivePattern p:
472-
return new DisjunctivePattern(p.Tok, p.Alternatives.ConvertAll(CloneExtendedPattern), p.IsGhost);
472+
return new DisjunctivePattern(p.Origin, p.Alternatives.ConvertAll(CloneExtendedPattern), p.IsGhost);
473473
default:
474474
Contract.Assert(false);
475475
return null;
@@ -478,7 +478,7 @@ public ExtendedPattern CloneExtendedPattern(ExtendedPattern pat) {
478478

479479
public NestedMatchCaseStmt CloneNestedMatchCaseStmt(NestedMatchCaseStmt c) {
480480
Contract.Requires(c != null);
481-
return new NestedMatchCaseStmt(c.Tok, CloneExtendedPattern(c.Pat), c.Body.ConvertAll(stmt => CloneStmt(stmt, false)),
481+
return new NestedMatchCaseStmt(c.Origin, CloneExtendedPattern(c.Pat), c.Body.ConvertAll(stmt => CloneStmt(stmt, false)),
482482
CloneAttributes(c.Attributes));
483483
}
484484

@@ -507,7 +507,7 @@ public void AddStmtLabels(Statement s, LList<Label> node) {
507507
}
508508

509509
public GuardedAlternative CloneGuardedAlternative(GuardedAlternative alt) {
510-
return new GuardedAlternative(Origin(alt.Tok), alt.IsBindingGuard, CloneExpr(alt.Guard),
510+
return new GuardedAlternative(Origin(alt.Origin), alt.IsBindingGuard, CloneExpr(alt.Guard),
511511
alt.Body.ConvertAll(stmt => CloneStmt(stmt, false)), CloneAttributes(alt.Attributes));
512512
}
513513

@@ -613,7 +613,7 @@ public virtual AttributedToken AttributedTok(AttributedToken tok) {
613613
public class ClonerKeepParensExpressions : Cloner {
614614
public override Expression CloneExpr(Expression expr) {
615615
if (expr is ParensExpression parensExpression) {
616-
return new ParensExpression(Origin(parensExpression.Tok), CloneExpr(parensExpression.E));
616+
return new ParensExpression(Origin(parensExpression.Origin), CloneExpr(parensExpression.E));
617617
}
618618

619619
return base.CloneExpr(expr);

Source/DafnyCore/AST/Expressions/Applications/ActualBindings.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
namespace Microsoft.Dafny;
66

7-
public class ActualBindings : TokenNode {
7+
public class ActualBindings : NodeWithComputedRange {
88
public readonly List<ActualBinding> ArgumentBindings;
99

1010
public ActualBindings(List<ActualBinding> argumentBindings) {
@@ -43,7 +43,7 @@ public void AcceptArgumentExpressionsAsExactParameterList(List<Expression> args
4343
public override IEnumerable<INode> PreResolveChildren => Children;
4444
}
4545

46-
public class ActualBinding : TokenNode {
46+
public class ActualBinding : NodeWithComputedRange {
4747
public readonly IOrigin /*?*/ FormalParameterName;
4848
public readonly Expression Actual;
4949
public readonly bool IsGhost;

Source/DafnyCore/AST/Expressions/Applications/ApplyExpr.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ public ApplyExpr(Cloner cloner, ApplyExpr original) : base(cloner, original) {
2626
CloseParen = original.CloseParen;
2727
}
2828

29-
public ApplyExpr(IOrigin tok, Expression fn, List<Expression> args, Token closeParen)
30-
: base(tok) {
29+
public ApplyExpr(IOrigin origin, Expression fn, List<Expression> args, Token closeParen)
30+
: base(origin) {
3131
Function = fn;
3232
Args = args;
3333
CloseParen = closeParen;

Source/DafnyCore/AST/Expressions/Applications/ApplySuffix.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ public ApplySuffix(Cloner cloner, ApplySuffix original) :
3535
Bindings = new ActualBindings(cloner, original.Bindings);
3636
}
3737

38-
public ApplySuffix(IOrigin tok, IOrigin/*?*/ atLabel, Expression lhs, List<ActualBinding> args, Token closeParen)
39-
: base(tok, lhs) {
40-
Contract.Requires(tok != null);
38+
public ApplySuffix(IOrigin origin, IOrigin/*?*/ atLabel, Expression lhs, List<ActualBinding> args, Token closeParen)
39+
: base(origin, lhs) {
40+
Contract.Requires(origin != null);
4141
Contract.Requires(lhs != null);
4242
Contract.Requires(cce.NonNullElements(args));
4343
AtTok = atLabel;

Source/DafnyCore/AST/Expressions/Applications/ExprDotName.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ public ExprDotName(Cloner cloner, ExprDotName original) : base(cloner, original)
3333
OptTypeArguments = original.OptTypeArguments?.ConvertAll(cloner.CloneType);
3434
}
3535

36-
public ExprDotName(IOrigin tok, Expression obj, Name suffixName, List<Type> optTypeArguments)
37-
: base(tok, obj) {
38-
Contract.Requires(tok != null);
36+
public ExprDotName(IOrigin origin, Expression obj, Name suffixName, List<Type> optTypeArguments)
37+
: base(origin, obj) {
38+
Contract.Requires(origin != null);
3939
Contract.Requires(obj != null);
4040
Contract.Requires(suffixName != null);
4141
this.SuffixNameNode = suffixName;

Source/DafnyCore/AST/Expressions/Applications/FunctionCallExpr.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -81,19 +81,19 @@ public FunctionCallExpr(string fn, Expression receiver, IOrigin openParen, Token
8181
atLabel) {
8282
}
8383

84-
public FunctionCallExpr(IOrigin tok, Name fn, Expression receiver, IOrigin openParen, Token closeParen, [Captured] List<ActualBinding> args, Label/*?*/ atLabel = null)
85-
: this(tok, fn, receiver, openParen, closeParen, new ActualBindings(args), atLabel) {
86-
Contract.Requires(tok != null);
84+
public FunctionCallExpr(IOrigin origin, Name fn, Expression receiver, IOrigin openParen, Token closeParen, [Captured] List<ActualBinding> args, Label/*?*/ atLabel = null)
85+
: this(origin, fn, receiver, openParen, closeParen, new ActualBindings(args), atLabel) {
86+
Contract.Requires(origin != null);
8787
Contract.Requires(fn != null);
8888
Contract.Requires(receiver != null);
8989
Contract.Requires(cce.NonNullElements(args));
9090
Contract.Requires(openParen != null || args.Count == 0);
9191
Contract.Ensures(type == null);
9292
}
9393

94-
public FunctionCallExpr(IOrigin tok, Name fn, Expression receiver, IOrigin openParen, Token closeParen, [Captured] ActualBindings bindings, Label/*?*/ atLabel = null)
95-
: base(tok) {
96-
Contract.Requires(tok != null);
94+
public FunctionCallExpr(IOrigin origin, Name fn, Expression receiver, IOrigin openParen, Token closeParen, [Captured] ActualBindings bindings, Label/*?*/ atLabel = null)
95+
: base(origin) {
96+
Contract.Requires(origin != null);
9797
Contract.Requires(fn != null);
9898
Contract.Requires(receiver != null);
9999
Contract.Requires(bindings != null);
@@ -113,9 +113,9 @@ public FunctionCallExpr(IOrigin tok, Name fn, Expression receiver, IOrigin openP
113113
/// This constructor is intended to be used when constructing a resolved FunctionCallExpr. The "args" are expected
114114
/// to be already resolved, and are all given positionally.
115115
/// </summary>
116-
public FunctionCallExpr(IOrigin tok, Name fn, Expression receiver, IOrigin openParen, Token closeParen, [Captured] List<Expression> args,
116+
public FunctionCallExpr(IOrigin origin, Name fn, Expression receiver, IOrigin openParen, Token closeParen, [Captured] List<Expression> args,
117117
Label /*?*/ atLabel = null)
118-
: this(tok, fn, receiver, openParen, closeParen, args.ConvertAll(e => new ActualBinding(null, e)), atLabel) {
118+
: this(origin, fn, receiver, openParen, closeParen, args.ConvertAll(e => new ActualBinding(null, e)), atLabel) {
119119
Bindings.AcceptArgumentExpressionsAsExactParameterList();
120120
}
121121

0 commit comments

Comments
 (0)