curry-frontend issueshttps://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues2018-12-17T10:53:25Zhttps://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/31Properly represent a missing module header in the AST2018-12-17T10:53:25ZKai ProttProperly represent a missing module header in the ASTCurrently there is no "proper" way to detect, whether or not a module header was present (based solely on the structure of the generated AST).Currently there is no "proper" way to detect, whether or not a module header was present (based solely on the structure of the generated AST).https://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/30Refactor implicit Prelude-Import2018-12-17T10:54:05ZKai ProttRefactor implicit Prelude-ImportWhen a module does not explicitly import the Prelude, the frontend currently inserts an explicit import into the AST.
This leads to a "wrong" output for the AST-Target.
Instead of adding the Prelude as an Import in the AST, it is suffic...When a module does not explicitly import the Prelude, the frontend currently inserts an explicit import into the AST.
This leads to a "wrong" output for the AST-Target.
Instead of adding the Prelude as an Import in the AST, it is sufficient to add it as an Import in FlatCurry (and AbstractCurry?),
as well as directly enriching all environments with the entities from the Prelude .https://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/28Add ifThenElse-Construct to AbstractCurry2018-12-17T10:39:47ZKai ProttAdd ifThenElse-Construct to AbstractCurrycurrently AbstractCurry desugars ``ifThenElse`` to a function call to 'ifThenElse'.currently AbstractCurry desugars ``ifThenElse`` to a function call to 'ifThenElse'.https://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/27Extend support for disabling optimizations2018-12-17T10:36:33ZKai ProttExtend support for disabling optimizationsAdd options to disable inlining, etc.Add options to disable inlining, etc.https://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/21Add Bang patterns2018-12-06T14:29:57ZFinn TeegenAdd Bang patternsReason about and eventually add support for bang patterns to enforce strict evaluation of locally defined values.Reason about and eventually add support for bang patterns to enforce strict evaluation of locally defined values.https://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/20Generate warnings for unused imports2022-03-02T14:35:57ZFinn TeegenGenerate warnings for unused importsThe frontend should detect unused imports and give a warning if there are imported modules or explicitly imported functions that are neither used nor reexported.The frontend should detect unused imports and give a warning if there are imported modules or explicitly imported functions that are neither used nor reexported.https://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/18Add pragma for warnings and deprecations2018-12-06T14:29:57ZFinn TeegenAdd pragma for warnings and deprecationsSee https://www.haskell.org/ghc/docs/7.2.2/html/users_guide/pragmas.html#warning-deprecated-pragmaSee https://www.haskell.org/ghc/docs/7.2.2/html/users_guide/pragmas.html#warning-deprecated-pragmahttps://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/17Improve type error messages2018-12-06T14:29:57ZFinn TeegenImprove type error messagesExtend error messages of the type checker (and maybe others, too) with the origin of the inferred types in case of a type conflict.Extend error messages of the type checker (and maybe others, too) with the origin of the inferred types in case of a type conflict.https://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/15Separate compilation of pattern matching and translation into intermediate la...2018-12-06T14:29:57ZFinn TeegenSeparate compilation of pattern matching and translation into intermediate languagehttps://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/14Implement further simplifications2018-12-06T14:29:57ZFinn TeegenImplement further simplifications- Case-of-case
- Case-of-constructor
- Case-of-literal
- Inlining of ```let```-bindings
- ```let```-floating?- Case-of-case
- Case-of-constructor
- Case-of-literal
- Inlining of ```let```-bindings
- ```let```-floating?https://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/13Erweiterung der Cabal-Testsuite2018-12-06T14:29:57ZFinn TeegenErweiterung der Cabal-TestsuiteDie bisherigen Testfälle sollten noch sinnvoll erweitert werden.
Hierbei könnte man sich beispielsweise an den Tests für den ExportCheck orientieren und entsprechende Testfälle für die anderen Überprüfungen des Frontends entwickeln.Die bisherigen Testfälle sollten noch sinnvoll erweitert werden.
Hierbei könnte man sich beispielsweise an den Tests für den ExportCheck orientieren und entsprechende Testfälle für die anderen Überprüfungen des Frontends entwickeln.https://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/11Remove anonymous labels for data constructors in value environment2018-12-06T14:29:58ZFinn TeegenRemove anonymous labels for data constructors in value environmentWhen a data constructor is entered into the value environment which does not belong to a record type, anonymous labels are created. This seems to be a relict from the MCC where the list of labels is used to determine the arity of a data ...When a data constructor is entered into the value environment which does not belong to a record type, anonymous labels are created. This seems to be a relict from the MCC where the list of labels is used to determine the arity of a data constructor. Since the arity is stored separately, the creation of anonymous labels should no longer be necessary, thus the list of labels can be left empty for normal data constructors.https://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/10Modify AST implementation to include span information instead of positions2019-05-27T11:24:11ZFinn TeegenModify AST implementation to include span information instead of positionsThe lexer (currybase/src/Curry.Syntax.Lexer) collects span information (i.e. a start and an end position) for all tokens during lexing.
Currently this information is only used to produce a token stream with spans.
Afterwards the span in...The lexer (currybase/src/Curry.Syntax.Lexer) collects span information (i.e. a start and an end position) for all tokens during lexing.
Currently this information is only used to produce a token stream with spans.
Afterwards the span information is discarded: The function span2Pos (Curry.Base.Span) is applied to convert spans into ordinary (starting) positions.
The AST implementation with positions should be modified to include span information in the long term.
For this purpose the checks and transformations of the frontend implementation need to be adapted correspondingly.https://git.ps.informatik.uni-kiel.de/curry/curry-frontend/-/issues/7Remove addition of Prelude import to AST2018-12-06T14:29:58ZFinn TeegenRemove addition of Prelude import to ASTCurrently, during compilation the AST of a module is extended with a "virtual" import of the `Prelude` module unless the `Prelude` is explicitly imported or the import is deactivated by the `NoImplicitPrelude` language extension.
While ...Currently, during compilation the AST of a module is extended with a "virtual" import of the `Prelude` module unless the `Prelude` is explicitly imported or the import is deactivated by the `NoImplicitPrelude` language extension.
While the consideration of the `Prelude` is important for compilation, the addition to the AST can lead to problems since the AST no longer corresponds to the source program. Thus, this transformation should at least be deferred to the transformation phases.
Involved modules are:
* `Modules`: Contains the function `importPrelude` which should be removed
* `Interfaces`: Contains the function `loadInterfaces` which then has to load the `Prelude` in addition
* `Imports`: Contains the functions `importModules` and `importInterfaces` which then have to load the `Prelude` in addition