(Regexp re)
| 295 | |
| 296 | // cleanAlt cleans re for eventual inclusion in an alternation. |
| 297 | private void cleanAlt(Regexp re) { |
| 298 | if (re.op == Regexp.Op.CHAR_CLASS) { |
| 299 | re.runes = new CharClass(re.runes).cleanClass().toArray(); |
| 300 | if (re.runes.length == 2 && re.runes[0] == 0 && re.runes[1] == Unicode.MAX_RUNE) { |
| 301 | re.runes = null; |
| 302 | re.op = Regexp.Op.ANY_CHAR; |
| 303 | } else if (re.runes.length == 4 |
| 304 | && re.runes[0] == 0 |
| 305 | && re.runes[1] == '\n' - 1 |
| 306 | && re.runes[2] == '\n' + 1 |
| 307 | && re.runes[3] == Unicode.MAX_RUNE) { |
| 308 | re.runes = null; |
| 309 | re.op = Regexp.Op.ANY_CHAR_NOT_NL; |
| 310 | } |
| 311 | } |
| 312 | } |
| 313 | |
| 314 | // collapse returns the result of applying op to subs[start:end]. |
| 315 | // If (sub contains op nodes, they all get hoisted up |
no test coverage detected