コード例 #1
0
ファイル: Match.java プロジェクト: taolong001/wyvern
  /**
   * Checks that the tag we are matching over is a supertag of every tag in the case-list.
   *
   * <p>This ensures that each tag could actually have a match and that case is not unreachable
   * code.
   *
   * @param matchingOverTag
   */
  private void checkStaticSubtags(TaggedInfo matchingOver) {
    for (Case c : cases) {
      TaggedInfo matchTarget = TaggedInfo.lookupTagByType(c.getTaggedTypeMatch()); // FIXME:

      if (!isSubtag(matchTarget, matchingOver)) {
        ToolError.reportError(
            ErrorMessage.UNMATCHABLE_CASE,
            this.matchingOver,
            matchingOver.getTagName(),
            matchTarget.getTagName());
      }
    }
  }
コード例 #2
0
ファイル: Match.java プロジェクト: taolong001/wyvern
  private void checkSubtagsPreceedSupertags() {
    // A tag cannot be earlier than one of its subtags
    for (int i = 0; i < cases.size() - 1; i++) {
      Case beforeCase = cases.get(i);
      TaggedInfo beforeTag = TaggedInfo.lookupTagByType(beforeCase.getTaggedTypeMatch()); // FIXME:

      for (int j = i + 1; j < cases.size(); j++) {
        Case afterCase = cases.get(j);

        if (afterCase.isDefault()) break;

        TaggedInfo afterTag = TaggedInfo.lookupTagByType(afterCase.getTaggedTypeMatch()); // FIXME:
        // TagBinding afterBinding = TagBinding.get(afterCase.getTaggedTypeMatch());

        if (afterTag != null && beforeTag != null && isSubtag(afterTag, beforeTag)) {
          ToolError.reportError(
              ErrorMessage.SUPERTAG_PRECEEDS_SUBTAG,
              matchingOver,
              beforeTag.getTagName(),
              afterTag.getTagName());
        }
      }
    }
  }