Represent kinds in symbolic form in ASR
Currently the AST->ASR phase evaluates all kinds as integer and stores them as integers in ASR.
That requires to have the whole evaluation machinery (with all intrinsic functions) in ast_to_asr.cpp, and it gets quite messy, as seen in !900 (merged).
Also, we need to be able to represent parametrized derived types (PDT), where the kind is stored symbolically (like a C++ template) and only determined at "instantiation time".
For these reasons, I think it is cleaner to decouple and in AST->ASR simply keep all kinds in symbolic form, i.e., keep real(dp)
as is.
Then have a pass that evaluates all kinds and substitutes real(dp)
for real(8)
.