summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--coreMacros/src/main/scala/chisel3/internal/RangeTransform.scala14
-rw-r--r--src/test/scala/chiselTests/RangeMacroTest.scala4
2 files changed, 8 insertions, 10 deletions
diff --git a/coreMacros/src/main/scala/chisel3/internal/RangeTransform.scala b/coreMacros/src/main/scala/chisel3/internal/RangeTransform.scala
index bbb36190..20142d5d 100644
--- a/coreMacros/src/main/scala/chisel3/internal/RangeTransform.scala
+++ b/coreMacros/src/main/scala/chisel3/internal/RangeTransform.scala
@@ -31,7 +31,7 @@ class RangeTransform(val c: Context) {
currString = currString.dropWhile(_ == ' ') // allow whitespace
if (currString.isEmpty()) {
if (nextArgIndex >= args.length) {
- c.abort(c.enclosingPosition, s"Incomplete range specifier, expected interpolated value")
+ c.abort(c.enclosingPosition, s"Incomplete range specifier")
}
val nextArg = args(nextArgIndex)
nextArgIndex += 1
@@ -47,11 +47,7 @@ class RangeTransform(val c: Context) {
val nextStringVal = currString.takeWhile(!Set('[', '(', ' ', ',', ')', ']').contains(_))
currString = currString.substring(nextStringVal.length)
if (currString.isEmpty()) {
- if (nextStringIndex >= strings.length) {
- c.abort(c.enclosingPosition, s"Incomplete range specifier")
- }
- currString = strings(nextStringIndex)
- nextStringIndex += 1
+ c.abort(c.enclosingPosition, s"Incomplete range specifier")
}
c.parse(nextStringVal)
}
@@ -62,7 +58,7 @@ class RangeTransform(val c: Context) {
val startInclusive = currString(0) match {
case '[' => true
case '(' => false
- case _ => c.abort(c.enclosingPosition, s"Unknown start inclusive/exclusive specifier, got: '${currString(0)}'")
+ case other => c.abort(c.enclosingPosition, s"Unknown start inclusive/exclusive specifier, got: '$other'")
}
currString = currString.substring(1) // eat the inclusive/exclusive specifier
val minArg = getNextValue()
@@ -76,7 +72,7 @@ class RangeTransform(val c: Context) {
val endInclusive = currString(0) match {
case ']' => true
case ')' => false
- case _ => c.abort(c.enclosingPosition, s"Unknown end inclusive/exclusive specifier, got: '${currString(0)}'")
+ case other => c.abort(c.enclosingPosition, s"Unknown end inclusive/exclusive specifier, got: '$other'")
}
currString = currString.substring(1) // eat the inclusive/exclusive specifier
currString = currString.dropWhile(_ == ' ')
@@ -90,6 +86,8 @@ class RangeTransform(val c: Context) {
c.abort(c.enclosingPosition, s"Unused characters in range specifier: '$unused'")
}
+ // TODO: FINISH THIS!
+
c.warning(c.enclosingPosition, s"$startInclusive ${showRaw(minArg)} ${showRaw(maxArg)} $endInclusive")
q""
diff --git a/src/test/scala/chiselTests/RangeMacroTest.scala b/src/test/scala/chiselTests/RangeMacroTest.scala
index 797c75c4..d6c51704 100644
--- a/src/test/scala/chiselTests/RangeMacroTest.scala
+++ b/src/test/scala/chiselTests/RangeMacroTest.scala
@@ -25,7 +25,7 @@ import rangeMacroTest._
@dump
class RangeMacroTest extends ChiselPropSpec {
property("Range macros should work") {
- def ducks() = {2}
- range" (0, ${ducks}] "
+ range"(0,${1+1}]"
+ range" ( 0 , ${1+1} ] "
}
}