# Known bugs and limitations¶

This page lists the known bugs and limitations of the PIE DSL, and workarounds if they exist. If you have an issue that is not listed here, please check if it is listed on our Github page, and if not, open a new issue there: https://github.com/metaborg/pie/issues.

Missing section: how to troubleshoot

## Compiler generates invalid code for void return types¶

The Java type void does not exist in the PIE DSL. Instead, it uses unit to signify that the return type does not hold a useful value. Right now, the compiler will generate incorrect code for void functions, which results in Java compile errors in the generated code. There is no specific workaround for this, but the standard workarounds for unsupported Java functions should work. In the future, the compiler will support functions that are declared to have a unit return type in PIE but which have a void return type in Java.

## Java reserved words¶

Using Java keywords (and PIE keywords) is allowed in the PIE DSL as long as the use is not ambiguous. However, the compiler does not generate correct code for those keywords, which means that the generated Java code does not compile. To avoid this issue, do not use Java reserved words.

## Standard workarounds for unsupported Java features¶

The PIE DSL has less features than Java by design. This sometimes means that Java elements cannot be used as is in the PIE DSL. This sections lists some standard workarounds for these issues.

### Standard workarounds for unsupported Java functions¶

This section provides workarounds for calling Java functions that are not supported by the PIE DSL.

Missing section: standard workarounds for unsupported Java functions

In summary, the workarounds are:

1. Write a wrapper function
2. Implement the task in Java. (Do not call the function from the PIE DSL, but call it from Java instead)

### Standard workarounds for unsupported Java data types¶

Missing section: standard workarounds for unsupported Java data types

Last update: 2021-11-15