Skip to content

Commit 1fee474

Browse files
committed
make bit width checks pass for lights / switches
1 parent 985761e commit 1fee474

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

src/backend/evaluator/evaluator.cpp

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -309,13 +309,25 @@ bool Evaluator::checkIfBitWidthsMatch(
309309
return false;
310310
}
311311
BlockType outputBlockType = circuitNodeToBlockTypeMap.at(outputNode);
312+
unsigned int outputBitWidth;
313+
if (outputBlockType == BlockType::SWITCH || outputBlockType == BlockType::BUTTON || outputBlockType == BlockType::TICK_BUTTON) {
314+
outputBitWidth = 1;
315+
} else {
316+
BlockData* outputBlockData = blockDataManager.getBlockData(outputBlockType);
317+
connection_end_id_t outputConnectionEndId = connection.source.portId;
318+
outputBitWidth = outputBlockData->getConnectionBitWidth(outputConnectionEndId);
319+
}
320+
312321
BlockType inputBlockType = circuitNodeToBlockTypeMap.at(inputNode);
313-
BlockData* outputBlockData = blockDataManager.getBlockData(outputBlockType);
314-
BlockData* inputBlockData = blockDataManager.getBlockData(inputBlockType);
315-
connection_end_id_t outputConnectionEndId = connection.source.portId;
316-
connection_end_id_t inputConnectionEndId = connection.destination.portId;
317-
unsigned int outputBitWidth = outputBlockData->getConnectionBitWidth(outputConnectionEndId);
318-
unsigned int inputBitWidth = inputBlockData->getConnectionBitWidth(inputConnectionEndId);
322+
unsigned int inputBitWidth;
323+
if (inputBlockType == BlockType::LIGHT) {
324+
inputBitWidth = 1;
325+
} else{
326+
BlockData* inputBlockData = blockDataManager.getBlockData(inputBlockType);
327+
connection_end_id_t inputConnectionEndId = connection.destination.portId;
328+
inputBitWidth = inputBlockData->getConnectionBitWidth(inputConnectionEndId);
329+
}
330+
319331
return outputBitWidth == inputBitWidth;
320332
}
321333

0 commit comments

Comments
 (0)