2011-04-08 Andreas AIM XIII
2014-05-22 Andreas AIM XIX
2016-04-20 Andreas AIM XXIII
Fixing bugs in Agda
0 Getting Agda
git clone git@github.com:agda/agda The source code is under src/full/Agda/ If you are making changes to be submitted as pull request * fork agda on github * clone your fork
1 The fix-agda-whitespace
program
The fix-whitespace
program fixes whitespace issues. It is found at
src/fix-agda-whitespace
It is run when you
make test
To install it, run
make install fix-agda-whitespace
from the root of the agda repository.
2 General structure of Agda
source file .agda == Interaction/Imports.hs ==> == Syntax/Parser/Parser.y ==> Syntax/Concrete.hs == Scope checking: Syntax/Translation/ConcreteToAbstract.hs ==> Syntax/Abstract.hs == Type checking: TypeChecking/Rules/ ==> Syntax/Internal.hs <== Termination checking: Termination/ == Coverage checking, translation to case trees: TypeChecking/Coverage.hs ==> TypeChecking/CompiledClause.hs == TypeChecking/Serialize.hs ==> interface .agdai
2 Issue tracker
https://github.com/agda/agda/issues
3 Bug fixing tools
a) Test suite, see
test/Succeed/ test/Fail/ test/interaction/
etc. Run it (frequently) with
make test
but latest before you commit.
b) TAGS
make TAGS creates src/full/TAGS M-. go to definition C-u M-. alternate location M-* go back
c) poor man's tags: grepping the source files
A script "findhs" with content #!/bin/bash gfind -name "*hs" -exec grep -H "$1" {} \; 2> /dev/null Then, in src/full/Agda do e.g. findhs getInteraction to get all matches in .hs files for "getInteraction". Alternative: use M-x rgrep in emacs.
d) debug messages
in ScopeM or TCM report debug messages with reportSLn "class.of.message" <verbosity level> "text" reportSDoc "class.of.message" <verbosity level> $ prettyTCM expr
4 Test cases
Each fixed issue is turned into (a) test case(s), to be put in one of test/Succeed test/Fail test/interaction The test case should contain comments with date author previous, faulty behavior current, expected behavior
5 Submitting a patch
Make sure to include all test cases and all changed .err files from test/Fail and changed .out files from test/interaction. Mention the issue number (e.g. #2134) in the commit message header. Create a pull request on github. If no one responds to your pull request, pester the main developers.
Good luck!
Page last modified on March 18, 2017, at 05:19 pm
Powered by
PmWiki