scala compiler typer non-typer phases