Opened 17 years ago

Closed 17 years ago

#25 closed defect (fixed)

SyntaxException when verifying matmat-seq.mmp

Reported by: zirkel Owned by: zirkel
Priority: minor Milestone:
Component: examples Version: 1.0
Keywords: Cc:

Description

When running verify on examples/matmat/matmat-seq.mmp, a SyntaxException is generated. It may be due to passing array c, an output variable (which is supposed to be written, but not read), as an argument to a function.

The exception is:

Exception in thread "main" edu.udel.cis.vsl.minimp.model.IF.SyntaxException: Syntax error in line 30 column 19 through line 30 column 23:
c[i]):
c[i]
Argument 2 of function call not in read scope of calling function main

at edu.udel.cis.vsl.minimp.model.impl.statement.InvocationStatement.<init>(InvocationStatement.java:63)
at edu.udel.cis.vsl.minimp.model.impl.Model.newInvocationStatement(Model.java:309)
at edu.udel.cis.vsl.minimp.front.minimp.ModelBuilder.processInvocationStmt(ModelBuilder.java:673)
at edu.udel.cis.vsl.minimp.front.minimp.ModelBuilder.processStatement(ModelBuilder.java:489)
at edu.udel.cis.vsl.minimp.front.minimp.ModelBuilder.processCompoundStmt(ModelBuilder.java:578)
at edu.udel.cis.vsl.minimp.front.minimp.ModelBuilder.processStatement(ModelBuilder.java:473)
at edu.udel.cis.vsl.minimp.front.minimp.ModelBuilder.processWhileStmt(ModelBuilder.java:810)
at edu.udel.cis.vsl.minimp.front.minimp.ModelBuilder.processStatement(ModelBuilder.java:505)
at edu.udel.cis.vsl.minimp.front.minimp.ModelBuilder.processStatementList(ModelBuilder.java:449)
at edu.udel.cis.vsl.minimp.front.minimp.ModelBuilder.processFunctionBody(ModelBuilder.java:411)
at edu.udel.cis.vsl.minimp.front.minimp.ModelBuilder.processFunctions(ModelBuilder.java:386)
at edu.udel.cis.vsl.minimp.front.minimp.ModelBuilder.processAST(ModelBuilder.java:244)
at edu.udel.cis.vsl.minimp.front.minimp.ModelBuilder.buildModel(ModelBuilder.java:237)
at edu.udel.cis.vsl.minimp.Minimp.verify(Minimp.java:273)
at edu.udel.cis.vsl.minimp.Minimp.main(Minimp.java:371)

Change History (2)

comment:1 by Stephen Siegel, 17 years ago

Owner: set to zirkel
Status: newassigned
Version: 1.0

Yep, you can't do that with an output variable. Make c a regular variable, create a new output variable called "out" and at the end copy all values from c into out.

comment:2 by Stephen Siegel, 17 years ago

Resolution: fixed
Status: assignedclosed
Note: See TracTickets for help on using tickets.