Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

terminate after error #199

Open
jwuttke opened this issue May 5, 2022 · 2 comments
Open

terminate after error #199

jwuttke opened this issue May 5, 2022 · 2 comments

Comments

@jwuttke
Copy link
Contributor

jwuttke commented May 5, 2022

Observed behavior:

In the terminal output appended below, errors are reported in pass 1. Nonethess, binder proceeds with passes 2 and 3, then processes the next input file. In consequence, the last lines of the terminal output look as if everything went fine. The reported errors are easily overlooked. This can be very misleading.

Proposed solutions:

(A) Terminate after an unsuccessful pass.

(B) Continue execution. At the end, print a summary of all processed input files with their exit status, like "passed" or "3 errors in pass 1". Finally, print a one-line summary like "Errors in 3 of 5 input files."

I could try to provide a patch after maintainers have expressed their preference for either solution.

binder --root-module BornAgainBind --bind "" --prefix /G/sw/ba/auto/Bind --config /G/sw/ba/Wrap/Bind/config.cfg -v /G/sw/ba/Wrap/Bind/Base.hpp /G/sw/ba/Wrap/Bind/Fit.hpp -- -std=c++17 -I/G/sw/ba -I/usr/include/eigen3 -DSWIG -DNDEBUG

Process input file /G/sw/ba/Wrap/Bind/Base.hpp
Read config from file /G/sw/ba/Wrap/Bind/config.cfg
In file included from /G/sw/ba/Wrap/Bind/Base.hpp:4:
In file included from /G/sw/ba/Base/Vector/Direction.h:18:
/usr/local/include/heinz/Vectors3D.h:364:18: error: no member named 'dot' in 'Vec3<double>'
        cosa = a.dot(b) / ptot;
               ~ ^
In file included from /G/sw/ba/Wrap/Bind/Base.hpp:5:
In file included from /G/sw/ba/Base/Vector/RotMatrix.h:18:
/G/sw/ba/Base/Vector/EigenCore.h:16:2: error: no need to expose this header to Swig
#error no need to expose this header to Swig
 ^
In file included from /G/sw/ba/Wrap/Bind/Base.hpp:5:
/G/sw/ba/Base/Vector/RotMatrix.h:93:11: error: use of undeclared identifier 'Eigen'
    const Eigen::Matrix3d& matrix() { return m_matrix; }
          ^
/G/sw/ba/Base/Vector/RotMatrix.h:93:46: error: use of undeclared identifier 'm_matrix'
    const Eigen::Matrix3d& matrix() { return m_matrix; }
                                             ^
Generate bindings, pass 1...
Binding: ICloneable
Binding: class Vec3<double> vecOfLambdaAlphaPhi(double, double, double)
Binding: Direction
Binding: RotMatrix
Binding: Bin1D
Binding: bool BinContains(const struct Bin1D &, double)
Binding: Bin1DKVector
Binding: Bin1DCVector
Binding: IAxis
Binding: VariableBinAxis
Binding: ConstKBinAxis
Binding: CustomBinAxis
Binding: FixedBinAxis
Generate bindings, pass 2...
Binding: Vec3<double>
Binding: Vec3<std::complex<double>>
Binding: std::vector<double>
Generate bindings, pass 3...
Sorting Binders...
Sorting Binders... Done.
Writing code...
File /G/sw/ba/auto/Bind/Base/Types/ICloneable.cpp is up-to-date, skipping...
File /G/sw/ba/auto/Bind/heinz/Vectors3D.cpp is up-to-date, skipping...
File /G/sw/ba/auto/Bind/Base/Vector/Direction.cpp is up-to-date, skipping...
File /G/sw/ba/auto/Bind/std/stl_vector.cpp is up-to-date, skipping...
File /G/sw/ba/auto/Bind/Base/Vector/RotMatrix.cpp is up-to-date, skipping...
File /G/sw/ba/auto/Bind/Base/Axis/IAxis.cpp is up-to-date, skipping...
Writing code... Done.
4 errors generated.
Error while processing /G/sw/ba/Wrap/Bind/Base.hpp.
Process input file /G/sw/ba/Wrap/Bind/Fit.hpp
Read config from file /G/sw/ba/Wrap/Bind/config.cfg
Generate bindings, pass 1...
Binding: RealLimits
Generate bindings, pass 2...
Sorting Binders...
Sorting Binders... Done.
Writing code...
File /G/sw/ba/auto/Bind/Fit/Param/RealLimits.cpp is up-to-date, skipping...
Writing code... Done.
@jwuttke
Copy link
Contributor Author

jwuttke commented May 10, 2022

I'd suggest to go for solution (A). Much simpler, and in most cases all a user needs & expects.

@lyskov
Copy link
Member

lyskov commented May 10, 2022

@jwuttke have you checked the process exit code in cases when error was discovered? It be non-zero if such errors have happened. Technically we do not need to terminate on such error cases since we can still generate code if error is not critical (we even have suppress-errors to avoid printing them).

I will however be happy to implement (or merge PR that implements) solution (A). Currently i do not see a direct way to do it though. We only get error code after all post processing happens. So if you have ideas how to access these errors earlier please let me know. Thanks,

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants