From 51e4a6a351a64a1bff995e1b5fefb88c7e2430eb Mon Sep 17 00:00:00 2001 From: Paul Phillips Date: Tue, 30 Nov 2010 17:57:15 +0000 Subject: Parser relaxation so that one can name the type... Parser relaxation so that one can name the type variables in a constructor pattern match: this is a prerequisite to realizing the full potential of gadts. (Nothing new works here however.) No review. --- .../scala/tools/nsc/ast/parser/Parsers.scala | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) (limited to 'src/compiler') diff --git a/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala index 09f1db7249..1ae9a9d8c0 100644 --- a/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala +++ b/src/compiler/scala/tools/nsc/ast/parser/Parsers.scala @@ -1633,19 +1633,14 @@ self => } case _ => } - /* not yet - if (in.token == LBRACKET) - atPos(in.offset) { - val ts = typeArgs(true, false) - accept(LPAREN) - val ps = if (in.token == RPAREN) List() else patterns(true, false) - accept(RPAREN) - Apply(TypeApply(convertToTypeId(t), ts), ps) - } - else */ - if (in.token == LPAREN) - atPos(start, in.offset) { Apply(t, argumentPatterns()) } - else t + val typeAppliedTree = in.token match { + case LBRACKET => atPos(start, in.offset)(TypeApply(convertToTypeId(t), typeArgs(true, false))) + case _ => t + } + in.token match { + case LPAREN => atPos(start, in.offset)(Apply(typeAppliedTree, argumentPatterns())) + case _ => typeAppliedTree + } case USCORE => in.nextToken() atPos(start, start) { Ident(nme.WILDCARD) } -- cgit v1.2.3