GSoC ideas - Practical/practical-sa GitHub Wiki

The main area a GSoC student can help with is writing automatic tests for the (still very preliminary) compiler. For main ideas, you can look at the tests for the lexical analyzer part of the compiler, available here.

The idea is to create an infrastructure where we can write Practical source code (either valid or one that fails to compile, for whatever reason), with either inline or external meta file saying what's expected. Examples:

answer.pr

/*
  Compile errors:
  Output:
  Ret: 42
*/
def main() -> S32 {
  42
}

The metadata at the beginning says that the program should compile without error, not produce output, and return 42.

rangeerror.pr

/* Compile errors: Invalid conversion 4:3
*/
def main() -> S8 {
  200
}

Indicates that the program should not compile, complaining about an invalid implicit conversion on line 4 column 3 (both tests pass with latest master).