EMMA Coverage Report (generated Mon Nov 01 16:48:29 PDT 2010)
[all classes][com.google.caja.parser.quasiliteral]

COVERAGE SUMMARY FOR SOURCE FILE [IllegalReferenceCheckRewriter.java]

nameclass, %method, %block, %line, %
IllegalReferenceCheckRewriter.java100% (3/3)83%  (5/6)94%  (83/88)87%  (13/15)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class IllegalReferenceCheckRewriter100% (1/1)50%  (1/2)85%  (28/33)67%  (4/6)
IllegalReferenceCheckRewriter (MessageQueue): void 0%   (0/1)0%   (0/5)0%   (0/2)
IllegalReferenceCheckRewriter (MessageQueue, boolean): void 100% (1/1)100% (28/28)100% (4/4)
     
class IllegalReferenceCheckRewriter$1100% (1/1)100% (2/2)100% (44/44)100% (7/7)
IllegalReferenceCheckRewriter$1 (IllegalReferenceCheckRewriter): void 100% (1/1)100% (6/6)100% (1/1)
fire (ParseTreeNode, Scope): ParseTreeNode 100% (1/1)100% (38/38)100% (6/6)
     
class IllegalReferenceCheckRewriter$2100% (1/1)100% (2/2)100% (11/11)100% (2/2)
IllegalReferenceCheckRewriter$2 (IllegalReferenceCheckRewriter): void 100% (1/1)100% (6/6)100% (1/1)
fire (ParseTreeNode, Scope): ParseTreeNode 100% (1/1)100% (5/5)100% (1/1)

1// Copyright (C) 2008 Google Inc.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//      http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14 
15package com.google.caja.parser.quasiliteral;
16 
17import com.google.caja.parser.ParseTreeNode;
18import com.google.caja.parser.js.Identifier;
19import com.google.caja.parser.js.SyntheticNodes;
20import com.google.caja.reporting.MessageQueue;
21 
22/**
23 * Checks for non-{@link SyntheticNodes#SYNTHETIC synthetic} identifiers in the
24 * reserved namespace.
25 *
26 * @author ihab.awad@gmail.com (Ihab Awad)
27 */
28@RulesetDescription(
29    name="IlegalReferenceCheckRewriter",
30    synopsis="Checks that any reserved references are synthetic")
31public class IllegalReferenceCheckRewriter extends Rewriter {
32  final public Rule[] cajaRules = {
33    new Rule () {
34      @Override
35      @RuleDescription(
36          name="identifierUnderscores",
37          synopsis="Check that any identifier ending with '__' is synthetic",
38          reason="Double underscore identifiers may not be mentioned by Caja "
39              + "code")
40      public ParseTreeNode fire(ParseTreeNode node, Scope scope) {
41        if (node instanceof Identifier
42            && !node.getAttributes().is(SyntheticNodes.SYNTHETIC)) {
43          String name = ((Identifier)node).getValue();
44          if (name != null && name.endsWith("__")) {
45            mq.addMessage(
46                RewriterMessageType.ILLEGAL_IDENTIFIER_LEFT_OVER,
47                node.getFilePosition(), node);
48            return node;
49          }
50        }
51        return NONE;
52      }
53    },
54 
55    new Rule () {
56      @Override
57      @RuleDescription(
58          name="recurse",
59          synopsis="Recurse into children",
60          reason="")
61      public ParseTreeNode fire(ParseTreeNode node, Scope scope) {
62        return expandAll(node, scope);
63      }
64    },
65  };
66 
67  public IllegalReferenceCheckRewriter(MessageQueue mq) {
68    this(mq, true);
69  }
70 
71  public IllegalReferenceCheckRewriter(MessageQueue mq, boolean logging) {
72    super(mq, false, logging);
73    addRules(cajaRules);
74  }
75}

[all classes][com.google.caja.parser.quasiliteral]
EMMA 2.0.5312 (C) Vladimir Roubtsov