Skip to content

Commit f7b3a27

Browse files
committed
ensure the correctness of handling of esope segment field dimension access
1 parent 1ebebe8 commit f7b3a27

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

src/EsopeImporter-Tests/JsonToIASTVisitorTest.class.st

+40
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,46 @@ JsonToIASTVisitorTest >> testDeref [
337337

338338
]
339339

340+
{ #category : 'tests-esope' }
341+
JsonToIASTVisitorTest >> testDerefAccessWithDim [
342+
343+
" PROGRAM MYPROG
344+
var = lb.att(S__/2)
345+
END
346+
"
347+
348+
| programFile stmt varAccess entity |
349+
programFile := self visitJsonCode:
350+
'{"meta":{"miVersion":"fortran77","miFilename":"./srcCodeOrigin.f"},"program_units":[{"anno":[],"blocks":[{"anno":[],"label":null,"span":"(2:8)-(2:26)","statement":{"anno":[],"expression":{"anno":[],"expression":{"anno":[],"expression":{"anno":[],"span":"(2:14)-(2:15)","tag":"value","value":{"contents":"lb","tag":"variable"}},"field":{"anno":[],"span":"(2:17)-(2:19)","tag":"value","value":{"contents":"att","tag":"variable"}},"span":"(2:14)-(2:19)","tag":"deref"},"indices":{"anno":[],"list":[{"anno":[],"index":{"anno":[],"left":{"anno":[],"span":"(2:21)-(2:23)","tag":"value","value":{"contents":"s__","tag":"variable"}},"op":{"tag":"division"},"right":{"anno":[],"span":"(2:25)-(2:25)","tag":"value","value":{"contents":["2",null],"tag":"integer"}},"span":"(2:21)-(2:25)","tag":"binary"},"name":null,"span":"(2:21)-(2:25)","tag":"single"}],"span":"(2:21)-(2:25)"},"span":"(2:14)-(2:26)","tag":"subscript"},"span":"(2:8)-(2:26)","tag":"assign_expression","target":{"anno":[],"span":"(2:8)-(2:10)","tag":"value","value":{"contents":"var","tag":"variable"}}},"tag":"statement"}],"name":"myprog","span":"(1:7)-(3:9)","subprograms":null,"tag":"main"}]}'.
351+
352+
353+
self assert: programFile body first body size equals: 1.
354+
355+
stmt := programFile body first body first.
356+
357+
self assert: stmt size equals: 2.
358+
359+
varAccess := stmt first.
360+
self assert: varAccess class equals: IASTVarAccess.
361+
self assert: varAccess entityName equals: 'var'.
362+
363+
varAccess := stmt second.
364+
self assert: varAccess class equals: IASTVarAccess.
365+
self assert: varAccess entityName equals: 'lb'.
366+
self assert: varAccess dereferencedVariable isNotNil.
367+
368+
entity := varAccess dereferencedVariable.
369+
self assert: entity class equals: IASTVarAccess.
370+
self assert: entity entityName equals: 'att'.
371+
372+
self assert: varAccess indices size equals: 1.
373+
self assert: varAccess indices anyOne size equals: 1.
374+
entity := varAccess indices anyOne anyOne.
375+
self assert: entity class equals: IASTVarAccess.
376+
self assert: entity entityName equals: 's__'.
377+
378+
]
379+
340380
{ #category : 'tests-esope' }
341381
JsonToIASTVisitorTest >> testESOAtWithArrayArgument [
342382
"Special case of a D__ function call with an array as argument

0 commit comments

Comments
 (0)