@@ -8,13 +8,17 @@ def self.resolve(content, line_num, char_num, options = {})
88 :tasks_mode => false
99 } . merge ( options )
1010 result = PuppetLanguageServer ::PuppetParserHelper . object_under_cursor ( content , line_num , char_num ,
11- :disallowed_classes => [ Puppet ::Pops ::Model ::QualifiedName , Puppet :: Pops :: Model :: BlockExpression ] ,
11+ :disallowed_classes => [ Puppet ::Pops ::Model ::BlockExpression ] ,
1212 :tasks_mode => options [ :tasks_mode ] )
1313 return LSP ::Hover . new if result . nil?
1414
1515 path = result [ :path ]
1616 item = result [ :model ]
1717
18+ # Munge the item
19+ # We're not really interested in the Name of thing yet, we want the "thing" it's a name of
20+ item = path . pop if item . instance_of? ( Puppet ::Pops ::Model ::QualifiedName ) && !path . empty?
21+
1822 content = nil
1923 case item . class . to_s
2024 when 'Puppet::Pops::Model::ResourceExpression'
@@ -157,12 +161,15 @@ def self.get_call_named_function_expression_content(item, tasks_mode)
157161 end
158162
159163 def self . get_resource_expression_content ( item )
164+ name = item . type_name . value
165+ # Strip top scope colons if found
166+ name = name [ 2 ..-1 ] if name . start_with? ( '::' )
160167 # Get an instance of the type
161- item_object = PuppetLanguageServer ::PuppetHelper . get_type ( item . type_name . value )
168+ item_object = PuppetLanguageServer ::PuppetHelper . get_type ( name )
162169 return get_puppet_type_content ( item_object ) unless item_object . nil?
163- item_object = PuppetLanguageServer ::PuppetHelper . get_class ( item . type_name . value )
170+ item_object = PuppetLanguageServer ::PuppetHelper . get_class ( name )
164171 return get_puppet_class_content ( item_object ) unless item_object . nil?
165- raise "#{ item . type_name . value } is not a valid puppet type"
172+ raise "#{ name } is not a valid puppet type"
166173 end
167174
168175 def self . get_puppet_type_content ( item_type )
0 commit comments