Skip to content

feat: error if purity of functions is not specified#768

Merged
lars-reimann merged 8 commits intomainfrom
purity-model
Nov 13, 2023
Merged

feat: error if purity of functions is not specified#768
lars-reimann merged 8 commits intomainfrom
purity-model

Conversation

@lars-reimann
Copy link
Member

Closes #731

Summary of Changes

Show an error if

  • a function is marked as @Impure and as @Pure,
  • a function is neither marked as @Impure and @Pure,
  • a function is marked as @Impure but not reasons are given.

@github-actions
Copy link

🦙 MegaLinter status: ✅ SUCCESS

Descriptor Linter Files Fixed Errors Elapsed time
✅ JSON eslint-plugin-jsonc 2 0 0 0.99s
✅ JSON jsonlint 2 0 0.22s
✅ JSON npm-package-json-lint yes no 0.67s
✅ JSON prettier 2 0 0 0.44s
✅ JSON v8r 2 0 2.06s
✅ REPOSITORY git_diff yes no 0.1s
✅ TYPESCRIPT eslint 14 0 0 5.57s
✅ TYPESCRIPT prettier 14 0 0 1.16s

See detailed report in MegaLinter reports
Set VALIDATE_ALL_CODEBASE: true in mega-linter.yml to validate all sources, not only the diff

MegaLinter is graciously provided by OX Security

@codecov
Copy link

codecov bot commented Nov 13, 2023

Codecov Report

Merging #768 (678399b) into main (cb6556a) will not change coverage.
Report is 1 commits behind head on main.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##              main      #768    +/-   ##
==========================================
  Coverage   100.00%   100.00%            
==========================================
  Files           80        82     +2     
  Lines        11579     11782   +203     
  Branches      2411      2447    +36     
==========================================
+ Hits         11579     11782   +203     
Files Coverage Δ
...-lang/src/language/builtins/safe-ds-annotations.ts 100.00% <100.00%> (ø)
...afe-ds-lang/src/language/builtins/safe-ds-enums.ts 100.00% <100.00%> (ø)
packages/safe-ds-lang/src/language/purity/model.ts 100.00% <100.00%> (ø)
...e/validation/other/declarations/annotationCalls.ts 100.00% <100.00%> (ø)
...ges/safe-ds-lang/src/language/validation/purity.ts 100.00% <100.00%> (ø)
...-lang/src/language/validation/safe-ds-validator.ts 100.00% <100.00%> (ø)

@lars-reimann lars-reimann marked this pull request as ready for review November 13, 2023 16:08
@lars-reimann lars-reimann merged commit a15b0af into main Nov 13, 2023
@lars-reimann lars-reimann deleted the purity-model branch November 13, 2023 16:08
lars-reimann pushed a commit that referenced this pull request Nov 22, 2023
## [0.4.0](v0.3.0...v0.4.0) (2023-11-22)

### Features

* add endless recursion as an impurity reason ([#788](#788)) ([98acdde](98acdde))
* call graph computer (without closures) ([#782](#782)) ([34bf182](34bf182))
* check types of constant parameters ([#775](#775)) ([0a02850](0a02850)), closes [#668](#668)
* check whether purity of callable parameters of functions is set properly ([#777](#777)) ([f8fd907](f8fd907)), closes [#732](#732)
* compute purity/side effects for expressions ([#785](#785)) ([9ed1c08](9ed1c08)), closes [#15](#15)
* compute types of parameters of lambdas that are passed as default value ([#780](#780)) ([01a5c03](01a5c03))
* error if call leads to infinite recursion ([#783](#783)) ([f7eabd8](f7eabd8)), closes [#667](#667)
* error if impure callable is passed to pure parameter ([#792](#792)) ([5536a4a](5536a4a)), closes [#730](#730)
* error if parameter name in impurity reason is invalid ([#772](#772)) ([faa2012](faa2012)), closes [#741](#741)
* error if purity of functions is not specified ([#768](#768)) ([a15b0af](a15b0af)), closes [#731](#731)
* filter statements without effect for code generation ([#786](#786)) ([cd4f2c1](cd4f2c1)), closes [#542](#542)
* improve location of warning about duplicate annotation target ([#771](#771)) ([87d2a48](87d2a48))
* info if `@Pure` annotation is called on parameter of pure function ([#778](#778)) ([c15c70e](c15c70e))
* purity computer ([#784](#784)) ([b09bb3a](b09bb3a))
* remove type parameters from enum variants ([#767](#767)) ([cb6556a](cb6556a)), closes [#766](#766)
* short-circuit `and`, `or`, and `?:` if RHS has no side effects ([#789](#789)) ([9d9f4b7](9d9f4b7)), closes [#15](#15)
* streamline purity information ([#779](#779)) ([75a9e5b](75a9e5b))
* stricter definition of `const` parameters ([#776](#776)) ([73a0d4e](73a0d4e))
* update snippets for functions and methods ([#769](#769)) ([061d3b1](061d3b1))
* validate impurity reasons of overriding methods ([#774](#774)) ([71fc5bd](71fc5bd)), closes [#665](#665)
* warn about duplicate impurity reasons ([#773](#773)) ([8344356](8344356)), closes [#733](#733)
* warn if statement has no effect ([#787](#787)) ([6f45dc4](6f45dc4)), closes [#664](#664)

### Bug Fixes

* signature help for optional parameters ([#793](#793)) ([fd88ce8](fd88ce8)), closes [#791](#791)
* wrong detection of useless statements that call parameters/unknown callables ([#790](#790)) ([a49b4b3](a49b4b3))
* wrong`"assignment/nothing-assigned"` error if RHS calls expression lambda ([#781](#781)) ([b909cb8](b909cb8))
@lars-reimann
Copy link
Member Author

🎉 This PR is included in version 0.4.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

@lars-reimann lars-reimann added the released Included in a release label Nov 22, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

released Included in a release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Validation error: Purity of function not specified

1 participant