mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-03 17:24:29 +00:00 
			
		
		
		
	fix(vim.json): loss of precision on integers >14 digits #34876
Problem: multiple DAP servers keep assuming they can have internal IDs
         up to 2**52, which get corrupted by the Neovim JSON encoder.
Solution: change (1) constant and add a test so nobody breaks it while
          updating the library.
Fixes: https://github.com/neovim/neovim/issues/24532
Fixes: https://github.com/mfussenegger/nvim-dap/issues/1534
Fixes: https://github.com/facebook/buck2/issues/1032
			
			
This commit is contained in:
		@@ -77,6 +77,7 @@ describe('vim.json.decode()', function()
 | 
			
		||||
    eq(-100000, exec_lua([[return vim.json.decode('  -100000  ')]]))
 | 
			
		||||
    eq(0, exec_lua([[return vim.json.decode('0')]]))
 | 
			
		||||
    eq(0, exec_lua([[return vim.json.decode('-0')]]))
 | 
			
		||||
    eq(3053700806959403, exec_lua([[return vim.json.decode('3053700806959403')]]))
 | 
			
		||||
  end)
 | 
			
		||||
 | 
			
		||||
  it('parses floating-point numbers', function()
 | 
			
		||||
@@ -208,6 +209,7 @@ describe('vim.json.encode()', function()
 | 
			
		||||
  end)
 | 
			
		||||
 | 
			
		||||
  it('dumps floats', function()
 | 
			
		||||
    eq('3053700806959403', exec_lua([[return vim.json.encode(3053700806959403)]]))
 | 
			
		||||
    eq('10.5', exec_lua([[return vim.json.encode(10.5)]]))
 | 
			
		||||
    eq('-10.5', exec_lua([[return vim.json.encode(-10.5)]]))
 | 
			
		||||
    eq('-1e-05', exec_lua([[return vim.json.encode(-1e-5)]]))
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user