eslint-plugin-isaacscript
Advanced tools
Comparing version 3.12.0 to 3.12.1
@@ -65,5 +65,4 @@ "use strict"; | ||
const type = checker.getTypeAtLocation(tsNode); | ||
const flags = type.getFlags(); | ||
// We cannot use `isTypeFlagSet` because we do not want to penetrate unions. | ||
return (0, typeUtils_1.isFlagSet)(flags, flag); | ||
return (0, typeUtils_1.isFlagSet)(type.flags, flag); | ||
} | ||
@@ -121,2 +120,22 @@ function isBoolean(node) { | ||
} | ||
function hasNullAndNotUndefined(node) { | ||
if (isNull(node)) { | ||
return true; | ||
} | ||
const tsNode = parserServices.esTreeNodeToTSNodeMap.get(node); | ||
const type = checker.getTypeAtLocation(tsNode); | ||
const types = (0, typeUtils_1.unionTypeParts)(type); | ||
return (types.some((t) => (0, typeUtils_1.isFlagSet)(t.flags, ts.TypeFlags.Null)) && | ||
!types.some((t) => (0, typeUtils_1.isFlagSet)(t.flags, ts.TypeFlags.Undefined))); | ||
} | ||
function hasUndefinedAndNotNull(node) { | ||
if (isUndefined(node)) { | ||
return true; | ||
} | ||
const tsNode = parserServices.esTreeNodeToTSNodeMap.get(node); | ||
const type = checker.getTypeAtLocation(tsNode); | ||
const types = (0, typeUtils_1.unionTypeParts)(type); | ||
return (types.some((t) => (0, typeUtils_1.isFlagSet)(t.flags, ts.TypeFlags.Undefined)) && | ||
!types.some((t) => (0, typeUtils_1.isFlagSet)(t.flags, ts.TypeFlags.Null))); | ||
} | ||
function checkEqualSign(node) { | ||
@@ -127,6 +146,4 @@ const leftTSNode = parserServices.esTreeNodeToTSNodeMap.get(node.left); | ||
const rightType = checker.getTypeAtLocation(rightTSNode); | ||
const leftFlags = leftType.getFlags(); | ||
const rightFlags = rightType.getFlags(); | ||
const isLeftLiteral = (0, typeUtils_1.isFlagSet)(leftFlags, ts.TypeFlags.Literal); | ||
const isRightLiteral = (0, typeUtils_1.isFlagSet)(rightFlags, ts.TypeFlags.Literal); | ||
const isLeftLiteral = (0, typeUtils_1.isFlagSet)(leftType.flags, ts.TypeFlags.Literal); | ||
const isRightLiteral = (0, typeUtils_1.isFlagSet)(rightType.flags, ts.TypeFlags.Literal); | ||
if (isLeftLiteral && isRightLiteral && leftType === rightType) { | ||
@@ -236,3 +253,5 @@ context.report({ | ||
} | ||
if (node.operator === "??" && isNull(node.left) && isNull(node.right)) { | ||
if (node.operator === "??" && | ||
hasNullAndNotUndefined(node.left) && | ||
isNull(node.right)) { | ||
context.report({ | ||
@@ -247,3 +266,3 @@ loc: node.loc, | ||
if (node.operator === "??" && | ||
isUndefined(node.left) && | ||
hasUndefinedAndNotNull(node.left) && | ||
isUndefined(node.right)) { | ||
@@ -250,0 +269,0 @@ context.report({ |
{ | ||
"name": "eslint-plugin-isaacscript", | ||
"version": "3.12.0", | ||
"version": "3.12.1", | ||
"description": "An ESLint plugin that contains useful rules.", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
214481
4685