google / google/xls

DSLX formatter does not line wrap proc instantiation parametrics

Open
#1,970 0 comments 0 reactions 0 assignees View on GitHub
bug dslx dslx:fmt
Dominant language
C++
Stars
1.9k
Forks
283
Avg merge
2d 10h
Merged PRs (30d)
135

Description

**Describe the bug**

If you have a long list of parametric bindings for a spawned proc, it will not line wrap at all. E.g.

```
import xls.examples.ram as ram_model;

const DATA_WIDTH = u32:32;
const RAM_ADDR_WIDTH = u32:7;
const RAM_DEPTH = u32:128;
const WORD_PARTITION_SIZE = DATA_WIDTH;
const INITIALIZED = false;
const ASSERT_VALID_READ = false;

type RamModelReadReq = ram_model::ReadReq;
type RamModelReadResp = ram_model::ReadResp;
type RamModelWriteReq = ram_model::WriteReq;
type RamModelWriteResp = ram_model::WriteResp;

proc Foo {
config() {
let (ram_model_rd_req_s, ram_model_rd_req_r) = chan("ram_model_rd_req");
let (ram_model_rd_resp_s, ram_model_rd_resp_r) =
chan("ram_model_rd_resp");
let (ram_model_wr_req_s, ram_model_wr_req_r) = chan("ram_model_wr_req");
let (ram_model_wr_resp_s, ram_model_wr_resp_r) =
chan("ram_model_wr_resp");

spawn ram_model::RamModel<
DATA_WIDTH, RAM_DEPTH, WORD_PARTITION_SIZE, ram_model::SimultaneousReadWriteBehavior::ASSERT_NO_CONFLICT, false, false>(
ram_model_rd_req_r, ram_model_rd_resp_s, ram_model_wr_req_r, ram_model_wr_resp_s);
}

init { () }

next(state: ()) { }
}
```

**To Reproduce**
The above code is already formatted.

**Expected behavior**
The parametrics between `<` and `>` should be line wrapped as appropriate to fit in the line length constraint.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.