### Summary

I might have found a bug, possibly in the debug module, possibly elsewhere.
This is a trivial playbook to reproduce the error:-

    - name: is this a bug?
      gather_facts: no
      hosts: localhost
      tasks:
      - ansible.builtin.debug:
          msg "this should be a syntax error"
      - ansible.builtin.debug:
          msg: "{{ inventory_hostname }} this should work"

When run this is the output (**Exactly as expected**)

    ERROR! this task 'ansible.builtin.debug' has extra params, which is only allowed in the following modules: ansible.builtin.raw, ansible.legacy.raw, ansible.builtin.import_role, set_fact, ansible.legacy.add_host, ansible.legacy.script, ansible.legacy.import_tasks, import_role, ansible.builtin.meta, win_shell, ansible.builtin.add_host, ansible.builtin.command, meta, ansible.windows.win_command, ansible.legacy.include_role, shell, import_tasks, add_host, ansible.legacy.win_shell, ansible.builtin.include_role, ansible.legacy.group_by, win_command, include_role, ansible.legacy.include_vars, ansible.legacy.include_tasks, raw, include_vars, group_by, ansible.builtin.set_fact, ansible.legacy.command, command, ansible.builtin.win_command, script, ansible.legacy.set_fact, ansible.legacy.win_command, ansible.legacy.meta, ansible.legacy.import_role, ansible.builtin.import_tasks, ansible.builtin.shell, include_tasks, ansible.builtin.include_vars, ansible.builtin.script, include, ansible.windows.win_shell, ansible.builtin.group_by, ansible.builtin.include_tasks, ansible.builtin.include, ansible.legacy.shell, ansible.legacy.include, ansible.builtin.win_shell

    The error appears to be in '/home/user/t.yml': line 5, column 5, but may
    be elsewhere in the file depending on the exact syntax problem.

    The offending line appears to be:

      tasks:
      - ansible.builtin.debug:
        ^ here



Note that the first call to debug has a badly formed msg line. (There is no ``` : ``` after ``` msg``` ) and so this syntax error is what I would expect.

This isn't the interesting part though. The interesting part is that if I add a jinja variable to the message (any defined variable will do) , Like this:-

    - name: is this a bug?
      gather_facts: no
      hosts: localhost
      tasks:
      - ansible.builtin.debug:
          msg "this should be also be a syntax error {{ inventory_hostname }}"
      - ansible.builtin.debug:
          msg: "{{ inventory_hostname }} this should work"


the code runs and gives this output:-

    PLAY [is this a bug?] **********************************************************

    TASK [ansible.builtin.debug] ***************************************************
    ok: [localhost] => {}

    MSG:

    Hello world!

    TASK [ansible.builtin.debug] ***************************************************
    ok: [localhost] => {}

    MSG:

    localhost this should work

    PLAY RECAP *********************************************************************
    localhost                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0


i.e   the debug module does it's default behaviour and prints ``` Hello world! ``` instead of raising a syntax error. No mention of the malformed ``` msg ``` line is made at all.

I'm sure that is wrong, but I don't know how to check if it is an existing issue or a new one.

### Issue Type

Bug Report

### Component Name

ansible.builtin.debug

### Ansible Version

```console
$ ansible --version

ansible [core 2.13.3]
  config file = /home/adam/.ansible.cfg
  configured module search path = ['/home/adam/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/adam/.local/lib/python3.10/site-packages/ansible
  ansible collection location = /home/adam/.ansible/collections:/usr/share/ansible/collections
  executable location = /home/adam/.local/bin/ansible
  python version = 3.10.6 (main, Nov 14 2022, 16:10:14) [GCC 11.3.0]
  jinja version = 3.0.3
  libyaml = True


And also:-

$ ansible --version
ansible 2.9.21
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/adam/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3.8/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 3.8.10 (default, May  4 2021, 00:00:00) [GCC 10.2.1 20201125 (Red Hat 10.2.1-9)]
```


### Configuration

```console
# if using a version older than ansible-core 2.12 you should omit the '-t all'
$ ansible-config dump --only-changed -t all

# I tested on a clean install, no output is generated.


# I also tested on an ansible 2.9.21 system and got this:-

$ ansible-config dump --only-changed
DEFAULT_STDOUT_CALLBACK(env: ANSIBLE_STDOUT_CALLBACK) = debug
GALAXY_SERVER_LIST(/etc/ansible/ansible.cfg) = ['automation_hub']
```


### OS / Environment

Core 2.13.3 was tested on Ubuntu 22.04.1 LTS 
ansible 2.9.21 was tested on Fedora 32

I was able to reproduce this behaviour on several other Linux distros and versions. 

### Steps to Reproduce

<!--- Paste example playbooks or commands between quotes below -->
```yaml (paste below)
    - name: is this a bug?
      gather_facts: no
      hosts: localhost
      tasks:
      - ansible.builtin.debug:
          msg "this should be also be a syntax error {{ inventory_hostname }}"
      - ansible.builtin.debug:
          msg: "{{ inventory_hostname }} this should work"

```


### Expected Results

As per the description I expected a syntax error as follows:-

`    ERROR! this task 'ansible.builtin.debug' has extra params, which is only allowed in the following modules: ansible.builtin.raw, ansible.legacy.raw, ansible.builtin.import_role, set_fact, ansible.legacy.add_host, ansible.legacy.script, ansible.legacy.import_tasks, import_role, ansible.builtin.meta, win_shell, ansible.builtin.add_host, ansible.builtin.command, meta, ansible.windows.win_command, ansible.legacy.include_role, shell, import_tasks, add_host, ansible.legacy.win_shell, ansible.builtin.include_role, ansible.legacy.group_by, win_command, include_role, ansible.legacy.include_vars, ansible.legacy.include_tasks, raw, include_vars, group_by, ansible.builtin.set_fact, ansible.legacy.command, command, ansible.builtin.win_command, script, ansible.legacy.set_fact, ansible.legacy.win_command, ansible.legacy.meta, ansible.legacy.import_role, ansible.builtin.import_tasks, ansible.builtin.shell, include_tasks, ansible.builtin.include_vars, ansible.builtin.script, include, ansible.windows.win_shell, ansible.builtin.group_by, ansible.builtin.include_tasks, ansible.builtin.include, ansible.legacy.shell, ansible.legacy.include, ansible.builtin.win_shell
`


### Actual Results

```console
$ ansible-playbook t.yml -i localhost,

PLAY [is this a bug?] ****************************************************************************************************************************************************************************

TASK [ansible.builtin.debug] *********************************************************************************************************************************************************************
ok: [localhost] => {
    "msg": "Hello world!"
}

TASK [ansible.builtin.debug] *********************************************************************************************************************************************************************
ok: [localhost] => {
    "msg": "localhost this should work"
}

PLAY RECAP ***************************************************************************************************************************************************************************************
localhost                  : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
try:
            plugin = getattr(self._connection, '_%s' % plugin_type)
        except AttributeError:
            
            plugin = getattr(self._connection, plugin_type)
        
        
        if plugin_type == "ssh_type_conn":
            plugin_type = "connection"
        option_vars = C.config.get_plugin_vars(plugin_type, plugin._load_name)
        options = {}
        for k in option_vars:
            if k in variables:
                options[k] = templar.template(variables[k])
        
        plugin.set_options(task_keys=task_keys, var_options=options)
        return option_vars
    def _set_connection_options(self, variables, templar):