Open alashworth opened 5 years ago
Comment by bob-carpenter Friday May 25, 2018 at 19:41 GMT
From @bgoodri on May 25, 2018 18:1
I agree this is misleading, but I am sure it applies to all interfaces so the issue should get moved to the stan-dev/stan repo.
On Fri, May 25, 2018 at 12:47 PM, Kevin S. Van Horn < notifications@github.com> wrote:
Summary:
When a function is defined twice, the error message points to the function AFTER the second definition. Description:
A program defines the function "rot_matrix" twice in the "functions" block. The error message points at the beginning of the definition of a later function, "scale_matrix". Reproducible Steps:
Run stanc on the following program:
functions { matrix rot_matrix() { return rep_matrix(0,1,1); }
matrix rot_matrix() { return rep_matrix(0,1,1); }
matrix scale_matrix() { return rep_matrix(0,1,1); } } data { int
N; vector[N] y; } parameters { real sigma; } model { sigma ~ normal(0, 1); y ~ normal(0, sigma); } Current Output:
SYNTAX ERROR, MESSAGE(S) FROM PARSER:
Parse Error. Function already defined, name=rot_matrix error in 'model661b1902a01a_foo' at line 10, column 3
8: } 9: 10: matrix scale_matrix() { ^ 11: return rep_matrix(0,1,1);
Error in stanc(file = file, model_code = model_code, model_name = model_name, : failed to parse Stan model 'foo' due to the above error.
Expected Output:
The caret should point at the beginning of the second definition of rot_matrix. RStan Version:
2.17.3 R Version:
R version 3.4.3 (2017-11-30) Operating System:
OS X 10.13.4
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/stan-dev/rstan/issues/533, or mute the thread https://github.com/notifications/unsubscribe-auth/ADOrqkl4V3uhyIUUO4kyUyDUCvU6T24sks5t2DWPgaJpZM4UOR-Z .
Comment by VMatthijs Thursday Dec 13, 2018 at 13:52 GMT
stanc3 currently says
Semantic error at file "test.stan", line 6, characters 9-19:
-------------------------------------------------
4: }
5:
6: matrix rot_matrix() {
^
7: return rep_matrix(0,1,1);
8: }
-------------------------------------------------
Identifier rot_matrix is already in use.
stanc2 still says
SYNTAX ERROR, MESSAGE(S) FROM PARSER:
Parse Error. Function already defined, name=rot_matrix error in 'stan/src/test/test-models/good/empty.stan' at line 10, column 3
-------------------------------------------------
8: }
9:
10: matrix scale_matrix() {
^
11: return rep_matrix(0,1,1);
-------------------------------------------------
Comment by bob-carpenter Thursday Dec 13, 2018 at 14:32 GMT
This is great. I don't like the extra spaces around rot_matrix
--- I think identifiers should be quoted as in C++ compiler error messages. In general, I'd follow C++ error messages because they've had a long time to think about these and get them right.
Here, I'd prefer to see something like " 'rot_matrix' is already defined".
Issue by bob-carpenter Friday May 25, 2018 at 19:41 GMT Originally opened as https://github.com/stan-dev/stan/issues/2526
From @ksvanhorn on May 25, 2018 16:47
Summary:
When a function is defined twice, the error message points to the function AFTER the second definition.
Description:
A program defines the function "rot_matrix" twice in the "functions" block. The error message points at the beginning of the definition of a later function, "scale_matrix".
Reproducible Steps:
Run stanc on the following program:
Current Output:
Expected Output:
The caret should point at the beginning of the second definition of
rot_matrix
.RStan Version:
2.17.3
R Version:
R version 3.4.3 (2017-11-30)
Operating System:
OS X 10.13.4
Copied from original issue: stan-dev/rstan#533