Skip to content

Commit a2a28bf

Browse files
Copilotrodiazet
authored andcommitted
Fix isConstant annotation always false in AST JSON export for Identifier nodes
Co-authored-by: rodiazet <7524020+rodiazet@users.noreply.github.com> Update cmdlineTests.
1 parent 30f2018 commit a2a28bf

21 files changed

Lines changed: 514 additions & 4 deletions

libsolidity/ast/ASTJsonExporter.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1006,13 +1006,13 @@ bool ASTJsonExporter::visit(Identifier const& _node)
10061006
Json overloads = Json::array();
10071007
for (auto const& dec: _node.annotation().overloadedDeclarations)
10081008
overloads.emplace_back(nodeId(*dec));
1009-
setJsonNode(_node, "Identifier", {
1009+
std::vector<std::pair<std::string, Json>> attributes = {
10101010
std::make_pair("name", _node.name()),
10111011
std::make_pair("referencedDeclaration", idOrNull(_node.annotation().referencedDeclaration)),
10121012
std::make_pair("overloadedDeclarations", overloads),
1013-
std::make_pair("typeDescriptions", typePointerToJson(_node.annotation().type)),
1014-
std::make_pair("argumentTypes", typePointerToJson(_node.annotation().arguments))
1015-
});
1013+
};
1014+
appendExpressionAttributes(attributes, _node.annotation());
1015+
setJsonNode(_node, "Identifier", std::move(attributes));
10161016
return false;
10171017
}
10181018

test/cmdlineTests/standard_outputs_on_compilation_error/output.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,10 @@
150150
"lValueRequested": false,
151151
"leftHandSide": {
152152
"id": 6,
153+
"isConstant": false,
154+
"isLValue": true,
155+
"isPure": false,
156+
"lValueRequested": true,
153157
"name": "x",
154158
"nodeType": "Identifier",
155159
"overloadedDeclarations": [],

test/libsolidity/ASTJSON/address_payable.json

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,10 @@
119119
"initialValue": {
120120
"baseExpression": {
121121
"id": 13,
122+
"isConstant": false,
123+
"isLValue": true,
124+
"isPure": false,
125+
"lValueRequested": false,
122126
"name": "m",
123127
"nodeType": "Identifier",
124128
"overloadedDeclarations": [],
@@ -132,6 +136,10 @@
132136
"id": 15,
133137
"indexExpression": {
134138
"id": 14,
139+
"isConstant": false,
140+
"isLValue": true,
141+
"isPure": false,
142+
"lValueRequested": false,
135143
"name": "arg",
136144
"nodeType": "Identifier",
137145
"overloadedDeclarations": [],
@@ -165,6 +173,10 @@
165173
"lValueRequested": false,
166174
"leftHandSide": {
167175
"id": 17,
176+
"isConstant": false,
177+
"isLValue": true,
178+
"isPure": false,
179+
"lValueRequested": true,
168180
"name": "r",
169181
"nodeType": "Identifier",
170182
"overloadedDeclarations": [],
@@ -179,6 +191,10 @@
179191
"operator": "=",
180192
"rightHandSide": {
181193
"id": 18,
194+
"isConstant": false,
195+
"isLValue": true,
196+
"isPure": false,
197+
"lValueRequested": false,
182198
"name": "arg",
183199
"nodeType": "Identifier",
184200
"overloadedDeclarations": [],
@@ -238,6 +254,10 @@
238254
"arguments": [
239255
{
240256
"id": 25,
257+
"isConstant": false,
258+
"isLValue": false,
259+
"isPure": false,
260+
"lValueRequested": false,
241261
"name": "this",
242262
"nodeType": "Identifier",
243263
"overloadedDeclarations": [],
@@ -304,6 +324,10 @@
304324
"leftHandSide": {
305325
"baseExpression": {
306326
"id": 28,
327+
"isConstant": false,
328+
"isLValue": true,
329+
"isPure": false,
330+
"lValueRequested": false,
307331
"name": "m",
308332
"nodeType": "Identifier",
309333
"overloadedDeclarations": [],
@@ -317,6 +341,10 @@
317341
"id": 30,
318342
"indexExpression": {
319343
"id": 29,
344+
"isConstant": false,
345+
"isLValue": true,
346+
"isPure": false,
347+
"lValueRequested": false,
320348
"name": "c",
321349
"nodeType": "Identifier",
322350
"overloadedDeclarations": [],

test/libsolidity/ASTJSON/ast_internal_function_different_ids_export.json

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,10 @@
236236
{
237237
"expression": {
238238
"id": 4,
239+
"isConstant": false,
240+
"isLValue": false,
241+
"isPure": true,
242+
"lValueRequested": false,
239243
"name": "L",
240244
"nodeType": "Identifier",
241245
"overloadedDeclarations": [],
@@ -303,6 +307,10 @@
303307
"components": [
304308
{
305309
"id": 10,
310+
"isConstant": false,
311+
"isLValue": false,
312+
"isPure": false,
313+
"lValueRequested": false,
306314
"name": "free2",
307315
"nodeType": "Identifier",
308316
"overloadedDeclarations": [],
@@ -356,6 +364,10 @@
356364
{
357365
"expression": {
358366
"id": 14,
367+
"isConstant": false,
368+
"isLValue": false,
369+
"isPure": true,
370+
"lValueRequested": false,
359371
"name": "L",
360372
"nodeType": "Identifier",
361373
"overloadedDeclarations": [],
@@ -483,6 +495,10 @@
483495
{
484496
"expression": {
485497
"id": 25,
498+
"isConstant": false,
499+
"isLValue": false,
500+
"isPure": true,
501+
"lValueRequested": false,
486502
"name": "L",
487503
"nodeType": "Identifier",
488504
"overloadedDeclarations": [],
@@ -550,6 +566,10 @@
550566
"components": [
551567
{
552568
"id": 31,
569+
"isConstant": false,
570+
"isLValue": false,
571+
"isPure": false,
572+
"lValueRequested": false,
553573
"name": "free2",
554574
"nodeType": "Identifier",
555575
"overloadedDeclarations": [],
@@ -697,6 +717,10 @@
697717
{
698718
"expression": {
699719
"id": 42,
720+
"isConstant": false,
721+
"isLValue": false,
722+
"isPure": true,
723+
"lValueRequested": false,
700724
"name": "L",
701725
"nodeType": "Identifier",
702726
"overloadedDeclarations": [],
@@ -764,6 +788,10 @@
764788
"components": [
765789
{
766790
"id": 48,
791+
"isConstant": false,
792+
"isLValue": false,
793+
"isPure": false,
794+
"lValueRequested": false,
767795
"name": "free2",
768796
"nodeType": "Identifier",
769797
"overloadedDeclarations": [],
@@ -817,6 +845,10 @@
817845
{
818846
"expression": {
819847
"id": 52,
848+
"isConstant": false,
849+
"isLValue": false,
850+
"isPure": true,
851+
"lValueRequested": false,
820852
"name": "L",
821853
"nodeType": "Identifier",
822854
"overloadedDeclarations": [],

test/libsolidity/ASTJSON/ast_internal_function_id_export.json

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,10 @@
278278
{
279279
"expression": {
280280
"id": 31,
281+
"isConstant": false,
282+
"isLValue": false,
283+
"isPure": false,
284+
"lValueRequested": false,
281285
"name": "free1",
282286
"nodeType": "Identifier",
283287
"overloadedDeclarations": [],
@@ -295,6 +299,10 @@
295299
{
296300
"expression": {
297301
"id": 33,
302+
"isConstant": false,
303+
"isLValue": false,
304+
"isPure": false,
305+
"lValueRequested": false,
298306
"name": "inr1",
299307
"nodeType": "Identifier",
300308
"overloadedDeclarations": [],
@@ -313,6 +321,10 @@
313321
"expression": {
314322
"expression": {
315323
"id": 35,
324+
"isConstant": false,
325+
"isLValue": false,
326+
"isPure": true,
327+
"lValueRequested": false,
316328
"name": "L",
317329
"nodeType": "Identifier",
318330
"overloadedDeclarations": [],
@@ -384,6 +396,10 @@
384396
"components": [
385397
{
386398
"id": 43,
399+
"isConstant": false,
400+
"isLValue": false,
401+
"isPure": false,
402+
"lValueRequested": false,
387403
"name": "free2",
388404
"nodeType": "Identifier",
389405
"overloadedDeclarations": [],
@@ -436,6 +452,10 @@
436452
"components": [
437453
{
438454
"id": 47,
455+
"isConstant": false,
456+
"isLValue": false,
457+
"isPure": false,
458+
"lValueRequested": false,
439459
"name": "inr2",
440460
"nodeType": "Identifier",
441461
"overloadedDeclarations": [],
@@ -742,6 +762,10 @@
742762
"expression": {
743763
"expression": {
744764
"id": 80,
765+
"isConstant": false,
766+
"isLValue": false,
767+
"isPure": false,
768+
"lValueRequested": false,
745769
"name": "this",
746770
"nodeType": "Identifier",
747771
"overloadedDeclarations": [],
@@ -774,6 +798,10 @@
774798
{
775799
"expression": {
776800
"id": 84,
801+
"isConstant": false,
802+
"isLValue": false,
803+
"isPure": false,
804+
"lValueRequested": false,
777805
"name": "inr1",
778806
"nodeType": "Identifier",
779807
"overloadedDeclarations": [],
@@ -791,6 +819,10 @@
791819
{
792820
"expression": {
793821
"id": 86,
822+
"isConstant": false,
823+
"isLValue": false,
824+
"isPure": false,
825+
"lValueRequested": false,
794826
"name": "free1",
795827
"nodeType": "Identifier",
796828
"overloadedDeclarations": [],
@@ -809,6 +841,10 @@
809841
"expression": {
810842
"expression": {
811843
"id": 88,
844+
"isConstant": false,
845+
"isLValue": false,
846+
"isPure": true,
847+
"lValueRequested": false,
812848
"name": "L",
813849
"nodeType": "Identifier",
814850
"overloadedDeclarations": [],
@@ -842,6 +878,10 @@
842878
"expression": {
843879
"expression": {
844880
"id": 92,
881+
"isConstant": false,
882+
"isLValue": false,
883+
"isPure": true,
884+
"lValueRequested": false,
845885
"name": "L",
846886
"nodeType": "Identifier",
847887
"overloadedDeclarations": [],
@@ -914,6 +954,10 @@
914954
{
915955
"expression": {
916956
"id": 100,
957+
"isConstant": false,
958+
"isLValue": false,
959+
"isPure": false,
960+
"lValueRequested": false,
917961
"name": "this",
918962
"nodeType": "Identifier",
919963
"overloadedDeclarations": [],
@@ -981,6 +1025,10 @@
9811025
"components": [
9821026
{
9831027
"id": 106,
1028+
"isConstant": false,
1029+
"isLValue": false,
1030+
"isPure": false,
1031+
"lValueRequested": false,
9841032
"name": "inr2",
9851033
"nodeType": "Identifier",
9861034
"overloadedDeclarations": [],
@@ -1033,6 +1081,10 @@
10331081
"components": [
10341082
{
10351083
"id": 110,
1084+
"isConstant": false,
1085+
"isLValue": false,
1086+
"isPure": false,
1087+
"lValueRequested": false,
10361088
"name": "free2",
10371089
"nodeType": "Identifier",
10381090
"overloadedDeclarations": [],
@@ -1086,6 +1138,10 @@
10861138
{
10871139
"expression": {
10881140
"id": 114,
1141+
"isConstant": false,
1142+
"isLValue": false,
1143+
"isPure": true,
1144+
"lValueRequested": false,
10891145
"name": "L",
10901146
"nodeType": "Identifier",
10911147
"overloadedDeclarations": [],
@@ -1154,6 +1210,10 @@
11541210
{
11551211
"expression": {
11561212
"id": 120,
1213+
"isConstant": false,
1214+
"isLValue": false,
1215+
"isPure": true,
1216+
"lValueRequested": false,
11571217
"name": "L",
11581218
"nodeType": "Identifier",
11591219
"overloadedDeclarations": [],
@@ -1299,6 +1359,10 @@
12991359
"expression": {
13001360
"argumentTypes": [],
13011361
"id": 133,
1362+
"isConstant": false,
1363+
"isLValue": false,
1364+
"isPure": false,
1365+
"lValueRequested": false,
13021366
"name": "access",
13031367
"nodeType": "Identifier",
13041368
"overloadedDeclarations": [],
@@ -1335,6 +1399,10 @@
13351399
"expression": {
13361400
"argumentTypes": [],
13371401
"id": 136,
1402+
"isConstant": false,
1403+
"isLValue": false,
1404+
"isPure": false,
1405+
"lValueRequested": false,
13381406
"name": "expression",
13391407
"nodeType": "Identifier",
13401408
"overloadedDeclarations": [],

0 commit comments

Comments
 (0)