solargraph 0.40.0 → 0.40.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/.travis.yml +2 -1
 - data/CHANGELOG.md +4 -0
 - data/lib/solargraph/language_server/message/text_document/formatting.rb +17 -19
 - data/lib/solargraph/library.rb +1 -3
 - data/lib/solargraph/parser/legacy/node_methods.rb +5 -0
 - data/lib/solargraph/parser/rubyvm/node_methods.rb +11 -1
 - data/lib/solargraph/version.rb +1 -1
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: e02cce6c25457bb0284d221d1a9bef97730b7d7be18129cdee0dcfa1aae9c02b
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 5143879ae0f89fd7ca608646cfe96fccc1e6c15afd7940fc7948dff358f286f3
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 7c868fd6c6bb344f532eeee02ef06f9b80df086b51a49e408f5c04961303524f36d6b27cfae37b200a92bf0b65e15a3e68be029aad66bf912dd1aa73b1f48714
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 6a9cbcd839ab51d1c71d83a30a73464f337faffda715059e91de57a3519783793574901f23d738c83a49d1116d41268c4992fa304c08d8892e394e12bb5011c8
         
     | 
    
        data/.travis.yml
    CHANGED
    
    
    
        data/CHANGELOG.md
    CHANGED
    
    
| 
         @@ -2,6 +2,7 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            require 'rubocop'
         
     | 
| 
       4 
4 
     | 
    
         
             
            require 'securerandom'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'tmpdir'
         
     | 
| 
       5 
6 
     | 
    
         | 
| 
       6 
7 
     | 
    
         
             
            module Solargraph
         
     | 
| 
       7 
8 
     | 
    
         
             
              module LanguageServer
         
     | 
| 
         @@ -12,25 +13,22 @@ module Solargraph 
     | 
|
| 
       12 
13 
     | 
    
         | 
| 
       13 
14 
     | 
    
         
             
                      def process
         
     | 
| 
       14 
15 
     | 
    
         
             
                        filename = uri_to_file(params['textDocument']['uri'])
         
     | 
| 
       15 
     | 
    
         
            -
                         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
                           
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
                          set_error(Solargraph::LanguageServer::ErrorCodes::INTERNAL_ERROR, "[#{e.class}] #{e.message}")
         
     | 
| 
       32 
     | 
    
         
            -
                        ensure
         
     | 
| 
       33 
     | 
    
         
            -
                          File.unlink tempfile
         
     | 
| 
      
 16 
     | 
    
         
            +
                        Dir.mktmpdir do |tempdir|
         
     | 
| 
      
 17 
     | 
    
         
            +
                          tempfile = File.join(tempdir, File.basename(filename))
         
     | 
| 
      
 18 
     | 
    
         
            +
                          rubocop_file = Diagnostics::RubocopHelpers.find_rubocop_file(filename)
         
     | 
| 
      
 19 
     | 
    
         
            +
                          original = host.read_text(params['textDocument']['uri'])
         
     | 
| 
      
 20 
     | 
    
         
            +
                          File.write tempfile, original
         
     | 
| 
      
 21 
     | 
    
         
            +
                          begin
         
     | 
| 
      
 22 
     | 
    
         
            +
                            args = ['-a', '-f', 'fi', tempfile]
         
     | 
| 
      
 23 
     | 
    
         
            +
                            args.unshift('-c', fix_drive_letter(rubocop_file)) unless rubocop_file.nil?
         
     | 
| 
      
 24 
     | 
    
         
            +
                            options, paths = RuboCop::Options.new.parse(args)
         
     | 
| 
      
 25 
     | 
    
         
            +
                            store = RuboCop::ConfigStore.new
         
     | 
| 
      
 26 
     | 
    
         
            +
                            redirect_stdout { RuboCop::Runner.new(options, store).run(paths) }
         
     | 
| 
      
 27 
     | 
    
         
            +
                            result = File.read(tempfile)
         
     | 
| 
      
 28 
     | 
    
         
            +
                            format original, result
         
     | 
| 
      
 29 
     | 
    
         
            +
                          rescue RuboCop::ValidationError, RuboCop::ConfigNotFoundError => e
         
     | 
| 
      
 30 
     | 
    
         
            +
                            set_error(Solargraph::LanguageServer::ErrorCodes::INTERNAL_ERROR, "[#{e.class}] #{e.message}")
         
     | 
| 
      
 31 
     | 
    
         
            +
                          end
         
     | 
| 
       34 
32 
     | 
    
         
             
                        end
         
     | 
| 
       35 
33 
     | 
    
         
             
                      end
         
     | 
| 
       36 
34 
     | 
    
         | 
    
        data/lib/solargraph/library.rb
    CHANGED
    
    | 
         @@ -209,7 +209,6 @@ module Solargraph 
     | 
|
| 
       209 
209 
     | 
    
         
             
                # @return [Array<Solargraph::Range>]
         
     | 
| 
       210 
210 
     | 
    
         
             
                # @todo Take a Location instead of filename/line/column
         
     | 
| 
       211 
211 
     | 
    
         
             
                def references_from filename, line, column, strip: false
         
     | 
| 
       212 
     | 
    
         
            -
                  # checkout filename
         
     | 
| 
       213 
212 
     | 
    
         
             
                  cursor = api_map.cursor_at(filename, Position.new(line, column))
         
     | 
| 
       214 
213 
     | 
    
         
             
                  clip = api_map.clip(cursor)
         
     | 
| 
       215 
214 
     | 
    
         
             
                  pins = clip.define
         
     | 
| 
         @@ -222,7 +221,7 @@ module Solargraph 
     | 
|
| 
       222 
221 
     | 
    
         
             
                        referenced = definitions_at(loc.filename, loc.range.ending.line, loc.range.ending.character)
         
     | 
| 
       223 
222 
     | 
    
         
             
                        # HACK: The additional location comparison is necessary because
         
     | 
| 
       224 
223 
     | 
    
         
             
                        # Clip#define can return proxies for parameter pins
         
     | 
| 
       225 
     | 
    
         
            -
                        referenced.any?{|r| r == pin || r.location == pin.location}
         
     | 
| 
      
 224 
     | 
    
         
            +
                        referenced.any? { |r| r == pin || r.location == pin.location }
         
     | 
| 
       226 
225 
     | 
    
         
             
                      end
         
     | 
| 
       227 
226 
     | 
    
         
             
                      # HACK: for language clients that exclude special characters from the start of variable names
         
     | 
| 
       228 
227 
     | 
    
         
             
                      if strip && match = cursor.word.match(/^[^a-z0-9_]+/i)
         
     | 
| 
         @@ -290,7 +289,6 @@ module Solargraph 
     | 
|
| 
       290 
289 
     | 
    
         
             
                # @param filename [String]
         
     | 
| 
       291 
290 
     | 
    
         
             
                # @return [Array<Solargraph::Pin::Base>]
         
     | 
| 
       292 
291 
     | 
    
         
             
                def document_symbols filename
         
     | 
| 
       293 
     | 
    
         
            -
                  # checkout filename
         
     | 
| 
       294 
292 
     | 
    
         
             
                  api_map.document_symbols(filename)
         
     | 
| 
       295 
293 
     | 
    
         
             
                end
         
     | 
| 
       296 
294 
     | 
    
         | 
| 
         @@ -98,6 +98,7 @@ module Solargraph 
     | 
|
| 
       98 
98 
     | 
    
         | 
| 
       99 
99 
     | 
    
         
             
                    def convert_hash node
         
     | 
| 
       100 
100 
     | 
    
         
             
                      return {} unless Parser.is_ast_node?(node) && node.type == :hash
         
     | 
| 
      
 101 
     | 
    
         
            +
                      return convert_hash(node.children[0].children[0]) if splatted_hash?(node)
         
     | 
| 
       101 
102 
     | 
    
         
             
                      result = {}
         
     | 
| 
       102 
103 
     | 
    
         
             
                      node.children.each do |pair|
         
     | 
| 
       103 
104 
     | 
    
         
             
                        result[pair.children[0].children[0]] = Solargraph::Parser.chain(pair.children[1])
         
     | 
| 
         @@ -118,6 +119,10 @@ module Solargraph 
     | 
|
| 
       118 
119 
     | 
    
         
             
                      result
         
     | 
| 
       119 
120 
     | 
    
         
             
                    end
         
     | 
| 
       120 
121 
     | 
    
         | 
| 
      
 122 
     | 
    
         
            +
                    def splatted_hash? node
         
     | 
| 
      
 123 
     | 
    
         
            +
                      Parser.is_ast_node?(node.children[0]) && node.children[0].type == :kwsplat
         
     | 
| 
      
 124 
     | 
    
         
            +
                    end
         
     | 
| 
      
 125 
     | 
    
         
            +
             
     | 
| 
       121 
126 
     | 
    
         
             
                    # @todo Temporarily here for testing. Move to Solargraph::Parser.
         
     | 
| 
       122 
127 
     | 
    
         
             
                    def call_nodes_from node
         
     | 
| 
       123 
128 
     | 
    
         
             
                      return [] unless node.is_a?(::Parser::AST::Node)
         
     | 
| 
         @@ -90,7 +90,9 @@ module Solargraph 
     | 
|
| 
       90 
90 
     | 
    
         
             
                    end
         
     | 
| 
       91 
91 
     | 
    
         | 
| 
       92 
92 
     | 
    
         
             
                    def convert_hash node
         
     | 
| 
       93 
     | 
    
         
            -
                      return {} unless node?(node) && node.type == :HASH 
     | 
| 
      
 93 
     | 
    
         
            +
                      return {} unless node?(node) && node.type == :HASH
         
     | 
| 
      
 94 
     | 
    
         
            +
                      return convert_hash(node.children[0].children[1]) if splatted_hash?(node)
         
     | 
| 
      
 95 
     | 
    
         
            +
                      return {} unless node?(node.children[0])
         
     | 
| 
       94 
96 
     | 
    
         
             
                      result = {}
         
     | 
| 
       95 
97 
     | 
    
         
             
                      index = 0
         
     | 
| 
       96 
98 
     | 
    
         
             
                      until index > node.children[0].children.length - 2
         
     | 
| 
         @@ -103,6 +105,14 @@ module Solargraph 
     | 
|
| 
       103 
105 
     | 
    
         
             
                      result
         
     | 
| 
       104 
106 
     | 
    
         
             
                    end
         
     | 
| 
       105 
107 
     | 
    
         | 
| 
      
 108 
     | 
    
         
            +
                    def splatted_hash? node
         
     | 
| 
      
 109 
     | 
    
         
            +
                      node?(node.children[0]) &&
         
     | 
| 
      
 110 
     | 
    
         
            +
                        [:ARRAY, :LIST].include?(node.children[0].type) &&
         
     | 
| 
      
 111 
     | 
    
         
            +
                        node.children[0].children[0].nil? &&
         
     | 
| 
      
 112 
     | 
    
         
            +
                        node?(node.children[0].children[1]) &&
         
     | 
| 
      
 113 
     | 
    
         
            +
                        node.children[0].children[1].type == :HASH
         
     | 
| 
      
 114 
     | 
    
         
            +
                    end
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
       106 
116 
     | 
    
         
             
                    def node? node
         
     | 
| 
       107 
117 
     | 
    
         
             
                      node.is_a?(RubyVM::AbstractSyntaxTree::Node)
         
     | 
| 
       108 
118 
     | 
    
         
             
                    end
         
     | 
    
        data/lib/solargraph/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: solargraph
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.40. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.40.1
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Fred Snyder
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2020-12- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2020-12-28 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: backport
         
     |