当前位置: 首页>>代码示例>>Java>>正文


Java BooleanLiteralSet.get方法代码示例

本文整理汇总了Java中com.google.javascript.rhino.jstype.BooleanLiteralSet.get方法的典型用法代码示例。如果您正苦于以下问题:Java BooleanLiteralSet.get方法的具体用法?Java BooleanLiteralSet.get怎么用?Java BooleanLiteralSet.get使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在com.google.javascript.rhino.jstype.BooleanLiteralSet的用法示例。


在下文中一共展示了BooleanLiteralSet.get方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: traverseShortCircuitingBinOp

import com.google.javascript.rhino.jstype.BooleanLiteralSet; //导入方法依赖的package包/类
private BooleanOutcomePair traverseShortCircuitingBinOp(
    Node n, FlowScope scope, boolean condition) {
  Node left = n.getFirstChild();
  Node right = n.getLastChild();

  // type the left node
  BooleanOutcomePair leftLiterals =
      traverseWithinShortCircuitingBinOp(left,
          scope.createChildFlowScope());
  JSType leftType = left.getJSType();

  // reverse abstract interpret the left node to produce the correct
  // scope in which to verify the right node
  FlowScope rightScope = reverseInterpreter.
      getPreciserScopeKnowingConditionOutcome(
          left, leftLiterals.getOutcomeFlowScope(left.getType(), condition),
          condition);

  // type the right node
  BooleanOutcomePair rightLiterals =
      traverseWithinShortCircuitingBinOp(
          right, rightScope.createChildFlowScope());
  JSType rightType = right.getJSType();

  JSType type;
  BooleanOutcomePair literals;
  if (leftType != null && rightType != null) {
    leftType = leftType.getRestrictedTypeGivenToBooleanOutcome(!condition);
    if (leftLiterals.toBooleanOutcomes ==
        BooleanLiteralSet.get(!condition)) {
      // Use the restricted left type, since the right side never gets
      // evaluated.
      type = leftType;
      literals = leftLiterals;
    } else {
      // Use the join of the restricted left type knowing the outcome of the
      // ToBoolean predicate and of the right type.
      type = leftType.getLeastSupertype(rightType);
      literals =
          getBooleanOutcomePair(leftLiterals, rightLiterals, condition);
    }

    // Exclude the boolean type if the literal set is empty because a boolean
    // can never actually be returned.
    if (literals.booleanValues == BooleanLiteralSet.EMPTY &&
        getNativeType(BOOLEAN_TYPE).isSubtype(type)) {
      // Exclusion only make sense for a union type.
      if (type instanceof UnionType) {
        type = ((UnionType) type).getRestrictedUnion(
            getNativeType(BOOLEAN_TYPE));
      }
    }
  } else {
    type = null;
    literals = new BooleanOutcomePair(
        BooleanLiteralSet.BOTH, BooleanLiteralSet.BOTH,
        leftLiterals.getJoinedFlowScope(),
        rightLiterals.getJoinedFlowScope());
  }
  n.setJSType(type);

  return literals;
}
 
开发者ID:andyjko,项目名称:feedlack,代码行数:64,代码来源:TypeInference.java

示例2: traverseShortCircuitingBinOp

import com.google.javascript.rhino.jstype.BooleanLiteralSet; //导入方法依赖的package包/类
private BooleanOutcomePair traverseShortCircuitingBinOp(
    Node n, FlowScope scope, boolean condition) {
  Node left = n.getFirstChild();
  Node right = n.getLastChild();

  // type the left node
  BooleanOutcomePair leftLiterals =
      traverseWithinShortCircuitingBinOp(left,
          scope.createChildFlowScope());
  JSType leftType = left.getJSType();

  // reverse abstract interpret the left node to produce the correct
  // scope in which to verify the right node
  FlowScope rightScope = reverseInterpreter.
      getPreciserScopeKnowingConditionOutcome(
          left, leftLiterals.getOutcomeFlowScope(left.getType(), condition),
          condition);

  // type the right node
  BooleanOutcomePair rightLiterals =
      traverseWithinShortCircuitingBinOp(
          right, rightScope.createChildFlowScope());
  JSType rightType = right.getJSType();

  JSType type;
  BooleanOutcomePair literals;
  if (leftType != null && rightType != null) {
    leftType = leftType.getRestrictedTypeGivenToBooleanOutcome(!condition);
    if (leftLiterals.toBooleanOutcomes ==
        BooleanLiteralSet.get(!condition)) {
      // Use the restricted left type, since the right side never gets
      // evaluated.
      type = leftType;
      literals = leftLiterals;
    } else {
      // Use the join of the restricted left type knowing the outcome of the
      // ToBoolean predicate and of the right type.
      type = leftType.getLeastSupertype(rightType);
      literals =
          getBooleanOutcomePair(leftLiterals, rightLiterals, condition);
    }

    // Exclude the boolean type if the literal set is empty because a boolean
    // can never actually be returned.
    if (literals.booleanValues == BooleanLiteralSet.EMPTY &&
        getNativeType(BOOLEAN_TYPE).isSubtype(type)) {
      // Exclusion only make sense for a union type.
      if (type.isUnionType()) {
        type = type.toMaybeUnionType().getRestrictedUnion(
            getNativeType(BOOLEAN_TYPE));
      }
    }
  } else {
    type = null;
    literals = new BooleanOutcomePair(
        BooleanLiteralSet.BOTH, BooleanLiteralSet.BOTH,
        leftLiterals.getJoinedFlowScope(),
        rightLiterals.getJoinedFlowScope());
  }
  n.setJSType(type);

  return literals;
}
 
开发者ID:SpoonLabs,项目名称:astor,代码行数:64,代码来源:TypeInference.java

示例3: traverseShortCircuitingBinOp

import com.google.javascript.rhino.jstype.BooleanLiteralSet; //导入方法依赖的package包/类
private BooleanOutcomePair traverseShortCircuitingBinOp(
    Node n, FlowScope scope) {
  checkArgument(n.isAnd() || n.isOr());
  boolean nIsAnd = n.isAnd();
  Node left = n.getFirstChild();
  Node right = n.getLastChild();

  // type the left node
  BooleanOutcomePair leftOutcome = traverseWithinShortCircuitingBinOp(
      left, scope.createChildFlowScope());
  JSType leftType = left.getJSType();

  // reverse abstract interpret the left node to produce the correct
  // scope in which to verify the right node
  FlowScope rightScope =
      reverseInterpreter.getPreciserScopeKnowingConditionOutcome(
          left, leftOutcome.getOutcomeFlowScope(left.getToken(), nIsAnd), nIsAnd);

  // type the right node
  BooleanOutcomePair rightOutcome = traverseWithinShortCircuitingBinOp(
      right, rightScope.createChildFlowScope());
  JSType rightType = right.getJSType();

  JSType type;
  BooleanOutcomePair outcome;
  if (leftType != null && rightType != null) {
    leftType = leftType.getRestrictedTypeGivenToBooleanOutcome(!nIsAnd);
    if (leftOutcome.toBooleanOutcomes == BooleanLiteralSet.get(!nIsAnd)) {
      // Either n is && and lhs is false, or n is || and lhs is true.
      // Use the restricted left type; the right side never gets evaluated.
      type = leftType;
      outcome = leftOutcome;
    } else {
      // Use the join of the restricted left type knowing the outcome of the
      // ToBoolean predicate and of the right type.
      type = leftType.getLeastSupertype(rightType);
      outcome = new BooleanOutcomePair(
          joinBooleanOutcomes(nIsAnd,
              leftOutcome.toBooleanOutcomes, rightOutcome.toBooleanOutcomes),
          joinBooleanOutcomes(nIsAnd,
              leftOutcome.booleanValues, rightOutcome.booleanValues),
          leftOutcome.getJoinedFlowScope(),
          rightOutcome.getJoinedFlowScope());
    }
    // Exclude the boolean type if the literal set is empty because a boolean
    // can never actually be returned.
    if (outcome.booleanValues == BooleanLiteralSet.EMPTY &&
        getNativeType(BOOLEAN_TYPE).isSubtype(type)) {
      // Exclusion only makes sense for a union type.
      if (type.isUnionType()) {
        type = type.toMaybeUnionType().getRestrictedUnion(
            getNativeType(BOOLEAN_TYPE));
      }
    }
  } else {
    type = null;
    outcome = new BooleanOutcomePair(
        BooleanLiteralSet.BOTH, BooleanLiteralSet.BOTH,
        leftOutcome.getJoinedFlowScope(),
        rightOutcome.getJoinedFlowScope());
  }
  n.setJSType(type);
  return outcome;
}
 
开发者ID:google,项目名称:closure-compiler,代码行数:65,代码来源:TypeInference.java

示例4: traverseShortCircuitingBinOp

import com.google.javascript.rhino.jstype.BooleanLiteralSet; //导入方法依赖的package包/类
private BooleanOutcomePair traverseShortCircuitingBinOp(
    Node n, FlowScope scope) {
  Preconditions.checkArgument(n.isAnd() || n.isOr());
  boolean nIsAnd = n.isAnd();
  Node left = n.getFirstChild();
  Node right = n.getLastChild();

  // type the left node
  BooleanOutcomePair leftOutcome = traverseWithinShortCircuitingBinOp(
      left, scope.createChildFlowScope());
  JSType leftType = left.getJSType();

  // reverse abstract interpret the left node to produce the correct
  // scope in which to verify the right node
  FlowScope rightScope = reverseInterpreter.
      getPreciserScopeKnowingConditionOutcome(left,
          leftOutcome.getOutcomeFlowScope(left.getType(), nIsAnd),
          nIsAnd);

  // type the right node
  BooleanOutcomePair rightOutcome = traverseWithinShortCircuitingBinOp(
      right, rightScope.createChildFlowScope());
  JSType rightType = right.getJSType();

  JSType type;
  BooleanOutcomePair outcome;
  if (leftType != null && rightType != null) {
    leftType = leftType.getRestrictedTypeGivenToBooleanOutcome(!nIsAnd);
    if (leftOutcome.toBooleanOutcomes == BooleanLiteralSet.get(!nIsAnd)) {
      // Either n is && and lhs is false, or n is || and lhs is true.
      // Use the restricted left type; the right side never gets evaluated.
      type = leftType;
      outcome = leftOutcome;
    } else {
      // Use the join of the restricted left type knowing the outcome of the
      // ToBoolean predicate and of the right type.
      type = leftType.getLeastSupertype(rightType);
      outcome = new BooleanOutcomePair(
          joinBooleanOutcomes(nIsAnd,
              leftOutcome.toBooleanOutcomes, rightOutcome.toBooleanOutcomes),
          joinBooleanOutcomes(nIsAnd,
              leftOutcome.booleanValues, rightOutcome.booleanValues),
          leftOutcome.getJoinedFlowScope(),
          rightOutcome.getJoinedFlowScope());
    }
    // Exclude the boolean type if the literal set is empty because a boolean
    // can never actually be returned.
    if (outcome.booleanValues == BooleanLiteralSet.EMPTY &&
        getNativeType(BOOLEAN_TYPE).isSubtype(type)) {
      // Exclusion only makes sense for a union type.
      if (type.isUnionType()) {
        type = type.toMaybeUnionType().getRestrictedUnion(
            getNativeType(BOOLEAN_TYPE));
      }
    }
  } else {
    type = null;
    outcome = new BooleanOutcomePair(
        BooleanLiteralSet.BOTH, BooleanLiteralSet.BOTH,
        leftOutcome.getJoinedFlowScope(),
        rightOutcome.getJoinedFlowScope());
  }
  n.setJSType(type);
  return outcome;
}
 
开发者ID:nicks,项目名称:closure-compiler-old,代码行数:66,代码来源:TypeInference.java


注:本文中的com.google.javascript.rhino.jstype.BooleanLiteralSet.get方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。