summaryrefslogtreecommitdiff
path: root/testsuite/tests/perf/compiler/genMultiLayerModulesNoCode
blob: 0cca953c30b296bdb6d952565f110dc106a4e420 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/usr/bin/env bash
# Generate $DEPTH layers of modules with $WIDTH modules on each layer
# Every module on layer N imports all the modules on layer N-1
# Each module has $DEFS definitions in
# MultiLayerModules.hs imports all the modules from the last layer
DEPTH=3
WIDTH=3
DEFS=1000
for i in $(seq -w 1 $WIDTH); do
  echo "module DummyLevel0M$i where" > DummyLevel0M$i.hs;
  for k in $(seq -w 1 $DEFS); do
     echo "a_0_${i}_${k} = ${i} + ${k}" >> DummyLevel${l}M$i.hs;
  done
done
for l in $(seq 1 $DEPTH); do
  for i in $(seq -w 1 $WIDTH); do
    echo "module DummyLevel${l}M$i where" > DummyLevel${l}M$i.hs;
    for j in $(seq -w 1 $WIDTH); do
      echo "import DummyLevel$((l-1))M$j" >> DummyLevel${l}M$i.hs;
    done
    for k in $(seq -w 1 $DEFS); do
      echo "a_${l}_${i}_${j}_${k} = ${l} + ${i} + ${j} + ${k}" >> DummyLevel${l}M$i.hs;
    done
  done
done
echo "module MultiLayerModules where" > MultiLayerModules.hs
for j in $(seq -w 1 $WIDTH); do
  echo "import DummyLevel${DEPTH}M$j" >> MultiLayerModules.hs;
done
# What this import is doesn't matter, as long as it's not from the home package
# and not already imported implicitly.
echo "import Control.Applicative" >> MultiLayerModules.hs;