Skip to content

Commit

Permalink
Merge pull request #5554 from Alanscut:issue_5075
Browse files Browse the repository at this point in the history
[bugfix] Fix issue #5075, Delete destructive judgment
  • Loading branch information
ichernev committed Dec 23, 2023
2 parents 794938a + b270afa commit 5718d97
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 24 deletions.
48 changes: 24 additions & 24 deletions src/lib/create/valid.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,37 +4,37 @@ import getParsingFlags from '../create/parsing-flags';
import some from '../utils/some';

export function isValid(m) {
if (m._isValid == null) {
var flags = getParsingFlags(m),
parsedParts = some.call(flags.parsedDateParts, function (i) {
return i != null;
}),
isNowValid =
!isNaN(m._d.getTime()) &&
flags.overflow < 0 &&
!flags.empty &&
!flags.invalidEra &&
!flags.invalidMonth &&
!flags.invalidWeekday &&
!flags.weekdayMismatch &&
!flags.nullInput &&
!flags.invalidFormat &&
!flags.userInvalidated &&
(!flags.meridiem || (flags.meridiem && parsedParts));

var flags = null,
parsedParts = false,
isNowValid = m._d && !isNaN(m._d.getTime());
if (isNowValid) {
flags = getParsingFlags(m);
parsedParts = some.call(flags.parsedDateParts, function (i) {
return i != null;
});
isNowValid =
flags.overflow < 0 &&
!flags.empty &&
!flags.invalidEra &&
!flags.invalidMonth &&
!flags.invalidWeekday &&
!flags.weekdayMismatch &&
!flags.nullInput &&
!flags.invalidFormat &&
!flags.userInvalidated &&
(!flags.meridiem || (flags.meridiem && parsedParts));
if (m._strict) {
isNowValid =
isNowValid &&
flags.charsLeftOver === 0 &&
flags.unusedTokens.length === 0 &&
flags.bigHour === undefined;
}

if (Object.isFrozen == null || !Object.isFrozen(m)) {
m._isValid = isNowValid;
} else {
return isNowValid;
}
}
if (Object.isFrozen == null || !Object.isFrozen(m)) {
m._isValid = isNowValid;
} else {
return isNowValid;
}
return m._isValid;
}
Expand Down
23 changes: 23 additions & 0 deletions src/test/moment/is_valid.js
Original file line number Diff line number Diff line change
Expand Up @@ -561,3 +561,26 @@ test('format locale', function (assert) {
assert.ok(moment(a[i][0], a[i][1], a[i][2]).isValid());
}
});

test('destructive operation', function (assert) {
assert.equal(
moment('2018-05-15').add(100, 'years').isValid(),
true,
'add 100 years is valid'
);
assert.equal(
moment('2018-05-15').add(1000000, 'years').isValid(),
false,
'add 1000000 years is invalid'
);
assert.equal(
moment('2018-05-15').subtract(100, 'years').isValid(),
true,
'subtract 100 years is valid'
);
assert.equal(
moment('2018-05-15').subtract(1000000, 'years').isValid(),
false,
'subtract 1000000 years is invalid'
);
});

0 comments on commit 5718d97

Please sign in to comment.